{
    "contractName": "PairMentoV2",
    "abi": [
        {
            "stateMutability": "payable",
            "type": "receive"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "input",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "output",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "swap",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "parseData",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "broker",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "exchangeProvider",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "exchangeId",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "input",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "output",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountIn",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "getOutputAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "amountOut",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"output\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getOutputAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"parseData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"broker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exchangeProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"exchangeId\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"input\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"output\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/swappa/PairMentoV2.sol\":\"PairMentoV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02\",\"dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"project:/contracts/swappa/ISwappaPairV1.sol\":{\"keccak256\":\"0x3ad68981bda91ed83c5e9ee8617f08bb5e208208477fb755cc77077f127010ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e4390b1bebc39f58bff34b9099a646ead67cef27b722ef61548487251cca719\",\"dweb:/ipfs/QmRWEuYyjHaS957VKWtTfDpzfqkXb2bvEsS33meAC76ZuU\"]},\"project:/contracts/swappa/PairMentoV2.sol\":{\"keccak256\":\"0x457366b80d0141982f3c6b410c6418aa6dde851f3866feeddaa56c27cd9eb335\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d808e90d23735646f45fddc4311e63112c74ddc48d2099fa24c9fc1e774e969\",\"dweb:/ipfs/QmSLwrK7UvR569tT1J7K2ACybixnuvWqhGVicqkBVgRRns\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b5061085e806100206000396000f3fe6080604052600436106100385760003560e01c806332ef83141461004457806365b8de2e146100f15780637eace892146101db5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100ef6004803603608081101561006757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100b057600080fd5b8201836020820111156100c257600080fd5b803590602001918460018302840111640100000000831117156100e457600080fd5b509092509050610297565b005b3480156100fd57600080fd5b506101a46004803603602081101561011457600080fd5b81019060208101813564010000000081111561012f57600080fd5b82018360208201111561014157600080fd5b8035906020019184600183028401116401000000008311171561016357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610685945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301528183015290519081900360600190f35b3480156101e757600080fd5b50610285600480360360808110156101fe57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b509092509050610711565b60408051918252519081900360200190f35b60008060006102db85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061068592505050565b92509250925060008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561036057600080fd5b505afa158015610374573d6000803e3d6000fd5b505050506040513d602081101561038a57600080fd5b5051604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529151929350908b169163095ea7b3916044808201926020929091908290030181600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b505050506040513d602081101561043257600080fd5b505161049f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f506169724d656e746f56323a20617070726f7665206661696c65642100000000604482015290519081900360640190fd5b604080517fddbbe85000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528b811660448301528a8116606483015260848201849052600060a4830181905292518793929184169163ddbbe8509160c480830192602092919082900301818787803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050506040513d602081101561056357600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018490529151929350908c169163a9059cbb916044808201926020929091908290030181600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b505050506040513d602081101561060b57600080fd5b505161067857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f506169724d656e746f56323a207472616e73666572206661696c656421000000604482015290519081900360640190fd5b5050505050505050505050565b600080600083516048146106fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506169724d656e746f56323a20696e76616c6964206461746121000000000000604482015290519081900360640190fd5b505050601481015160288201516048909201519092565b60008060008061075686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061068592505050565b604080517fa20f230500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152602482018490528e811660448301528d81166064830152608482018d9052915194975092955090935085929083169163a20f23059160a4808301926020929190829003018186803b1580156107ee57600080fd5b505afa158015610802573d6000803e3d6000fd5b505050506040513d602081101561081857600080fd5b50519a995050505050505050505056fea26469706673582212200eedc57df19cbf6f674545648273403661b66423372f44294ababa30c434111b64736f6c63430006080033",
    "deployedBytecode": "0x6080604052600436106100385760003560e01c806332ef83141461004457806365b8de2e146100f15780637eace892146101db5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100ef6004803603608081101561006757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135909216918101906080810160608201356401000000008111156100b057600080fd5b8201836020820111156100c257600080fd5b803590602001918460018302840111640100000000831117156100e457600080fd5b509092509050610297565b005b3480156100fd57600080fd5b506101a46004803603602081101561011457600080fd5b81019060208101813564010000000081111561012f57600080fd5b82018360208201111561014157600080fd5b8035906020019184600183028401116401000000008311171561016357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610685945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301528183015290519081900360600190f35b3480156101e757600080fd5b50610285600480360360808110156101fe57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116916040820135919081019060808101606082013564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b509092509050610711565b60408051918252519081900360200190f35b60008060006102db85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061068592505050565b92509250925060008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561036057600080fd5b505afa158015610374573d6000803e3d6000fd5b505050506040513d602081101561038a57600080fd5b5051604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529151929350908b169163095ea7b3916044808201926020929091908290030181600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b505050506040513d602081101561043257600080fd5b505161049f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f506169724d656e746f56323a20617070726f7665206661696c65642100000000604482015290519081900360640190fd5b604080517fddbbe85000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528b811660448301528a8116606483015260848201849052600060a4830181905292518793929184169163ddbbe8509160c480830192602092919082900301818787803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050506040513d602081101561056357600080fd5b5051604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018490529151929350908c169163a9059cbb916044808201926020929091908290030181600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b505050506040513d602081101561060b57600080fd5b505161067857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f506169724d656e746f56323a207472616e73666572206661696c656421000000604482015290519081900360640190fd5b5050505050505050505050565b600080600083516048146106fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506169724d656e746f56323a20696e76616c6964206461746121000000000000604482015290519081900360640190fd5b505050601481015160288201516048909201519092565b60008060008061075686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061068592505050565b604080517fa20f230500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152602482018490528e811660448301528d81166064830152608482018d9052915194975092955090935085929083169163a20f23059160a4808301926020929190829003018186803b1580156107ee57600080fd5b505afa158015610802573d6000803e3d6000fd5b505050506040513d602081101561081857600080fd5b50519a995050505050505050505056fea26469706673582212200eedc57df19cbf6f674545648273403661b66423372f44294ababa30c434111b64736f6c63430006080033",
    "immutableReferences": {},
    "sourceMap": "614:1914:51:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;614:1914:51;;;;;;;",
    "deployedSourceMap": "614:1914:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;658:853:51;;5:9:-1;2:2;;;27:1;24;17:12;2:2;658:853:51;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;658:853:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;658:853:51;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;658:853:51;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;658:853:51;;-1:-1:-1;658:853:51;-1:-1:-1;658:853:51;:::i;:::-;;1517:408;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1517:408:51;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1517:408:51;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1517:408:51;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1517:408:51;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1517:408:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1517:408:51;;-1:-1:-1;1517:408:51;;-1:-1:-1;;;;;1517:408:51:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:560;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1931:560:51;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1931:560:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1931:560:51;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1931:560:51;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1931:560:51;;-1:-1:-1;1931:560:51;-1:-1:-1;1931:560:51;:::i;:::-;;;;;;;;;;;;;;;;658:853;816:15;845:24;883:18;914:15;924:4;;914:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;914:9:51;;-1:-1:-1;;;914:15:51:i;:::-;802:127;;;;;;939:16;964:5;958:22;;;989:4;958:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;958:37:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;958:37:51;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;958:37:51;1026:42;;;;;;:20;:42;;;;;;;;;;;;;;;958:37;;-1:-1:-1;1026:20:51;;;;;;:42;;;;;958:37;;1026:42;;;;;;;;-1:-1:-1;1026:20:51;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;1026:42:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1026:42:51;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1026:42:51;1005:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1195:184;;;;;;:13;:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1132:14;1195:184;;;;;;;;1157:7;;1132:14;1195:13;;;;;;:184;;;;;;;;;;;;;;1132:14;1195:13;:184;;;2:2:-1;;;;27:1;24;17:12;2:2;1195:184:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1195:184:51;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1195:184:51;1410:38;;;;;;:23;:38;;;;;;;;;;;;;;;1195:184;;-1:-1:-1;1410:23:51;;;;;;:38;;;;;1195:184;;1410:38;;;;;;;;-1:-1:-1;1410:23:51;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;1410:38:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1410:38:51;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1410:38:51;1389:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:853;;;;;;;;;;;:::o;1517:408::-;1614:14;1630:24;1656:18;1698:4;:11;1713:2;1698:17;1690:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1805:2:51;1795:13;;1789:20;1858:2;1848:13;;1842:20;1905:2;1895:13;;;1889:20;1789;;1765:154::o;1931:560::-;2091:14;2131:15;2160:24;2198:18;2229:15;2239:4;;2229:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2229:9:51;;-1:-1:-1;;;2229:15:51:i;:::-;2316:168;;;;;;:19;:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2117:127;;-1:-1:-1;2117:127:51;;-1:-1:-1;2117:127:51;;-1:-1:-1;2117:127:51;;2316:19;;;;;;:168;;;;;;;;;;;;;;:19;:168;;;2:2:-1;;;;27:1;24;17:12;2:2;2316:168:51;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2316:168:51;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2316:168:51;;1931:560;-1:-1:-1;;;;;;;;;;1931:560:51:o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.8;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"./ISwappaPairV1.sol\";\n\ninterface IBroker {\n    function swapIn(\n        address exchangeProvider,\n        bytes32 exchangeId,\n        address tokenIn,\n        address tokenOut,\n        uint256 amountIn,\n        uint256 amountOutMin\n    ) external returns (uint256 amountOut);\n\n    function getAmountOut(\n        address exchangeProvider,\n        bytes32 exchangeId,\n        address tokenIn,\n        address tokenOut,\n        uint256 amountIn\n    ) external view returns (uint256 amountOut);\n}\n\ncontract PairMentoV2 is ISwappaPairV1 {\n    function swap(\n        address input,\n        address output,\n        address to,\n        bytes calldata data\n    ) external override {\n        (\n            address _broker,\n            address exchangeProvider,\n            bytes32 exchangeId\n        ) = parseData(data);\n        uint inputAmount = ERC20(input).balanceOf(address(this));\n        require(\n            ERC20(input).approve(_broker, inputAmount),\n            \"PairMentoV2: approve failed!\"\n        );\n        IBroker broker = IBroker(_broker);\n        uint256 amountOut = broker.swapIn(\n                exchangeProvider,\n                exchangeId,\n                input,\n                output,\n                inputAmount,\n                0\n            );\n        require(\n            IERC20(output).transfer(to, amountOut),\n            \"PairMentoV2: transfer failed!\"\n        );\n\n    }\n\n    function parseData(\n        bytes memory data\n    )\n        public\n        pure\n        returns (address broker, address exchangeProvider, bytes32 exchangeId)\n    {\n        require(data.length == 72, \"PairMentoV2: invalid data!\");\n        assembly {\n            broker := mload(add(data, 20))\n            exchangeProvider := mload(add(data, 40))\n            exchangeId := mload(add(data, 72))\n        }\n    }\n\n    function getOutputAmount(\n        address input,\n        address output,\n        uint256 amountIn,\n        bytes calldata data\n    ) external override returns (uint amountOut) {\n        (\n            address _broker,\n            address exchangeProvider,\n            bytes32 exchangeId\n        ) = parseData(data);\n        IBroker broker = IBroker(_broker);\n        return\n            broker.getAmountOut(\n                exchangeProvider,\n                exchangeId,\n                input,\n                output,\n                amountIn\n            );\n    }\n\n    receive() external payable {}\n}",
    "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/swappa/PairMentoV2.sol",
    "ast": {
        "absolutePath": "project:/contracts/swappa/PairMentoV2.sol",
        "exportedSymbols": {
            "IBroker": [
                6122
            ],
            "PairMentoV2": [
                6265
            ]
        },
        "id": 6266,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 6087,
                "literals": [
                    "solidity",
                    "0.6",
                    ".8"
                ],
                "nodeType": "PragmaDirective",
                "src": "32:22:51"
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 6088,
                "nodeType": "ImportDirective",
                "scope": 6266,
                "sourceUnit": 726,
                "src": "56:55:51",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                "file": "./ISwappaPairV1.sol",
                "id": 6089,
                "nodeType": "ImportDirective",
                "scope": 6266,
                "sourceUnit": 5326,
                "src": "112:29:51",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "interface",
                "documentation": null,
                "fullyImplemented": false,
                "id": 6122,
                "linearizedBaseContracts": [
                    6122
                ],
                "name": "IBroker",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": null,
                        "documentation": null,
                        "functionSelector": "ddbbe850",
                        "id": 6106,
                        "implemented": false,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swapIn",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 6102,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6091,
                                    "mutability": "mutable",
                                    "name": "exchangeProvider",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "192:24:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6090,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "192:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6093,
                                    "mutability": "mutable",
                                    "name": "exchangeId",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "226:18:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6092,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "226:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6095,
                                    "mutability": "mutable",
                                    "name": "tokenIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "254:15:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6094,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "254:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6097,
                                    "mutability": "mutable",
                                    "name": "tokenOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "279:16:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6096,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "279:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6099,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "305:16:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6098,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "305:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6101,
                                    "mutability": "mutable",
                                    "name": "amountOutMin",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "331:20:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6100,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "331:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "182:175:51"
                        },
                        "returnParameters": {
                            "id": 6105,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6104,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6106,
                                    "src": "376:17:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6103,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "376:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "375:19:51"
                        },
                        "scope": 6122,
                        "src": "167:228:51",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": null,
                        "documentation": null,
                        "functionSelector": "a20f2305",
                        "id": 6121,
                        "implemented": false,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getAmountOut",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 6117,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6108,
                                    "mutability": "mutable",
                                    "name": "exchangeProvider",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "432:24:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6107,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "432:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6110,
                                    "mutability": "mutable",
                                    "name": "exchangeId",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "466:18:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6109,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "466:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6112,
                                    "mutability": "mutable",
                                    "name": "tokenIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "494:15:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6111,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "494:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6114,
                                    "mutability": "mutable",
                                    "name": "tokenOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "519:16:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6113,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "519:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6116,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "545:16:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6115,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "545:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "422:145:51"
                        },
                        "returnParameters": {
                            "id": 6120,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6119,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6121,
                                    "src": "591:17:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6118,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "591:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "590:19:51"
                        },
                        "scope": 6122,
                        "src": "401:209:51",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 6266,
                "src": "143:469:51"
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 6123,
                            "name": "ISwappaPairV1",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5325,
                            "src": "638:13:51",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISwappaPairV1_$5325",
                                "typeString": "contract ISwappaPairV1"
                            }
                        },
                        "id": 6124,
                        "nodeType": "InheritanceSpecifier",
                        "src": "638:13:51"
                    }
                ],
                "contractDependencies": [
                    5325
                ],
                "contractKind": "contract",
                "documentation": null,
                "fullyImplemented": true,
                "id": 6265,
                "linearizedBaseContracts": [
                    6265,
                    5325
                ],
                "name": "PairMentoV2",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "baseFunctions": [
                            5311
                        ],
                        "body": {
                            "id": 6198,
                            "nodeType": "Block",
                            "src": "792:719:51",
                            "statements": [
                                {
                                    "assignments": [
                                        6137,
                                        6139,
                                        6141
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6137,
                                            "mutability": "mutable",
                                            "name": "_broker",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "816:15:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6136,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "816:7:51",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6139,
                                            "mutability": "mutable",
                                            "name": "exchangeProvider",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "845:24:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6138,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "845:7:51",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6141,
                                            "mutability": "mutable",
                                            "name": "exchangeId",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "883:18:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 6140,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "883:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6145,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6143,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6132,
                                                "src": "924:4:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 6142,
                                            "name": "parseData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6220,
                                            "src": "914:9:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (address,address,bytes32)"
                                            }
                                        },
                                        "id": 6144,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "914:15:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_bytes32_$",
                                            "typeString": "tuple(address,address,bytes32)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "802:127:51"
                                },
                                {
                                    "assignments": [
                                        6147
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6147,
                                            "mutability": "mutable",
                                            "name": "inputAmount",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "939:16:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6146,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "939:4:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6157,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 6154,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "989:4:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                                                            "typeString": "contract PairMentoV2"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                                                            "typeString": "contract PairMentoV2"
                                                        }
                                                    ],
                                                    "id": 6153,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "981:7:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 6152,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "981:7:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": null,
                                                            "typeString": null
                                                        }
                                                    }
                                                },
                                                "id": 6155,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "981:13:51",
                                                "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": 6149,
                                                        "name": "input",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6126,
                                                        "src": "964:5:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 6148,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 725,
                                                    "src": "958:5:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 6150,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "958:12:51",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$725",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 6151,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "balanceOf",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 325,
                                            "src": "958:22:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                "typeString": "function (address) view external returns (uint256)"
                                            }
                                        },
                                        "id": 6156,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "958:37:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "939:56:51"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 6163,
                                                        "name": "_broker",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6137,
                                                        "src": "1047:7:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 6164,
                                                        "name": "inputAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6147,
                                                        "src": "1056:11:51",
                                                        "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": 6160,
                                                                "name": "input",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6126,
                                                                "src": "1032:5:51",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 6159,
                                                            "name": "ERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 725,
                                                            "src": "1026:5:51",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_ERC20_$725_$",
                                                                "typeString": "type(contract ERC20)"
                                                            }
                                                        },
                                                        "id": 6161,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1026:12:51",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ERC20_$725",
                                                            "typeString": "contract ERC20"
                                                        }
                                                    },
                                                    "id": 6162,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "approve",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 385,
                                                    "src": "1026:20:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                    }
                                                },
                                                "id": 6165,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1026:42:51",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "506169724d656e746f56323a20617070726f7665206661696c656421",
                                                "id": 6166,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1082:30:51",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                                                    "typeString": "literal_string \"PairMentoV2: approve failed!\""
                                                },
                                                "value": "PairMentoV2: approve failed!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                                                    "typeString": "literal_string \"PairMentoV2: approve failed!\""
                                                }
                                            ],
                                            "id": 6158,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1005:7:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 6167,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1005:117:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6168,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1005:117:51"
                                },
                                {
                                    "assignments": [
                                        6170
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6170,
                                            "mutability": "mutable",
                                            "name": "broker",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "1132:14:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IBroker_$6122",
                                                "typeString": "contract IBroker"
                                            },
                                            "typeName": {
                                                "contractScope": null,
                                                "id": 6169,
                                                "name": "IBroker",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 6122,
                                                "src": "1132:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IBroker_$6122",
                                                    "typeString": "contract IBroker"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6174,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6172,
                                                "name": "_broker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6137,
                                                "src": "1157:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 6171,
                                            "name": "IBroker",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6122,
                                            "src": "1149:7:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IBroker_$6122_$",
                                                "typeString": "type(contract IBroker)"
                                            }
                                        },
                                        "id": 6173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1149:16:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBroker_$6122",
                                            "typeString": "contract IBroker"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1132:33:51"
                                },
                                {
                                    "assignments": [
                                        6176
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6176,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6198,
                                            "src": "1175:17:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6175,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1175:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6186,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6179,
                                                "name": "exchangeProvider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6139,
                                                "src": "1226:16:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6180,
                                                "name": "exchangeId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6141,
                                                "src": "1260:10:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6181,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6126,
                                                "src": "1288:5:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6182,
                                                "name": "output",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6128,
                                                "src": "1311:6:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6183,
                                                "name": "inputAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6147,
                                                "src": "1335:11:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 6184,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1364:1:51",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 6177,
                                                "name": "broker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6170,
                                                "src": "1195:6:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IBroker_$6122",
                                                    "typeString": "contract IBroker"
                                                }
                                            },
                                            "id": 6178,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "swapIn",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6106,
                                            "src": "1195:13:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (address,bytes32,address,address,uint256,uint256) external returns (uint256)"
                                            }
                                        },
                                        "id": 6185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1195:184:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1175:204:51"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 6192,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6130,
                                                        "src": "1434:2:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 6193,
                                                        "name": "amountOut",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6176,
                                                        "src": "1438:9:51",
                                                        "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": 6189,
                                                                "name": "output",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6128,
                                                                "src": "1417:6:51",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 6188,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 803,
                                                            "src": "1410:6:51",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$803_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 6190,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1410:14:51",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$803",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "id": 6191,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "transfer",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 752,
                                                    "src": "1410:23:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                    }
                                                },
                                                "id": 6194,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1410:38:51",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "506169724d656e746f56323a207472616e73666572206661696c656421",
                                                "id": 6195,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1462:31:51",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                                                    "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                                                },
                                                "value": "PairMentoV2: transfer failed!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                                                    "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                                                }
                                            ],
                                            "id": 6187,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1389:7:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 6196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1389:114:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6197,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1389:114:51"
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "32ef8314",
                        "id": 6199,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swap",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 6134,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "783:8:51"
                        },
                        "parameters": {
                            "id": 6133,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6126,
                                    "mutability": "mutable",
                                    "name": "input",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6199,
                                    "src": "681:13:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6125,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "681:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6128,
                                    "mutability": "mutable",
                                    "name": "output",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6199,
                                    "src": "704:14:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6127,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "704:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6130,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6199,
                                    "src": "728:10:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6129,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "728:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6132,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6199,
                                    "src": "748:19:51",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 6131,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "748:5:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "671:102:51"
                        },
                        "returnParameters": {
                            "id": 6135,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "792:0:51"
                        },
                        "scope": 6265,
                        "src": "658:853:51",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 6219,
                            "nodeType": "Block",
                            "src": "1680:245:51",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 6214,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 6211,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6201,
                                                        "src": "1698:4:51",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    },
                                                    "id": 6212,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1698:11:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "3732",
                                                    "id": 6213,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1713:2:51",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_72_by_1",
                                                        "typeString": "int_const 72"
                                                    },
                                                    "value": "72"
                                                },
                                                "src": "1698:17:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "506169724d656e746f56323a20696e76616c6964206461746121",
                                                "id": 6215,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1717:28:51",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                                                    "typeString": "literal_string \"PairMentoV2: invalid data!\""
                                                },
                                                "value": "PairMentoV2: invalid data!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                                                    "typeString": "literal_string \"PairMentoV2: invalid data!\""
                                                }
                                            ],
                                            "id": 6210,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "1690:7:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 6216,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1690:56:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6217,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1690:56:51"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "1765:154:51",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1779:30:51",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "data",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1799:4:51"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "1805:2:51",
                                                                    "type": "",
                                                                    "value": "20"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1795:3:51"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1795:13:51"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1789:5:51"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1789:20:51"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "broker",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1779:6:51"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1822:40:51",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "data",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1852:4:51"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "1858:2:51",
                                                                    "type": "",
                                                                    "value": "40"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1848:3:51"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1848:13:51"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1842:5:51"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1842:20:51"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "exchangeProvider",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1822:16:51"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "1875:34:51",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "data",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1899:4:51"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "1905:2:51",
                                                                    "type": "",
                                                                    "value": "72"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1895:3:51"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "1895:13:51"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1889:5:51"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1889:20:51"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "exchangeId",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1875:10:51"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                        {
                                            "declaration": 6204,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1779:6:51",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6201,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1799:4:51",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6201,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1852:4:51",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6201,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1899:4:51",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6208,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1875:10:51",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6206,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "1822:16:51",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 6218,
                                    "nodeType": "InlineAssembly",
                                    "src": "1756:163:51"
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "65b8de2e",
                        "id": 6220,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "parseData",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 6202,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6201,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6220,
                                    "src": "1545:17:51",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 6200,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1545:5:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1535:33:51"
                        },
                        "returnParameters": {
                            "id": 6209,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6204,
                                    "mutability": "mutable",
                                    "name": "broker",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6220,
                                    "src": "1614:14:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6203,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1614:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6206,
                                    "mutability": "mutable",
                                    "name": "exchangeProvider",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6220,
                                    "src": "1630:24:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6205,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1630:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6208,
                                    "mutability": "mutable",
                                    "name": "exchangeId",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6220,
                                    "src": "1656:18:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6207,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1656:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1613:62:51"
                        },
                        "scope": 6265,
                        "src": "1517:408:51",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5324
                        ],
                        "body": {
                            "id": 6259,
                            "nodeType": "Block",
                            "src": "2107:384:51",
                            "statements": [
                                {
                                    "assignments": [
                                        6235,
                                        6237,
                                        6239
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6235,
                                            "mutability": "mutable",
                                            "name": "_broker",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6259,
                                            "src": "2131:15:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6234,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2131:7:51",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6237,
                                            "mutability": "mutable",
                                            "name": "exchangeProvider",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6259,
                                            "src": "2160:24:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6236,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2160:7:51",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6239,
                                            "mutability": "mutable",
                                            "name": "exchangeId",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6259,
                                            "src": "2198:18:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 6238,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2198:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6243,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6241,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6228,
                                                "src": "2239:4:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 6240,
                                            "name": "parseData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6220,
                                            "src": "2229:9:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$_t_address_$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (address,address,bytes32)"
                                            }
                                        },
                                        "id": 6242,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2229:15:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_bytes32_$",
                                            "typeString": "tuple(address,address,bytes32)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2117:127:51"
                                },
                                {
                                    "assignments": [
                                        6245
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6245,
                                            "mutability": "mutable",
                                            "name": "broker",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 6259,
                                            "src": "2254:14:51",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IBroker_$6122",
                                                "typeString": "contract IBroker"
                                            },
                                            "typeName": {
                                                "contractScope": null,
                                                "id": 6244,
                                                "name": "IBroker",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 6122,
                                                "src": "2254:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IBroker_$6122",
                                                    "typeString": "contract IBroker"
                                                }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6249,
                                    "initialValue": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6247,
                                                "name": "_broker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6235,
                                                "src": "2279:7:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 6246,
                                            "name": "IBroker",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6122,
                                            "src": "2271:7:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IBroker_$6122_$",
                                                "typeString": "type(contract IBroker)"
                                            }
                                        },
                                        "id": 6248,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2271:16:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBroker_$6122",
                                            "typeString": "contract IBroker"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2254:33:51"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 6252,
                                                "name": "exchangeProvider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6237,
                                                "src": "2353:16:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6253,
                                                "name": "exchangeId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6239,
                                                "src": "2387:10:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6254,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6222,
                                                "src": "2415:5:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6255,
                                                "name": "output",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6224,
                                                "src": "2438:6:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 6256,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6226,
                                                "src": "2462:8:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "id": 6250,
                                                "name": "broker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6245,
                                                "src": "2316:6:51",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IBroker_$6122",
                                                    "typeString": "contract IBroker"
                                                }
                                            },
                                            "id": 6251,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getAmountOut",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6121,
                                            "src": "2316:19:51",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (address,bytes32,address,address,uint256) view external returns (uint256)"
                                            }
                                        },
                                        "id": 6257,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2316:168:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 6233,
                                    "id": 6258,
                                    "nodeType": "Return",
                                    "src": "2297:187:51"
                                }
                            ]
                        },
                        "documentation": null,
                        "functionSelector": "7eace892",
                        "id": 6260,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getOutputAmount",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 6230,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2073:8:51"
                        },
                        "parameters": {
                            "id": 6229,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6222,
                                    "mutability": "mutable",
                                    "name": "input",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6260,
                                    "src": "1965:13:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6221,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1965:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6224,
                                    "mutability": "mutable",
                                    "name": "output",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6260,
                                    "src": "1988:14:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6223,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1988:7:51",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6226,
                                    "mutability": "mutable",
                                    "name": "amountIn",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6260,
                                    "src": "2012:16:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6225,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2012:7:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6228,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6260,
                                    "src": "2038:19:51",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 6227,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2038:5:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1955:108:51"
                        },
                        "returnParameters": {
                            "id": 6233,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6232,
                                    "mutability": "mutable",
                                    "name": "amountOut",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 6260,
                                    "src": "2091:14:51",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6231,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2091:4:51",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2090:16:51"
                        },
                        "scope": 6265,
                        "src": "1931:560:51",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 6263,
                            "nodeType": "Block",
                            "src": "2524:2:51",
                            "statements": []
                        },
                        "documentation": null,
                        "id": 6264,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "overrides": null,
                        "parameters": {
                            "id": 6261,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2504:2:51"
                        },
                        "returnParameters": {
                            "id": 6262,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2524:0:51"
                        },
                        "scope": 6265,
                        "src": "2497:29:51",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 6266,
                "src": "614:1914:51"
            }
        ],
        "src": "32:2496:51"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/swappa/PairMentoV2.sol",
            "exportedSymbols": {
                "IBroker": [
                    6122
                ],
                "PairMentoV2": [
                    6265
                ]
            },
            "license": "MIT"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "0.6",
                        ".8"
                    ]
                },
                "id": 6087,
                "name": "PragmaDirective",
                "src": "32:22:51"
            },
            {
                "attributes": {
                    "SourceUnit": 726,
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "scope": 6266,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 6088,
                "name": "ImportDirective",
                "src": "56:55:51"
            },
            {
                "attributes": {
                    "SourceUnit": 5326,
                    "absolutePath": "project:/contracts/swappa/ISwappaPairV1.sol",
                    "file": "./ISwappaPairV1.sol",
                    "scope": 6266,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 6089,
                "name": "ImportDirective",
                "src": "112:29:51"
            },
            {
                "attributes": {
                    "abstract": false,
                    "baseContracts": [
                        null
                    ],
                    "contractDependencies": [
                        null
                    ],
                    "contractKind": "interface",
                    "documentation": null,
                    "fullyImplemented": false,
                    "linearizedBaseContracts": [
                        6122
                    ],
                    "name": "IBroker",
                    "scope": 6266
                },
                "children": [
                    {
                        "attributes": {
                            "body": null,
                            "documentation": null,
                            "functionSelector": "ddbbe850",
                            "implemented": false,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "swapIn",
                            "overrides": null,
                            "scope": 6122,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeProvider",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6090,
                                                "name": "ElementaryTypeName",
                                                "src": "192:7:51"
                                            }
                                        ],
                                        "id": 6091,
                                        "name": "VariableDeclaration",
                                        "src": "192:24:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeId",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 6092,
                                                "name": "ElementaryTypeName",
                                                "src": "226:7:51"
                                            }
                                        ],
                                        "id": 6093,
                                        "name": "VariableDeclaration",
                                        "src": "226:18:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenIn",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6094,
                                                "name": "ElementaryTypeName",
                                                "src": "254:7:51"
                                            }
                                        ],
                                        "id": 6095,
                                        "name": "VariableDeclaration",
                                        "src": "254:15:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenOut",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6096,
                                                "name": "ElementaryTypeName",
                                                "src": "279:7:51"
                                            }
                                        ],
                                        "id": 6097,
                                        "name": "VariableDeclaration",
                                        "src": "279:16:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6098,
                                                "name": "ElementaryTypeName",
                                                "src": "305:7:51"
                                            }
                                        ],
                                        "id": 6099,
                                        "name": "VariableDeclaration",
                                        "src": "305:16:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOutMin",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6100,
                                                "name": "ElementaryTypeName",
                                                "src": "331:7:51"
                                            }
                                        ],
                                        "id": 6101,
                                        "name": "VariableDeclaration",
                                        "src": "331:20:51"
                                    }
                                ],
                                "id": 6102,
                                "name": "ParameterList",
                                "src": "182:175:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 6106,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6103,
                                                "name": "ElementaryTypeName",
                                                "src": "376:7:51"
                                            }
                                        ],
                                        "id": 6104,
                                        "name": "VariableDeclaration",
                                        "src": "376:17:51"
                                    }
                                ],
                                "id": 6105,
                                "name": "ParameterList",
                                "src": "375:19:51"
                            }
                        ],
                        "id": 6106,
                        "name": "FunctionDefinition",
                        "src": "167:228:51"
                    },
                    {
                        "attributes": {
                            "body": null,
                            "documentation": null,
                            "functionSelector": "a20f2305",
                            "implemented": false,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getAmountOut",
                            "overrides": null,
                            "scope": 6122,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeProvider",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6107,
                                                "name": "ElementaryTypeName",
                                                "src": "432:7:51"
                                            }
                                        ],
                                        "id": 6108,
                                        "name": "VariableDeclaration",
                                        "src": "432:24:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeId",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 6109,
                                                "name": "ElementaryTypeName",
                                                "src": "466:7:51"
                                            }
                                        ],
                                        "id": 6110,
                                        "name": "VariableDeclaration",
                                        "src": "466:18:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenIn",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6111,
                                                "name": "ElementaryTypeName",
                                                "src": "494:7:51"
                                            }
                                        ],
                                        "id": 6112,
                                        "name": "VariableDeclaration",
                                        "src": "494:15:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenOut",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6113,
                                                "name": "ElementaryTypeName",
                                                "src": "519:7:51"
                                            }
                                        ],
                                        "id": 6114,
                                        "name": "VariableDeclaration",
                                        "src": "519:16:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6115,
                                                "name": "ElementaryTypeName",
                                                "src": "545:7:51"
                                            }
                                        ],
                                        "id": 6116,
                                        "name": "VariableDeclaration",
                                        "src": "545:16:51"
                                    }
                                ],
                                "id": 6117,
                                "name": "ParameterList",
                                "src": "422:145:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 6121,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6118,
                                                "name": "ElementaryTypeName",
                                                "src": "591:7:51"
                                            }
                                        ],
                                        "id": 6119,
                                        "name": "VariableDeclaration",
                                        "src": "591:17:51"
                                    }
                                ],
                                "id": 6120,
                                "name": "ParameterList",
                                "src": "590:19:51"
                            }
                        ],
                        "id": 6121,
                        "name": "FunctionDefinition",
                        "src": "401:209:51"
                    }
                ],
                "id": 6122,
                "name": "ContractDefinition",
                "src": "143:469:51"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        5325
                    ],
                    "contractKind": "contract",
                    "documentation": null,
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        6265,
                        5325
                    ],
                    "name": "PairMentoV2",
                    "scope": 6266
                },
                "children": [
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ISwappaPairV1",
                                    "referencedDeclaration": 5325,
                                    "type": "contract ISwappaPairV1"
                                },
                                "id": 6123,
                                "name": "UserDefinedTypeName",
                                "src": "638:13:51"
                            }
                        ],
                        "id": 6124,
                        "name": "InheritanceSpecifier",
                        "src": "638:13:51"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5311
                            ],
                            "documentation": null,
                            "functionSelector": "32ef8314",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "swap",
                            "scope": 6265,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 6134,
                                "name": "OverrideSpecifier",
                                "src": "783:8:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "input",
                                            "overrides": null,
                                            "scope": 6199,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6125,
                                                "name": "ElementaryTypeName",
                                                "src": "681:7:51"
                                            }
                                        ],
                                        "id": 6126,
                                        "name": "VariableDeclaration",
                                        "src": "681:13:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "output",
                                            "overrides": null,
                                            "scope": 6199,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6127,
                                                "name": "ElementaryTypeName",
                                                "src": "704:7:51"
                                            }
                                        ],
                                        "id": 6128,
                                        "name": "VariableDeclaration",
                                        "src": "704:14:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "to",
                                            "overrides": null,
                                            "scope": 6199,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6129,
                                                "name": "ElementaryTypeName",
                                                "src": "728:7:51"
                                            }
                                        ],
                                        "id": 6130,
                                        "name": "VariableDeclaration",
                                        "src": "728:10:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 6199,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 6131,
                                                "name": "ElementaryTypeName",
                                                "src": "748:5:51"
                                            }
                                        ],
                                        "id": 6132,
                                        "name": "VariableDeclaration",
                                        "src": "748:19:51"
                                    }
                                ],
                                "id": 6133,
                                "name": "ParameterList",
                                "src": "671:102:51"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 6135,
                                "name": "ParameterList",
                                "src": "792:0:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6137,
                                                6139,
                                                6141
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "_broker",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 6136,
                                                        "name": "ElementaryTypeName",
                                                        "src": "816:7:51"
                                                    }
                                                ],
                                                "id": 6137,
                                                "name": "VariableDeclaration",
                                                "src": "816:15:51"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "exchangeProvider",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 6138,
                                                        "name": "ElementaryTypeName",
                                                        "src": "845:7:51"
                                                    }
                                                ],
                                                "id": 6139,
                                                "name": "VariableDeclaration",
                                                "src": "845:24:51"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "exchangeId",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 6140,
                                                        "name": "ElementaryTypeName",
                                                        "src": "883:7:51"
                                                    }
                                                ],
                                                "id": 6141,
                                                "name": "VariableDeclaration",
                                                "src": "883:18:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(address,address,bytes32)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6220,
                                                            "type": "function (bytes memory) pure returns (address,address,bytes32)",
                                                            "value": "parseData"
                                                        },
                                                        "id": 6142,
                                                        "name": "Identifier",
                                                        "src": "914:9:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6132,
                                                            "type": "bytes calldata",
                                                            "value": "data"
                                                        },
                                                        "id": 6143,
                                                        "name": "Identifier",
                                                        "src": "924:4:51"
                                                    }
                                                ],
                                                "id": 6144,
                                                "name": "FunctionCall",
                                                "src": "914:15:51"
                                            }
                                        ],
                                        "id": 6145,
                                        "name": "VariableDeclarationStatement",
                                        "src": "802:127:51"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6147
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "inputAmount",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint",
                                                            "type": "uint256"
                                                        },
                                                        "id": 6146,
                                                        "name": "ElementaryTypeName",
                                                        "src": "939:4:51"
                                                    }
                                                ],
                                                "id": 6147,
                                                "name": "VariableDeclaration",
                                                "src": "939:16:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "balanceOf",
                                                            "referencedDeclaration": 325,
                                                            "type": "function (address) view external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 725,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 6148,
                                                                        "name": "Identifier",
                                                                        "src": "958:5:51"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 6126,
                                                                            "type": "address",
                                                                            "value": "input"
                                                                        },
                                                                        "id": 6149,
                                                                        "name": "Identifier",
                                                                        "src": "964:5:51"
                                                                    }
                                                                ],
                                                                "id": 6150,
                                                                "name": "FunctionCall",
                                                                "src": "958:12:51"
                                                            }
                                                        ],
                                                        "id": 6151,
                                                        "name": "MemberAccess",
                                                        "src": "958:22:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_PairMentoV2_$6265",
                                                                            "typeString": "contract PairMentoV2"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "type": null
                                                                        },
                                                                        "id": 6152,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "981:7:51"
                                                                    }
                                                                ],
                                                                "id": 6153,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "981:7:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract PairMentoV2",
                                                                    "value": "this"
                                                                },
                                                                "id": 6154,
                                                                "name": "Identifier",
                                                                "src": "989:4:51"
                                                            }
                                                        ],
                                                        "id": 6155,
                                                        "name": "FunctionCall",
                                                        "src": "981:13:51"
                                                    }
                                                ],
                                                "id": 6156,
                                                "name": "FunctionCall",
                                                "src": "958:37:51"
                                            }
                                        ],
                                        "id": 6157,
                                        "name": "VariableDeclarationStatement",
                                        "src": "939:56:51"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_a5533a87f545f3dfcc08b7c1a4a797e08c75204a227df13753dbe6eca81eb6c6",
                                                                    "typeString": "literal_string \"PairMentoV2: approve failed!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 6158,
                                                        "name": "Identifier",
                                                        "src": "1005:7:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bool",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "approve",
                                                                    "referencedDeclaration": 385,
                                                                    "type": "function (address,uint256) external returns (bool)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract ERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 725,
                                                                                    "type": "type(contract ERC20)",
                                                                                    "value": "ERC20"
                                                                                },
                                                                                "id": 6159,
                                                                                "name": "Identifier",
                                                                                "src": "1026:5:51"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 6126,
                                                                                    "type": "address",
                                                                                    "value": "input"
                                                                                },
                                                                                "id": 6160,
                                                                                "name": "Identifier",
                                                                                "src": "1032:5:51"
                                                                            }
                                                                        ],
                                                                        "id": 6161,
                                                                        "name": "FunctionCall",
                                                                        "src": "1026:12:51"
                                                                    }
                                                                ],
                                                                "id": 6162,
                                                                "name": "MemberAccess",
                                                                "src": "1026:20:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6137,
                                                                    "type": "address",
                                                                    "value": "_broker"
                                                                },
                                                                "id": 6163,
                                                                "name": "Identifier",
                                                                "src": "1047:7:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6147,
                                                                    "type": "uint256",
                                                                    "value": "inputAmount"
                                                                },
                                                                "id": 6164,
                                                                "name": "Identifier",
                                                                "src": "1056:11:51"
                                                            }
                                                        ],
                                                        "id": 6165,
                                                        "name": "FunctionCall",
                                                        "src": "1026:42:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "506169724d656e746f56323a20617070726f7665206661696c656421",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairMentoV2: approve failed!\"",
                                                            "value": "PairMentoV2: approve failed!"
                                                        },
                                                        "id": 6166,
                                                        "name": "Literal",
                                                        "src": "1082:30:51"
                                                    }
                                                ],
                                                "id": 6167,
                                                "name": "FunctionCall",
                                                "src": "1005:117:51"
                                            }
                                        ],
                                        "id": 6168,
                                        "name": "ExpressionStatement",
                                        "src": "1005:117:51"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6170
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "broker",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IBroker",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "contractScope": null,
                                                            "name": "IBroker",
                                                            "referencedDeclaration": 6122,
                                                            "type": "contract IBroker"
                                                        },
                                                        "id": 6169,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "1132:7:51"
                                                    }
                                                ],
                                                "id": 6170,
                                                "name": "VariableDeclaration",
                                                "src": "1132:14:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IBroker",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6122,
                                                            "type": "type(contract IBroker)",
                                                            "value": "IBroker"
                                                        },
                                                        "id": 6171,
                                                        "name": "Identifier",
                                                        "src": "1149:7:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6137,
                                                            "type": "address",
                                                            "value": "_broker"
                                                        },
                                                        "id": 6172,
                                                        "name": "Identifier",
                                                        "src": "1157:7:51"
                                                    }
                                                ],
                                                "id": 6173,
                                                "name": "FunctionCall",
                                                "src": "1149:16:51"
                                            }
                                        ],
                                        "id": 6174,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1132:33:51"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6176
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "amountOut",
                                                    "overrides": null,
                                                    "scope": 6198,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 6175,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1175:7:51"
                                                    }
                                                ],
                                                "id": 6176,
                                                "name": "VariableDeclaration",
                                                "src": "1175:17:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "swapIn",
                                                            "referencedDeclaration": 6106,
                                                            "type": "function (address,bytes32,address,address,uint256,uint256) external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6170,
                                                                    "type": "contract IBroker",
                                                                    "value": "broker"
                                                                },
                                                                "id": 6177,
                                                                "name": "Identifier",
                                                                "src": "1195:6:51"
                                                            }
                                                        ],
                                                        "id": 6178,
                                                        "name": "MemberAccess",
                                                        "src": "1195:13:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6139,
                                                            "type": "address",
                                                            "value": "exchangeProvider"
                                                        },
                                                        "id": 6179,
                                                        "name": "Identifier",
                                                        "src": "1226:16:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6141,
                                                            "type": "bytes32",
                                                            "value": "exchangeId"
                                                        },
                                                        "id": 6180,
                                                        "name": "Identifier",
                                                        "src": "1260:10:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6126,
                                                            "type": "address",
                                                            "value": "input"
                                                        },
                                                        "id": 6181,
                                                        "name": "Identifier",
                                                        "src": "1288:5:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6128,
                                                            "type": "address",
                                                            "value": "output"
                                                        },
                                                        "id": 6182,
                                                        "name": "Identifier",
                                                        "src": "1311:6:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6147,
                                                            "type": "uint256",
                                                            "value": "inputAmount"
                                                        },
                                                        "id": 6183,
                                                        "name": "Identifier",
                                                        "src": "1335:11:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 6184,
                                                        "name": "Literal",
                                                        "src": "1364:1:51"
                                                    }
                                                ],
                                                "id": 6185,
                                                "name": "FunctionCall",
                                                "src": "1195:184:51"
                                            }
                                        ],
                                        "id": 6186,
                                        "name": "VariableDeclarationStatement",
                                        "src": "1175:204:51"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_fb9526b39358324f181b70cc090f97544a7e82c358d5af8eb0084c59853d8fa3",
                                                                    "typeString": "literal_string \"PairMentoV2: transfer failed!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 6187,
                                                        "name": "Identifier",
                                                        "src": "1389:7:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bool",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "transfer",
                                                                    "referencedDeclaration": 752,
                                                                    "type": "function (address,uint256) external returns (bool)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 803,
                                                                                    "type": "type(contract IERC20)",
                                                                                    "value": "IERC20"
                                                                                },
                                                                                "id": 6188,
                                                                                "name": "Identifier",
                                                                                "src": "1410:6:51"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 6128,
                                                                                    "type": "address",
                                                                                    "value": "output"
                                                                                },
                                                                                "id": 6189,
                                                                                "name": "Identifier",
                                                                                "src": "1417:6:51"
                                                                            }
                                                                        ],
                                                                        "id": 6190,
                                                                        "name": "FunctionCall",
                                                                        "src": "1410:14:51"
                                                                    }
                                                                ],
                                                                "id": 6191,
                                                                "name": "MemberAccess",
                                                                "src": "1410:23:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6130,
                                                                    "type": "address",
                                                                    "value": "to"
                                                                },
                                                                "id": 6192,
                                                                "name": "Identifier",
                                                                "src": "1434:2:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6176,
                                                                    "type": "uint256",
                                                                    "value": "amountOut"
                                                                },
                                                                "id": 6193,
                                                                "name": "Identifier",
                                                                "src": "1438:9:51"
                                                            }
                                                        ],
                                                        "id": 6194,
                                                        "name": "FunctionCall",
                                                        "src": "1410:38:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "506169724d656e746f56323a207472616e73666572206661696c656421",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairMentoV2: transfer failed!\"",
                                                            "value": "PairMentoV2: transfer failed!"
                                                        },
                                                        "id": 6195,
                                                        "name": "Literal",
                                                        "src": "1462:31:51"
                                                    }
                                                ],
                                                "id": 6196,
                                                "name": "FunctionCall",
                                                "src": "1389:114:51"
                                            }
                                        ],
                                        "id": 6197,
                                        "name": "ExpressionStatement",
                                        "src": "1389:114:51"
                                    }
                                ],
                                "id": 6198,
                                "name": "Block",
                                "src": "792:719:51"
                            }
                        ],
                        "id": 6199,
                        "name": "FunctionDefinition",
                        "src": "658:853:51"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "functionSelector": "65b8de2e",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "parseData",
                            "overrides": null,
                            "scope": 6265,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 6220,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 6200,
                                                "name": "ElementaryTypeName",
                                                "src": "1545:5:51"
                                            }
                                        ],
                                        "id": 6201,
                                        "name": "VariableDeclaration",
                                        "src": "1545:17:51"
                                    }
                                ],
                                "id": 6202,
                                "name": "ParameterList",
                                "src": "1535:33:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "broker",
                                            "overrides": null,
                                            "scope": 6220,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6203,
                                                "name": "ElementaryTypeName",
                                                "src": "1614:7:51"
                                            }
                                        ],
                                        "id": 6204,
                                        "name": "VariableDeclaration",
                                        "src": "1614:14:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeProvider",
                                            "overrides": null,
                                            "scope": 6220,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6205,
                                                "name": "ElementaryTypeName",
                                                "src": "1630:7:51"
                                            }
                                        ],
                                        "id": 6206,
                                        "name": "VariableDeclaration",
                                        "src": "1630:24:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "exchangeId",
                                            "overrides": null,
                                            "scope": 6220,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 6207,
                                                "name": "ElementaryTypeName",
                                                "src": "1656:7:51"
                                            }
                                        ],
                                        "id": 6208,
                                        "name": "VariableDeclaration",
                                        "src": "1656:18:51"
                                    }
                                ],
                                "id": 6209,
                                "name": "ParameterList",
                                "src": "1613:62:51"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_68723bbc3e0def058b817bd80ad4e1536cb5e7fb398bc7af92371250ef21b61c",
                                                                    "typeString": "literal_string \"PairMentoV2: invalid data!\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 6210,
                                                        "name": "Identifier",
                                                        "src": "1690:7:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "length",
                                                                    "referencedDeclaration": null,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 6201,
                                                                            "type": "bytes memory",
                                                                            "value": "data"
                                                                        },
                                                                        "id": 6211,
                                                                        "name": "Identifier",
                                                                        "src": "1698:4:51"
                                                                    }
                                                                ],
                                                                "id": 6212,
                                                                "name": "MemberAccess",
                                                                "src": "1698:11:51"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "3732",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 72",
                                                                    "value": "72"
                                                                },
                                                                "id": 6213,
                                                                "name": "Literal",
                                                                "src": "1713:2:51"
                                                            }
                                                        ],
                                                        "id": 6214,
                                                        "name": "BinaryOperation",
                                                        "src": "1698:17:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "506169724d656e746f56323a20696e76616c6964206461746121",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"PairMentoV2: invalid data!\"",
                                                            "value": "PairMentoV2: invalid data!"
                                                        },
                                                        "id": 6215,
                                                        "name": "Literal",
                                                        "src": "1717:28:51"
                                                    }
                                                ],
                                                "id": 6216,
                                                "name": "FunctionCall",
                                                "src": "1690:56:51"
                                            }
                                        ],
                                        "id": 6217,
                                        "name": "ExpressionStatement",
                                        "src": "1690:56:51"
                                    },
                                    {
                                        "attributes": {
                                            "evmVersion": "istanbul",
                                            "externalReferences": [
                                                {
                                                    "declaration": 6204,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1779:6:51",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6201,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1799:4:51",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6201,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1852:4:51",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6201,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1899:4:51",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6208,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1875:10:51",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6206,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "1822:16:51",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "operations": "{\n    broker := mload(add(data, 20))\n    exchangeProvider := mload(add(data, 40))\n    exchangeId := mload(add(data, 72))\n}"
                                        },
                                        "children": [],
                                        "id": 6218,
                                        "name": "InlineAssembly",
                                        "src": "1756:163:51"
                                    }
                                ],
                                "id": 6219,
                                "name": "Block",
                                "src": "1680:245:51"
                            }
                        ],
                        "id": 6220,
                        "name": "FunctionDefinition",
                        "src": "1517:408:51"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                5324
                            ],
                            "documentation": null,
                            "functionSelector": "7eace892",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getOutputAmount",
                            "scope": 6265,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 6230,
                                "name": "OverrideSpecifier",
                                "src": "2073:8:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "input",
                                            "overrides": null,
                                            "scope": 6260,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6221,
                                                "name": "ElementaryTypeName",
                                                "src": "1965:7:51"
                                            }
                                        ],
                                        "id": 6222,
                                        "name": "VariableDeclaration",
                                        "src": "1965:13:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "output",
                                            "overrides": null,
                                            "scope": 6260,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6223,
                                                "name": "ElementaryTypeName",
                                                "src": "1988:7:51"
                                            }
                                        ],
                                        "id": 6224,
                                        "name": "VariableDeclaration",
                                        "src": "1988:14:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "overrides": null,
                                            "scope": 6260,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6225,
                                                "name": "ElementaryTypeName",
                                                "src": "2012:7:51"
                                            }
                                        ],
                                        "id": 6226,
                                        "name": "VariableDeclaration",
                                        "src": "2012:16:51"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "overrides": null,
                                            "scope": 6260,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 6227,
                                                "name": "ElementaryTypeName",
                                                "src": "2038:5:51"
                                            }
                                        ],
                                        "id": 6228,
                                        "name": "VariableDeclaration",
                                        "src": "2038:19:51"
                                    }
                                ],
                                "id": 6229,
                                "name": "ParameterList",
                                "src": "1955:108:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "overrides": null,
                                            "scope": 6260,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint",
                                                    "type": "uint256"
                                                },
                                                "id": 6231,
                                                "name": "ElementaryTypeName",
                                                "src": "2091:4:51"
                                            }
                                        ],
                                        "id": 6232,
                                        "name": "VariableDeclaration",
                                        "src": "2091:14:51"
                                    }
                                ],
                                "id": 6233,
                                "name": "ParameterList",
                                "src": "2090:16:51"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6235,
                                                6237,
                                                6239
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "_broker",
                                                    "overrides": null,
                                                    "scope": 6259,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 6234,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2131:7:51"
                                                    }
                                                ],
                                                "id": 6235,
                                                "name": "VariableDeclaration",
                                                "src": "2131:15:51"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "exchangeProvider",
                                                    "overrides": null,
                                                    "scope": 6259,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 6236,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2160:7:51"
                                                    }
                                                ],
                                                "id": 6237,
                                                "name": "VariableDeclaration",
                                                "src": "2160:24:51"
                                            },
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "exchangeId",
                                                    "overrides": null,
                                                    "scope": 6259,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 6238,
                                                        "name": "ElementaryTypeName",
                                                        "src": "2198:7:51"
                                                    }
                                                ],
                                                "id": 6239,
                                                "name": "VariableDeclaration",
                                                "src": "2198:18:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(address,address,bytes32)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6220,
                                                            "type": "function (bytes memory) pure returns (address,address,bytes32)",
                                                            "value": "parseData"
                                                        },
                                                        "id": 6240,
                                                        "name": "Identifier",
                                                        "src": "2229:9:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6228,
                                                            "type": "bytes calldata",
                                                            "value": "data"
                                                        },
                                                        "id": 6241,
                                                        "name": "Identifier",
                                                        "src": "2239:4:51"
                                                    }
                                                ],
                                                "id": 6242,
                                                "name": "FunctionCall",
                                                "src": "2229:15:51"
                                            }
                                        ],
                                        "id": 6243,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2117:127:51"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6245
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "broker",
                                                    "overrides": null,
                                                    "scope": 6259,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IBroker",
                                                    "value": null,
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "contractScope": null,
                                                            "name": "IBroker",
                                                            "referencedDeclaration": 6122,
                                                            "type": "contract IBroker"
                                                        },
                                                        "id": 6244,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2254:7:51"
                                                    }
                                                ],
                                                "id": 6245,
                                                "name": "VariableDeclaration",
                                                "src": "2254:14:51"
                                            },
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IBroker",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6122,
                                                            "type": "type(contract IBroker)",
                                                            "value": "IBroker"
                                                        },
                                                        "id": 6246,
                                                        "name": "Identifier",
                                                        "src": "2271:7:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6235,
                                                            "type": "address",
                                                            "value": "_broker"
                                                        },
                                                        "id": 6247,
                                                        "name": "Identifier",
                                                        "src": "2279:7:51"
                                                    }
                                                ],
                                                "id": 6248,
                                                "name": "FunctionCall",
                                                "src": "2271:16:51"
                                            }
                                        ],
                                        "id": 6249,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2254:33:51"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 6233
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getAmountOut",
                                                            "referencedDeclaration": 6121,
                                                            "type": "function (address,bytes32,address,address,uint256) view external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6245,
                                                                    "type": "contract IBroker",
                                                                    "value": "broker"
                                                                },
                                                                "id": 6250,
                                                                "name": "Identifier",
                                                                "src": "2316:6:51"
                                                            }
                                                        ],
                                                        "id": 6251,
                                                        "name": "MemberAccess",
                                                        "src": "2316:19:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6237,
                                                            "type": "address",
                                                            "value": "exchangeProvider"
                                                        },
                                                        "id": 6252,
                                                        "name": "Identifier",
                                                        "src": "2353:16:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6239,
                                                            "type": "bytes32",
                                                            "value": "exchangeId"
                                                        },
                                                        "id": 6253,
                                                        "name": "Identifier",
                                                        "src": "2387:10:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6222,
                                                            "type": "address",
                                                            "value": "input"
                                                        },
                                                        "id": 6254,
                                                        "name": "Identifier",
                                                        "src": "2415:5:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6224,
                                                            "type": "address",
                                                            "value": "output"
                                                        },
                                                        "id": 6255,
                                                        "name": "Identifier",
                                                        "src": "2438:6:51"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6226,
                                                            "type": "uint256",
                                                            "value": "amountIn"
                                                        },
                                                        "id": 6256,
                                                        "name": "Identifier",
                                                        "src": "2462:8:51"
                                                    }
                                                ],
                                                "id": 6257,
                                                "name": "FunctionCall",
                                                "src": "2316:168:51"
                                            }
                                        ],
                                        "id": 6258,
                                        "name": "Return",
                                        "src": "2297:187:51"
                                    }
                                ],
                                "id": 6259,
                                "name": "Block",
                                "src": "2107:384:51"
                            }
                        ],
                        "id": 6260,
                        "name": "FunctionDefinition",
                        "src": "1931:560:51"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "overrides": null,
                            "scope": 6265,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 6261,
                                "name": "ParameterList",
                                "src": "2504:2:51"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 6262,
                                "name": "ParameterList",
                                "src": "2524:0:51"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 6263,
                                "name": "Block",
                                "src": "2524:2:51"
                            }
                        ],
                        "id": 6264,
                        "name": "FunctionDefinition",
                        "src": "2497:29:51"
                    }
                ],
                "id": 6265,
                "name": "ContractDefinition",
                "src": "614:1914:51"
            }
        ],
        "id": 6266,
        "name": "SourceUnit",
        "src": "32:2496:51"
    },
    "compiler": {
        "name": "solc",
        "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.4.16",
    "updatedAt": "2025-02-07T17:50:42.834Z",
    "devdoc": {
        "methods": {}
    },
    "userdoc": {
        "methods": {}
    }
}
