{
    "contractName": "Token",
    "abi": [
        {
            "constant": true,
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "name": "",
                    "type": "uint8"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "owner",
                    "type": "address"
                },
                {
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "name",
                    "type": "bytes32"
                },
                {
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "name": "owner",
                    "type": "address"
                },
                {
                    "name": "symbol",
                    "type": "bytes32"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getIssuer",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "addTotalSupply",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "reduceSupply",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "party",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "addBalance",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "party",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "reduceBalance",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "party",
                    "type": "address"
                }
            ],
            "name": "getBalance",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "sender",
                    "type": "address"
                },
                {
                    "name": "receiver",
                    "type": "address"
                },
                {
                    "name": "tokens",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "sender",
                    "type": "address"
                },
                {
                    "name": "receiver",
                    "type": "address"
                },
                {
                    "name": "tokens",
                    "type": "uint256"
                }
            ],
            "name": "transferToken",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "receiver",
                    "type": "address"
                },
                {
                    "name": "tokens",
                    "type": "uint256"
                }
            ],
            "name": "requestTransfer",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "name": "payer",
                    "type": "address"
                },
                {
                    "name": "currency",
                    "type": "bytes32"
                },
                {
                    "name": "cashContract",
                    "type": "address"
                }
            ],
            "name": "requestTransaction",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"party\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getIssuer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"payer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"cashContract\",\"type\":\"address\"}],\"name\":\"requestTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"reduceSupply\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"requestTransfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"party\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"reduceBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addTotalSupply\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"name\",\"type\":\"bytes32\"},{\"name\":\"issuer\",\"type\":\"address\"},{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"symbol\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"tokens\",\"type\":\"uint256\"}],\"name\":\"transferToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"party\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\\r\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\\r\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation.\\r For example, if `decimals` equals `2`, a balance of `505` tokens should\\r be displayed to a user as `5.05` (`505 / 10 ** 2`).\\r      * Tokens usually opt for a value of 18, imitating the relationship between\\r Ether and Wei. This is the default value returned by this function, unless\\r it's overridden.\\r      * NOTE: This information is only used for _display_ purposes: it in\\r no way affects any of the arithmetic of the contract, including\\r {IERC20-balanceOf} and {IERC20-transfer}.\\r\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller.\\r      * This is an alternative to {approve} that can be used as a mitigation for\\r problems described in {IERC20-approve}.\\r      * Emits an {Approval} event indicating the updated allowance.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r - `spender` must have allowance for the caller of at least\\r `subtractedValue`.\\r\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller.\\r      * This is an alternative to {approve} that can be used as a mitigation for\\r problems described in {IERC20-approve}.\\r      * Emits an {Approval} event indicating the updated allowance.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r\"},\"name()\":{\"details\":\"Returns the name of the token.\\r\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the\\r name.\\r\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\\r\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}.\\r      * Requirements:\\r      * - `recipient` cannot be the zero address.\\r - the caller must have a balance of at least `amount`.\\r\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Token.sol\":\"Token\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"project:/contracts/Token.sol\":{\"keccak256\":\"0xe0b1e6e785ae58d9cf517545b47681fbe373b4711383e1feddf14b3ed856784a\",\"urls\":[\"bzzr://a7105c2e5b03b28db67668f430c9da3d20fb23f0f7189b6cd89d13e6c611f797\"]},\"project:/contracts/interfaces/ViaBond.sol\":{\"keccak256\":\"0xfc471512526675edd84249f397bf94b1cef191bcbac1d3da1db24786867c4c62\",\"urls\":[\"bzzr://563d2507340846e5d3ac74b24d529a35e52241971e942784781cb4b48b36c2d6\"]},\"project:/contracts/interfaces/ViaFactory.sol\":{\"keccak256\":\"0xd71096d3b9b6e130416a346913097dd5a5f1ca16e242778c9e1005058b14b7f2\",\"urls\":[\"bzzr://b2eeb8b364fec878cee9035228fce18a58d7cec7a0be946df554de65dd51332b\"]},\"project:/contracts/interfaces/ViaToken.sol\":{\"keccak256\":\"0xfe45ec0f3e72d12ca2c0dd9ff16258eec9a30b736dddfc8f799b7f2601b1aae0\",\"urls\":[\"bzzr://3d36c5055be4b4f517ee1670643fa0a139811d45ed844195009b00a8fc666c87\"]},\"project:/contracts/utilities/ERC20.sol\":{\"keccak256\":\"0x410b1bfe4ae45185f9d971ef497cf28ea3f0efb18ced3760fa781aaa150835a8\",\"urls\":[\"bzzr://ce908881afa94cfdc13d8e9afd3aa1edb50cae8469eee123f1169ffbbb0f7f16\"]}},\"version\":1}",
    "bytecode": "0x6080604052611661806100136000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806380623444116100b8578063b47279061161007c578063b4727906146103f0578063dd62ed3e1461041c578063e468688e1461044a578063ef23972114610467578063f5537ede146104a3578063f8b2cb4f146104d957610137565b8063806234441461034757806395d89b4114610364578063a457c2d71461036c578063a9059cbb14610398578063aa5fc794146103c457610137565b8063313ce567116100ff578063313ce56714610277578063395093511461029557806352556421146102c15780635a341b90146102e557806370a082311461032157610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806321e5383a1461021357806323b872dd14610241575b600080fd5b6101446104ff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610596565b604080519115158252519081900360200190f35b6102016105b4565b60408051918252519081900360200190f35b61023f6004803603604081101561022957600080fd5b506001600160a01b0381351690602001356105ba565b005b6101e56004803603606081101561025757600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b61027f6106da565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102ab57600080fd5b506001600160a01b0381351690602001356106df565b6102c9610738565b604080516001600160a01b039092168252519081900360200190f35b6101e5600480360360808110156102fb57600080fd5b508035906001600160a01b03602082013581169160408101359160609091013516610747565b6102016004803603602081101561033757600080fd5b50356001600160a01b03166109d3565b61023f6004803603602081101561035d57600080fd5b50356109ee565b610144610a4b565b6101e56004803603604081101561038257600080fd5b506001600160a01b038135169060200135610aac565b6101e5600480360360408110156103ae57600080fd5b506001600160a01b038135169060200135610b1a565b6101e5600480360360408110156103da57600080fd5b506001600160a01b038135169060200135610b2e565b61023f6004803603604081101561040657600080fd5b506001600160a01b038135169060200135610ba0565b6102016004803603604081101561043257600080fd5b506001600160a01b0381358116916020013516610bfa565b61023f6004803603602081101561046057600080fd5b5035610c25565b61023f6004803603608081101561047d57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610c7f565b6101e5600480360360608110156104b957600080fd5b506001600160a01b03813581169160208101359091169060400135610daf565b610201600480360360208110156104ef57600080fd5b50356001600160a01b0316610e24565b60368054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561058b5780601f106105605761010080835404028352916020019161058b565b820191906000526020600020905b81548152906001019060200180831161056e57829003601f168201915b505050505090505b90565b60006105aa6105a3610e80565b8484610e84565b5060015b92915050565b60355490565b606b546001600160a01b0316331461060a5760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b6106148282610f76565b5050565b600081610624856109d3565b101561062f57600080fd5b606b5460408051600160e11b6340e5437f0281526001600160a01b038781166004830152868116602483015260448201869052306064830152915191909216916381ca86fe9160848083019260209291908290030181600087803b15801561069657600080fd5b505af11580156106aa573d6000803e3d6000fd5b505050506040513d60208110156106c057600080fd5b5051156106cf575060016106d3565b5060005b9392505050565b601290565b60006105aa6106ec610e80565b8461073385603460006106fd610e80565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61106b16565b610e84565b606a546001600160a01b031690565b606c5460408051600160e01b63f429f19b02815233600482015290516000926001600160a01b03169163f429f19b916024808301926020929190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d60208110156107bf57600080fd5b5051600160cb1b660acd2c286c2e6d0214806108525750606c5460408051600160e21b633444c8b50281526004810186905290516001600160a01b039092169163d11322d491602480820192602092909190829003018186803b15801561082557600080fd5b505afa158015610839573d6000803e3d6000fd5b505050506040513d602081101561084f57600080fd5b50515b6108a65760408051600160e51b62461bcd02815260206004820152601160248201527f556e737570706f7274656420746f6b656e000000000000000000000000000000604482015290519081900360640190fd5b606a546001600160a01b038581169116141561096357606b5460408051600160e01b6320f46de1028152600481018890526001600160a01b03878116602483015260448201879052306064830152915191909216916320f46de19160848083019260209291908290030181600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b505050506040513d602081101561094c57600080fd5b50511561095b575060016109cb565b5060006109cb565b606b5460408051600160e11b630fb7dfd7028152600481018890526001600160a01b03878116602483015260448201879052858116606483015291519190921691631f6fbfae9160848083019260209291908290030181600087803b15801561092257600080fd5b949350505050565b6001600160a01b031660009081526033602052604090205490565b606b546001600160a01b03163314610a3e5760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610a4830826110c8565b50565b60378054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561058b5780601f106105605761010080835404028352916020019161058b565b60006105aa610ab9610e80565b84610733856040518060600160405280602581526020016116116025913960346000610ae3610e80565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6111c716565b60006105aa610b27610e80565b8484611261565b606b546000906001600160a01b03163314610b815760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610b8b8383610b1a565b15610b98575060016105ae565b5060006105ae565b606b546001600160a01b03163314610bf05760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b61061482826110c8565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b606b546001600160a01b03163314610c755760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610a483082610f76565b600054610100900460ff1680610c985750610c986113c5565b80610ca6575060005460ff16155b610ce457604051600160e51b62461bcd02815260040180806020018281038252602e815260200180611559602e913960400191505060405180910390fd5b600054610100900460ff16158015610d0f576000805460ff1961ff0019909116610100171660011790555b606c8054336001600160a01b031991821617909155606a805482166001600160a01b0387811691909117909155606b805490921690851617905560408051602080820188905282518083039091018152908201909152610d6e906113cb565b610d9682604051602001808281526020019150506040516020818303038152906040526113de565b8015610da8576000805461ff00191690555b5050505050565b606b546000906001600160a01b03163314610e025760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b81610e0c856109d3565b106106cf57610e1c848484611261565b5060016106d3565b606b546000906001600160a01b03163314610e775760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b6105ae826109d3565b3390565b6001600160a01b038316610ecc57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806115ed6024913960400191505060405180910390fd5b6001600160a01b038216610f1457604051600160e51b62461bcd0281526004018080602001828103825260228152602001806115116022913960400191505060405180910390fd5b6001600160a01b03808416600081815260346020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216610fd45760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b603554610fe7908263ffffffff61106b16565b6035556001600160a01b038216600090815260336020526040902054611013908263ffffffff61106b16565b6001600160a01b03831660008181526033602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156106d35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661111057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115876021913960400191505060405180910390fd5b611153816040518060600160405280602281526020016114ef602291396001600160a01b038516600090815260336020526040902054919063ffffffff6111c716565b6001600160a01b03831660009081526033602052604090205560355461117f908263ffffffff6113f116565b6035556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000818484111561125957604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166112a957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806115a86025913960400191505060405180910390fd5b6001600160a01b0382166112f157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114cc6023913960400191505060405180910390fd5b61133481604051806060016040528060268152602001611533602691396001600160a01b038616600090815260336020526040902054919063ffffffff6111c716565b6001600160a01b038085166000908152603360205260408082209390935590841681522054611369908263ffffffff61106b16565b6001600160a01b0380841660008181526033602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b303b1590565b8051610614906036906020840190611433565b8051610614906037906020840190611433565b60006106d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c7565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061147457805160ff19168380011785556114a1565b828001600101855582156114a1579182015b828111156114a1578251825591602001919060010190611486565b506114ad9291506114b1565b5090565b61059391905b808211156114ad57600081556001016114b756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373496e76616c696420726571756573746f7200000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820cfb5aa5f7087976d54d4bf0ef9729611cfb99b060372cd1109b4eae79ddf61a70029",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806380623444116100b8578063b47279061161007c578063b4727906146103f0578063dd62ed3e1461041c578063e468688e1461044a578063ef23972114610467578063f5537ede146104a3578063f8b2cb4f146104d957610137565b8063806234441461034757806395d89b4114610364578063a457c2d71461036c578063a9059cbb14610398578063aa5fc794146103c457610137565b8063313ce567116100ff578063313ce56714610277578063395093511461029557806352556421146102c15780635a341b90146102e557806370a082311461032157610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806321e5383a1461021357806323b872dd14610241575b600080fd5b6101446104ff565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b038135169060200135610596565b604080519115158252519081900360200190f35b6102016105b4565b60408051918252519081900360200190f35b61023f6004803603604081101561022957600080fd5b506001600160a01b0381351690602001356105ba565b005b6101e56004803603606081101561025757600080fd5b506001600160a01b03813581169160208101359091169060400135610618565b61027f6106da565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102ab57600080fd5b506001600160a01b0381351690602001356106df565b6102c9610738565b604080516001600160a01b039092168252519081900360200190f35b6101e5600480360360808110156102fb57600080fd5b508035906001600160a01b03602082013581169160408101359160609091013516610747565b6102016004803603602081101561033757600080fd5b50356001600160a01b03166109d3565b61023f6004803603602081101561035d57600080fd5b50356109ee565b610144610a4b565b6101e56004803603604081101561038257600080fd5b506001600160a01b038135169060200135610aac565b6101e5600480360360408110156103ae57600080fd5b506001600160a01b038135169060200135610b1a565b6101e5600480360360408110156103da57600080fd5b506001600160a01b038135169060200135610b2e565b61023f6004803603604081101561040657600080fd5b506001600160a01b038135169060200135610ba0565b6102016004803603604081101561043257600080fd5b506001600160a01b0381358116916020013516610bfa565b61023f6004803603602081101561046057600080fd5b5035610c25565b61023f6004803603608081101561047d57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610c7f565b6101e5600480360360608110156104b957600080fd5b506001600160a01b03813581169160208101359091169060400135610daf565b610201600480360360208110156104ef57600080fd5b50356001600160a01b0316610e24565b60368054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561058b5780601f106105605761010080835404028352916020019161058b565b820191906000526020600020905b81548152906001019060200180831161056e57829003601f168201915b505050505090505b90565b60006105aa6105a3610e80565b8484610e84565b5060015b92915050565b60355490565b606b546001600160a01b0316331461060a5760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b6106148282610f76565b5050565b600081610624856109d3565b101561062f57600080fd5b606b5460408051600160e11b6340e5437f0281526001600160a01b038781166004830152868116602483015260448201869052306064830152915191909216916381ca86fe9160848083019260209291908290030181600087803b15801561069657600080fd5b505af11580156106aa573d6000803e3d6000fd5b505050506040513d60208110156106c057600080fd5b5051156106cf575060016106d3565b5060005b9392505050565b601290565b60006105aa6106ec610e80565b8461073385603460006106fd610e80565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61106b16565b610e84565b606a546001600160a01b031690565b606c5460408051600160e01b63f429f19b02815233600482015290516000926001600160a01b03169163f429f19b916024808301926020929190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d60208110156107bf57600080fd5b5051600160cb1b660acd2c286c2e6d0214806108525750606c5460408051600160e21b633444c8b50281526004810186905290516001600160a01b039092169163d11322d491602480820192602092909190829003018186803b15801561082557600080fd5b505afa158015610839573d6000803e3d6000fd5b505050506040513d602081101561084f57600080fd5b50515b6108a65760408051600160e51b62461bcd02815260206004820152601160248201527f556e737570706f7274656420746f6b656e000000000000000000000000000000604482015290519081900360640190fd5b606a546001600160a01b038581169116141561096357606b5460408051600160e01b6320f46de1028152600481018890526001600160a01b03878116602483015260448201879052306064830152915191909216916320f46de19160848083019260209291908290030181600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b505050506040513d602081101561094c57600080fd5b50511561095b575060016109cb565b5060006109cb565b606b5460408051600160e11b630fb7dfd7028152600481018890526001600160a01b03878116602483015260448201879052858116606483015291519190921691631f6fbfae9160848083019260209291908290030181600087803b15801561092257600080fd5b949350505050565b6001600160a01b031660009081526033602052604090205490565b606b546001600160a01b03163314610a3e5760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610a4830826110c8565b50565b60378054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561058b5780601f106105605761010080835404028352916020019161058b565b60006105aa610ab9610e80565b84610733856040518060600160405280602581526020016116116025913960346000610ae3610e80565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6111c716565b60006105aa610b27610e80565b8484611261565b606b546000906001600160a01b03163314610b815760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610b8b8383610b1a565b15610b98575060016105ae565b5060006105ae565b606b546001600160a01b03163314610bf05760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b61061482826110c8565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b606b546001600160a01b03163314610c755760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b610a483082610f76565b600054610100900460ff1680610c985750610c986113c5565b80610ca6575060005460ff16155b610ce457604051600160e51b62461bcd02815260040180806020018281038252602e815260200180611559602e913960400191505060405180910390fd5b600054610100900460ff16158015610d0f576000805460ff1961ff0019909116610100171660011790555b606c8054336001600160a01b031991821617909155606a805482166001600160a01b0387811691909117909155606b805490921690851617905560408051602080820188905282518083039091018152908201909152610d6e906113cb565b610d9682604051602001808281526020019150506040516020818303038152906040526113de565b8015610da8576000805461ff00191690555b5050505050565b606b546000906001600160a01b03163314610e025760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b81610e0c856109d3565b106106cf57610e1c848484611261565b5060016106d3565b606b546000906001600160a01b03163314610e775760408051600160e51b62461bcd02815260206004820152601160248201526000805160206115cd833981519152604482015290519081900360640190fd5b6105ae826109d3565b3390565b6001600160a01b038316610ecc57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806115ed6024913960400191505060405180910390fd5b6001600160a01b038216610f1457604051600160e51b62461bcd0281526004018080602001828103825260228152602001806115116022913960400191505060405180910390fd5b6001600160a01b03808416600081815260346020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216610fd45760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b603554610fe7908263ffffffff61106b16565b6035556001600160a01b038216600090815260336020526040902054611013908263ffffffff61106b16565b6001600160a01b03831660008181526033602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156106d35760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661111057604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115876021913960400191505060405180910390fd5b611153816040518060600160405280602281526020016114ef602291396001600160a01b038516600090815260336020526040902054919063ffffffff6111c716565b6001600160a01b03831660009081526033602052604090205560355461117f908263ffffffff6113f116565b6035556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000818484111561125957604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166112a957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806115a86025913960400191505060405180910390fd5b6001600160a01b0382166112f157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806114cc6023913960400191505060405180910390fd5b61133481604051806060016040528060268152602001611533602691396001600160a01b038616600090815260336020526040902054919063ffffffff6111c716565b6001600160a01b038085166000908152603360205260408082209390935590841681522054611369908263ffffffff61106b16565b6001600160a01b0380841660008181526033602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b303b1590565b8051610614906036906020840190611433565b8051610614906037906020840190611433565b60006106d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c7565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061147457805160ff19168380011785556114a1565b828001600101855582156114a1579182015b828111156114a1578251825591602001919060010190611486565b506114ad9291506114b1565b5090565b61059391905b808211156114ad57600081556001016114b756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373496e76616c696420726571756573746f7200000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820cfb5aa5f7087976d54d4bf0ef9729611cfb99b060372cd1109b4eae79ddf61a70029",
    "sourceMap": "289:3441:20:-;;;;;;;;;",
    "deployedSourceMap": "289:3441:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:3441:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:83:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1999:83:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4238:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4238:152:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3259:91;;;:::i;:::-;;;;;;;;;;;;;;;;1328:167:20;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1328:167:20;;;;;;;;:::i;:::-;;1860:403;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1860:403:20;;;;;;;;;;;;;;;;;:::i;3118:76:32:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5575:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5575:210:32;;;;;;;;:::i;882:84:20:-;;;:::i;:::-;;;;-1:-1:-1;;;;;882:84:20;;;;;;;;;;;;;;3034:685;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3034:685:20;;;-1:-1:-1;;;;;3034:685:20;;;;;;;;;;;;;;;;;;;:::i;3413:110:32:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3413:110:32;-1:-1:-1;;;;;3413:110:32;;:::i;1150:170:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1150:170:20;;:::i;2288:87:32:-;;;:::i;6288:261::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6288:261:32;;;;;;;;:::i;3736:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3736:158:32;;;;;;;;:::i;2758:266:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2758:266:20;;;;;;;;:::i;1503:170::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1503:170:20;;;;;;;;:::i;3957:134:32:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3957:134:32;;;;;;;;;;:::i;978:164:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;978:164:20;;:::i;557:317::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;557:317:20;;;-1:-1:-1;;;;;557:317:20;;;;;;;;;;;;;;;;;;;:::i;2271:476::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2271:476:20;;;;;;;;;;;;;;;;;:::i;1681:171::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1681:171:20;-1:-1:-1;;;;;1681:171:20;;:::i;1999:83:32:-;2069:5;2062:12;;;;;;;;-1:-1:-1;;2062:12:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:13;;2062:12;;2069:5;;2062:12;;2069:5;2062:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:83;;:::o;4238:152::-;4304:4;4321:39;4330:12;:10;:12::i;:::-;4344:7;4353:6;4321:8;:39::i;:::-;-1:-1:-1;4378:4:32;4238:152;;;;;:::o;3259:91::-;3330:12;;3259:91;:::o;1328:167:20:-;1406:16;;-1:-1:-1;;;;;1406:16:20;1424:10;1406:28;1398:58;;;;;-1:-1:-1;;;;;1398:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1398:58:20;;;;;;;;;;;;;;;1467:20;1473:5;1480:6;1467:5;:20::i;:::-;1328:167;;:::o;1860:403::-;1948:4;2085:6;2064:17;2074:6;2064:9;:17::i;:::-;:27;;2056:36;;;;;;2114:16;;2106:82;;;-1:-1:-1;;;;;2106:82:20;;-1:-1:-1;;;;;2106:82:20;;;;;;;;;;;;;;;;;;;;2182:4;2106:82;;;;;;2114:16;;;;;2106:41;;:82;;;;;;;;;;;;;;2114:16;;2106:82;;;5:2:-1;;;;30:1;27;20:12;5:2;2106:82:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2106:82:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2106:82:20;2103:152;;;-1:-1:-1;2210:4:20;2203:11;;2103:152;-1:-1:-1;2250:5:20;2103:152;1860:403;;;;;:::o;3118:76:32:-;3184:2;3118:76;:::o;5575:210::-;5655:4;5672:83;5681:12;:10;:12::i;:::-;5695:7;5704:50;5743:10;5704:11;:25;5716:12;:10;:12::i;:::-;-1:-1:-1;;;;;5704:25:32;;;;;;;;;;;;;;;;;-1:-1:-1;5704:25:32;;;:34;;;;;;;;;;;:50;:38;:50;:::i;:::-;5672:8;:83::i;882:84:20:-;951:7;;-1:-1:-1;;;;;951:7:20;882:84;:::o;3034:685::-;3174:8;;:28;;;-1:-1:-1;;;;;3174:28:20;;3191:10;3174:28;;;;;;3150:4;;-1:-1:-1;;;;;3174:8:20;;:16;;:28;;;;;;;;;;;;;;:8;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;3174:28:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3174:28:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:28:20;-1:-1:-1;;;;;3174:41:20;;:84;;-1:-1:-1;3219:8:20;;:39;;;-1:-1:-1;;;;;3219:39:20;;;;;;;;;;-1:-1:-1;;;;;3219:8:20;;;;:29;;:39;;;;;;;;;;;;;;;:8;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;3219:39:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3219:39:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3219:39:20;3174:84;3166:114;;;;;-1:-1:-1;;;;;3166:114:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;3301:7;;-1:-1:-1;;;;;3294:14:20;;;3301:7;;3294:14;3291:413;;;3335:16;;3327:83;;;-1:-1:-1;;;;;3327:83:20;;;;;;;;-1:-1:-1;;;;;3327:83:20;;;;;;;;;;;;;3404:4;3327:83;;;;;;3335:16;;;;;3327:43;;:83;;;;;;;;;;;;;;3335:16;;3327:83;;;5:2:-1;;;;30:1;27;20:12;5:2;3327:83:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3327:83:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3327:83:20;3324:165;;;-1:-1:-1;3436:4:20;3429:11;;3324:165;-1:-1:-1;3484:5:20;3477:12;;3291:413;3541:16;;3533:80;;;-1:-1:-1;;;;;3533:80:20;;;;;;;;-1:-1:-1;;;;;3533:80:20;;;;;;;;;;;;;;;;;;;;;;3541:16;;;;;3533:41;;:80;;;;;;;;;;;;;;3541:16;;3533:80;;;5:2:-1;;;;30:1;27;20:12;3530:162:20;3034:685;;;;;;:::o;3413:110:32:-;-1:-1:-1;;;;;3497:18:32;3470:7;3497:18;;;:9;:18;;;;;;;3413:110::o;1150:170:20:-;1223:16;;-1:-1:-1;;;;;1223:16:20;1241:10;1223:28;1215:58;;;;;-1:-1:-1;;;;;1215:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1215:58:20;;;;;;;;;;;;;;;1284:28;1298:4;1305:6;1284:5;:28::i;:::-;1150:170;:::o;2288:87:32:-;2360:7;2353:14;;;;;;;;-1:-1:-1;;2353:14:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2327:13;;2353:14;;2360:7;;2353:14;;2360:7;2353:14;;;;;;;;;;;;;;;;;;;;;;;;6288:261;6373:4;6390:129;6399:12;:10;:12::i;:::-;6413:7;6422:96;6461:15;6422:96;;;;;;;;;;;;;;;;;:11;:25;6434:12;:10;:12::i;:::-;-1:-1:-1;;;;;6422:25:32;;;;;;;;;;;;;;;;;-1:-1:-1;6422:25:32;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;3736:158::-;3805:4;3822:42;3832:12;:10;:12::i;:::-;3846:9;3857:6;3822:9;:42::i;2758:266:20:-;2859:16;;2835:4;;-1:-1:-1;;;;;2859:16:20;2877:10;2859:28;2851:58;;;;;-1:-1:-1;;;;;2851:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2851:58:20;;;;;;;;;;;;;;;2923:26;2932:8;2942:6;2923:8;:26::i;:::-;2920:96;;;-1:-1:-1;2971:4:20;2964:11;;2920:96;-1:-1:-1;3011:5:20;3004:12;;1503:170;1584:16;;-1:-1:-1;;;;;1584:16:20;1602:10;1584:28;1576:58;;;;;-1:-1:-1;;;;;1576:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1576:58:20;;;;;;;;;;;;;;;1645:20;1651:5;1658:6;1645:5;:20::i;3957:134:32:-;-1:-1:-1;;;;;4056:18:32;;;4029:7;4056:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:134::o;978:164:20:-;1045:16;;-1:-1:-1;;;;;1045:16:20;1063:10;1045:28;1037:58;;;;;-1:-1:-1;;;;;1037:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1037:58:20;;;;;;;;;;;;;;;1106:28;1120:4;1127:6;1106:5;:28::i;557:317::-;1024:12:4;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:4;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:4;;;;;1225:18;1213:4;1225:18;;;1170:80;667:8:20;:33;;689:10;-1:-1:-1;;;;;;667:33:20;;;;;;;711:7;:16;;;;-1:-1:-1;;;;;711:16:20;;;;;;;;;;738;:24;;;;;;;;;;;788:22;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;788:22:20;;;;;;773:39;;:7;:39::i;:::-;823:43;857:6;840:24;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;840:24:20;;;823:9;:43::i;:::-;1268:14:4;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:4;;;1264:55;557:317:20;;;;;:::o;2271:476::-;2386:16;;2362:4;;-1:-1:-1;;;;;2386:16:20;2404:10;2386:28;2378:58;;;;;-1:-1:-1;;;;;2378:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2378:58:20;;;;;;;;;;;;;;;2535:6;2514:17;2524:6;2514:9;:17::i;:::-;:27;2511:206;;2644:35;2654:6;2662:8;2672:6;2644:9;:35::i;:::-;-1:-1:-1;2701:4:20;2694:11;;1681:171;1760:16;;1733:7;;-1:-1:-1;;;;;1760:16:20;1778:10;1760:28;1752:58;;;;;-1:-1:-1;;;;;1752:58:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1752:58:20;;;;;;;;;;;;;;;1828:16;1838:5;1828:9;:16::i;867:96:0:-;946:10;867:96;:::o;9219:338:32:-;-1:-1:-1;;;;;9313:19:32;;9305:68;;;;-1:-1:-1;;;;;9305:68:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9392:21:32;;9384:68;;;;-1:-1:-1;;;;;9384:68:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9465:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9517:32;;;;;;;;;;;;;;;;;9219:338;;;:::o;7791:308::-;-1:-1:-1;;;;;7867:21:32;;7859:65;;;;;-1:-1:-1;;;;;7859:65:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;7952:12;;:24;;7969:6;7952:24;:16;:24;:::i;:::-;7937:12;:39;-1:-1:-1;;;;;8008:18:32;;;;;;:9;:18;;;;;;:30;;8031:6;8008:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;7987:18:32;;;;;;:9;:18;;;;;;;;:51;;;;8054:37;;;;;;;7987:18;;;;8054:37;;;;;;;;;;7791:308;;:::o;834:176:1:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8431:348:32;-1:-1:-1;;;;;8507:21:32;;8499:67;;;;-1:-1:-1;;;;;8499:67:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8600:68;8623:6;8600:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8600:18:32;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;8579:18:32;;;;;;:9;:18;;;;;:89;8694:12;;:24;;8711:6;8694:24;:16;:24;:::i;:::-;8679:12;:39;8734:37;;;;;;;;8760:1;;-1:-1:-1;;;;;8734:37:32;;;;;;;;;;;;8431:348;;:::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;7039:471:32:-;-1:-1:-1;;;;;7137:20:32;;7129:70;;;;-1:-1:-1;;;;;7129:70:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7218:23:32;;7210:71;;;;-1:-1:-1;;;;;7210:71:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7314;7336:6;7314:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7314:17:32;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;7294:17:32;;;;;;;:9;:17;;;;;;:91;;;;7419:20;;;;;;;:32;;7444:6;7419:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;7396:20:32;;;;;;;:9;:20;;;;;;;;;:55;;;;7467:35;;;;;;;7396:20;;7467:35;;;;;;;;;;;;;7039:471;;;:::o;1409:498:4:-;1820:4;1864:17;1895:7;1409:498;:::o;2090:79:32:-;2148:13;;;;:5;;:13;;;;;:::i;2383:87::-;2445:17;;;;:7;;:17;;;;;:::i;1274:134:1:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;289:3441:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;289:3441:20;;;-1:-1:-1;289:3441:20;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
    "source": "// (c) Kallol Borah, 2020\r\n// Implements token issued by Verified bond issuer\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./interfaces/ViaBond.sol\";\r\nimport \"./interfaces/ViaToken.sol\";\r\nimport \"./interfaces/ViaFactory.sol\";\r\n\r\nimport \"./utilities/ERC20.sol\";\r\n\r\ncontract Token is ViaToken, ERC20 {\r\n\r\n    //Via token attributes (eg, name : Via-USD, product : ViaBond, symbol : bond identifier)\r\n    address private _issuer;\r\n    address private _issuingContract;\r\n    ViaFactory private _factory;\r\n\r\n    //initiliaze proxies\r\n    function initialize(bytes32 name, address issuer, address owner, bytes32 symbol) public initializer{\r\n        _factory = ViaFactory(msg.sender);\r\n        _issuer = issuer;\r\n        _issuingContract = owner;\r\n        setName(string(abi.encodePacked(name)));\r\n        setSymbol(string(abi.encodePacked(symbol)));\r\n    }\r\n\r\n    function getIssuer() external view returns(address){\r\n        return _issuer;\r\n    }\r\n    \r\n    function addTotalSupply(uint256 amount) external{\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        _mint(address(this), amount);\r\n    }\r\n\r\n    function reduceSupply(uint256 amount) external{        \r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        _burn(address(this), amount);\r\n    }\r\n\r\n    function addBalance(address party, uint256 amount) external{\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        _mint(party, amount);\r\n    }\r\n\r\n    function reduceBalance(address party, uint256 amount) external{\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        _burn(party, amount);\r\n    }\r\n\r\n    function getBalance(address party) external returns(uint256){\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        return balanceOf(party);\r\n    }\r\n\r\n    function transferFrom(address sender, address receiver, uint256 tokens) public returns (bool){\r\n        //ensure sender has enough tokens in balance before transferring or redeeming them\r\n        require(balanceOf(sender) >= tokens);\r\n        if(ViaBond(_issuingContract).transferForward(sender, receiver, tokens, address(this)))\r\n            return true;\r\n        else\r\n            return false;\r\n    }\r\n\r\n    function transferToken(address sender, address receiver, uint256 tokens) external returns (bool){\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        //owner should have more tokens than being transferred\r\n        if(balanceOf(sender) >= tokens){\r\n            //sending contract should be allowed by token owner to make this transfer\r\n            _transfer(sender, receiver, tokens);\r\n            return true;\r\n        }\r\n        return false;\r\n    }   \r\n\r\n    function requestTransfer(address receiver, uint256 tokens) external returns (bool){\r\n        require(_issuingContract==msg.sender, \"Invalid requestor\");\r\n        if(transfer(receiver, tokens))\r\n            return true;\r\n        else\r\n            return false;\r\n    }  \r\n\r\n    function requestTransaction(uint256 amount, address payer, bytes32 currency, address cashContract) external returns(bool){\r\n        require(_factory.getType(msg.sender) == \"ViaCash\" || _factory.checkSupportForToken(currency), \"Unsupported token\");\r\n        if(payer==_issuer){\r\n            if(ViaBond(_issuingContract).requestRedemption(amount, payer, currency, address(this)))\r\n                return true;\r\n            else\r\n                return false;\r\n        }\r\n        else{\r\n            if(ViaBond(_issuingContract).requestPurchase(amount, payer, currency, cashContract))\r\n                return true;\r\n            else\r\n                return false;\r\n        }        \r\n    }  \r\n    \r\n}\r\n",
    "sourcePath": "D:\\Code\\verified-payments\\contracts\\Token.sol",
    "ast": {
        "absolutePath": "project:/contracts/Token.sol",
        "exportedSymbols": {
            "Token": [
                7906
            ]
        },
        "id": 7907,
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7566,
                "literals": [
                    "solidity",
                    "0.5",
                    ".7"
                ],
                "nodeType": "PragmaDirective",
                "src": "114:22:20"
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaBond.sol",
                "file": "./interfaces/ViaBond.sol",
                "id": 7567,
                "nodeType": "ImportDirective",
                "scope": 7907,
                "sourceUnit": 8170,
                "src": "140:34:20",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaToken.sol",
                "file": "./interfaces/ViaToken.sol",
                "id": 7568,
                "nodeType": "ImportDirective",
                "scope": 7907,
                "sourceUnit": 8500,
                "src": "176:35:20",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaFactory.sol",
                "file": "./interfaces/ViaFactory.sol",
                "id": 7569,
                "nodeType": "ImportDirective",
                "scope": 7907,
                "sourceUnit": 8403,
                "src": "213:37:20",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/utilities/ERC20.sol",
                "file": "./utilities/ERC20.sol",
                "id": 7570,
                "nodeType": "ImportDirective",
                "scope": 7907,
                "sourceUnit": 12539,
                "src": "254:31:20",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "baseContracts": [
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 7571,
                            "name": "ViaToken",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8499,
                            "src": "307:8:20",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ViaToken_$8499",
                                "typeString": "contract ViaToken"
                            }
                        },
                        "id": 7572,
                        "nodeType": "InheritanceSpecifier",
                        "src": "307:8:20"
                    },
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 7573,
                            "name": "ERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 12538,
                            "src": "317:5:20",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$12538",
                                "typeString": "contract ERC20"
                            }
                        },
                        "id": 7574,
                        "nodeType": "InheritanceSpecifier",
                        "src": "317:5:20"
                    }
                ],
                "contractDependencies": [
                    29,
                    409,
                    478,
                    8499,
                    12538
                ],
                "contractKind": "contract",
                "documentation": null,
                "fullyImplemented": true,
                "id": 7906,
                "linearizedBaseContracts": [
                    7906,
                    12538,
                    409,
                    29,
                    478,
                    8499
                ],
                "name": "Token",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 7576,
                        "name": "_issuer",
                        "nodeType": "VariableDeclaration",
                        "scope": 7906,
                        "src": "426:23:20",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 7575,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "426:7:20",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7578,
                        "name": "_issuingContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 7906,
                        "src": "456:32:20",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 7577,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "456:7:20",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7580,
                        "name": "_factory",
                        "nodeType": "VariableDeclaration",
                        "scope": 7906,
                        "src": "495:27:20",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ViaFactory_$8402",
                            "typeString": "contract ViaFactory"
                        },
                        "typeName": {
                            "contractScope": null,
                            "id": 7579,
                            "name": "ViaFactory",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8402,
                            "src": "495:10:20",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                "typeString": "contract ViaFactory"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 7626,
                            "nodeType": "Block",
                            "src": "656:218:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7598,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 7593,
                                            "name": "_factory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7580,
                                            "src": "667:8:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7595,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "689:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7596,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "689:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                ],
                                                "id": 7594,
                                                "name": "ViaFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8402,
                                                "src": "678:10:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ViaFactory_$8402_$",
                                                    "typeString": "type(contract ViaFactory)"
                                                }
                                            },
                                            "id": 7597,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "678:22:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "src": "667:33:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                            "typeString": "contract ViaFactory"
                                        }
                                    },
                                    "id": 7599,
                                    "nodeType": "ExpressionStatement",
                                    "src": "667:33:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7602,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 7600,
                                            "name": "_issuer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7576,
                                            "src": "711:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 7601,
                                            "name": "issuer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7584,
                                            "src": "721:6:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "711:16:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 7603,
                                    "nodeType": "ExpressionStatement",
                                    "src": "711:16:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7606,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 7604,
                                            "name": "_issuingContract",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7578,
                                            "src": "738:16:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 7605,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7586,
                                            "src": "757:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "738:24:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 7607,
                                    "nodeType": "ExpressionStatement",
                                    "src": "738:24:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 7612,
                                                                "name": "name",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7582,
                                                                "src": "805:4:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": null,
                                                                "id": 7610,
                                                                "name": "abi",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12994,
                                                                "src": "788:3:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_abi",
                                                                    "typeString": "abi"
                                                                }
                                                            },
                                                            "id": 7611,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "encodePacked",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": null,
                                                            "src": "788:16:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                "typeString": "function () pure returns (bytes memory)"
                                                            }
                                                        },
                                                        "id": 7613,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "788:22:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    ],
                                                    "id": 7609,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "781:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                        "typeString": "type(string storage pointer)"
                                                    },
                                                    "typeName": "string"
                                                },
                                                "id": 7614,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "781:30:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            ],
                                            "id": 7608,
                                            "name": "setName",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12127,
                                            "src": "773:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory)"
                                            }
                                        },
                                        "id": 7615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "773:39:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7616,
                                    "nodeType": "ExpressionStatement",
                                    "src": "773:39:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "id": 7621,
                                                                "name": "symbol",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7588,
                                                                "src": "857:6:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": null,
                                                                "id": 7619,
                                                                "name": "abi",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12994,
                                                                "src": "840:3:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_abi",
                                                                    "typeString": "abi"
                                                                }
                                                            },
                                                            "id": 7620,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "encodePacked",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": null,
                                                            "src": "840:16:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                "typeString": "function () pure returns (bytes memory)"
                                                            }
                                                        },
                                                        "id": 7622,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "840:24:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes memory"
                                                        }
                                                    ],
                                                    "id": 7618,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "833:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                        "typeString": "type(string storage pointer)"
                                                    },
                                                    "typeName": "string"
                                                },
                                                "id": 7623,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "833:32:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            ],
                                            "id": 7617,
                                            "name": "setSymbol",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12145,
                                            "src": "823:9:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory)"
                                            }
                                        },
                                        "id": 7624,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "823:43:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7625,
                                    "nodeType": "ExpressionStatement",
                                    "src": "823:43:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7627,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": null,
                                "id": 7591,
                                "modifierName": {
                                    "argumentTypes": null,
                                    "id": 7590,
                                    "name": "initializer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 453,
                                    "src": "645:11:20",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "645:11:20"
                            }
                        ],
                        "name": "initialize",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7589,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7582,
                                    "name": "name",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7627,
                                    "src": "577:12:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7581,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "577:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7584,
                                    "name": "issuer",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7627,
                                    "src": "591:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7583,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "591:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7586,
                                    "name": "owner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7627,
                                    "src": "607:13:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7585,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "607:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7588,
                                    "name": "symbol",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7627,
                                    "src": "622:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7587,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "622:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "576:61:20"
                        },
                        "returnParameters": {
                            "id": 7592,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "656:0:20"
                        },
                        "scope": 7906,
                        "src": "557:317:20",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7634,
                            "nodeType": "Block",
                            "src": "933:33:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 7632,
                                        "name": "_issuer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7576,
                                        "src": "951:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 7631,
                                    "id": 7633,
                                    "nodeType": "Return",
                                    "src": "944:14:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7635,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getIssuer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7628,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "900:2:20"
                        },
                        "returnParameters": {
                            "id": 7631,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7630,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7635,
                                    "src": "925:7:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7629,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "925:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "924:9:20"
                        },
                        "scope": 7906,
                        "src": "882:84:20",
                        "stateMutability": "view",
                        "superFunction": 8434,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7655,
                            "nodeType": "Block",
                            "src": "1026:116:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7644,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7641,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "1045:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7642,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "1063:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7643,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1063:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1045:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7645,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1075:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7640,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "1037:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7646,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1037:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7647,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1037:58:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7650,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13087,
                                                        "src": "1120:4:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    ],
                                                    "id": 7649,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "1112:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                },
                                                "id": 7651,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1112:13:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7652,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7637,
                                                "src": "1127:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7648,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12418,
                                            "src": "1106:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 7653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1106:28:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7654,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1106:28:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7656,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "addTotalSupply",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7638,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7637,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7656,
                                    "src": "1002:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7636,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1002:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1001:16:20"
                        },
                        "returnParameters": {
                            "id": 7639,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1026:0:20"
                        },
                        "scope": 7906,
                        "src": "978:164:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8476,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7676,
                            "nodeType": "Block",
                            "src": "1196:124:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7665,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7662,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "1223:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7663,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "1241:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7664,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1241:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1223:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7666,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1253:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7661,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "1215:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7667,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1215:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7668,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1215:58:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7671,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13087,
                                                        "src": "1298:4:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    ],
                                                    "id": 7670,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "1290:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                },
                                                "id": 7672,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1290:13:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7673,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7658,
                                                "src": "1305:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7669,
                                            "name": "_burn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12462,
                                            "src": "1284:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 7674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1284:28:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7675,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1284:28:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7677,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "reduceSupply",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7659,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7658,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7677,
                                    "src": "1172:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7657,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1172:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1171:16:20"
                        },
                        "returnParameters": {
                            "id": 7660,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1196:0:20"
                        },
                        "scope": 7906,
                        "src": "1150:170:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8450,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7697,
                            "nodeType": "Block",
                            "src": "1387:108:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7688,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7685,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "1406:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7686,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "1424:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7687,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1424:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1406:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7689,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1436:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7684,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "1398:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1398:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7691,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1398:58:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7693,
                                                "name": "party",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7679,
                                                "src": "1473:5:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7694,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7681,
                                                "src": "1480:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7692,
                                            "name": "_mint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12418,
                                            "src": "1467:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 7695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1467:20:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7696,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1467:20:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7698,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "addBalance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7682,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7679,
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7698,
                                    "src": "1348:13:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7678,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1348:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7681,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7698,
                                    "src": "1363:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7680,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1363:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1347:31:20"
                        },
                        "returnParameters": {
                            "id": 7683,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1387:0:20"
                        },
                        "scope": 7906,
                        "src": "1328:167:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8471,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7718,
                            "nodeType": "Block",
                            "src": "1565:108:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7709,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7706,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "1584:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7707,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "1602:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7708,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1602:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1584:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7710,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1614:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7705,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "1576:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1576:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7712,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1576:58:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7714,
                                                "name": "party",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7700,
                                                "src": "1651:5:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7715,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7702,
                                                "src": "1658:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7713,
                                            "name": "_burn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12462,
                                            "src": "1645:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 7716,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1645:20:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7717,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1645:20:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7719,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "reduceBalance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7703,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7700,
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7719,
                                    "src": "1526:13:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7699,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1526:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7702,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7719,
                                    "src": "1541:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7701,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1541:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1525:31:20"
                        },
                        "returnParameters": {
                            "id": 7704,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1565:0:20"
                        },
                        "scope": 7906,
                        "src": "1503:170:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8457,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7738,
                            "nodeType": "Block",
                            "src": "1741:111:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7730,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7727,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "1760:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7728,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "1778:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7729,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "1778:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "1760:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7731,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1790:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7726,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "1752:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7732,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1752:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7733,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1752:58:20"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7735,
                                                "name": "party",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7721,
                                                "src": "1838:5:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7734,
                                            "name": "balanceOf",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12173,
                                            "src": "1828:9:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                                "typeString": "function (address) view returns (uint256)"
                                            }
                                        },
                                        "id": 7736,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1828:16:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 7725,
                                    "id": 7737,
                                    "nodeType": "Return",
                                    "src": "1821:23:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7739,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getBalance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7722,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7721,
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7739,
                                    "src": "1701:13:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7720,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1701:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1700:15:20"
                        },
                        "returnParameters": {
                            "id": 7725,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7724,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7739,
                                    "src": "1733:7:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7723,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1733:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1732:9:20"
                        },
                        "scope": 7906,
                        "src": "1681:171:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8464,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7774,
                            "nodeType": "Block",
                            "src": "1953:310:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 7755,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7752,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7741,
                                                            "src": "2074:6:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7751,
                                                        "name": "balanceOf",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12173,
                                                        "src": "2064:9:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 7753,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2064:17:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7754,
                                                    "name": "tokens",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7745,
                                                    "src": "2085:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "2064:27:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 7750,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13010,
                                            "src": "2056:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 7756,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2056:36:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7757,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2056:36:20"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7762,
                                                "name": "sender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7741,
                                                "src": "2148:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7763,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7743,
                                                "src": "2156:8:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7764,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7745,
                                                "src": "2166:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7766,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13087,
                                                        "src": "2182:4:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                            "typeString": "contract Token"
                                                        }
                                                    ],
                                                    "id": 7765,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2174:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                },
                                                "id": 7767,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2174:13:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 7759,
                                                        "name": "_issuingContract",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7578,
                                                        "src": "2114:16:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 7758,
                                                    "name": "ViaBond",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8169,
                                                    "src": "2106:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ViaBond_$8169_$",
                                                        "typeString": "type(contract ViaBond)"
                                                    }
                                                },
                                                "id": 7760,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2106:25:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaBond_$8169",
                                                    "typeString": "contract ViaBond"
                                                }
                                            },
                                            "id": 7761,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transferForward",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 8091,
                                            "src": "2106:41:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$",
                                                "typeString": "function (address,address,uint256,address) external returns (bool)"
                                            }
                                        },
                                        "id": 7768,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2106:82:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "argumentTypes": null,
                                            "hexValue": "66616c7365",
                                            "id": 7771,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2250:5:20",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "false"
                                        },
                                        "functionReturnParameters": 7749,
                                        "id": 7772,
                                        "nodeType": "Return",
                                        "src": "2243:12:20"
                                    },
                                    "id": 7773,
                                    "nodeType": "IfStatement",
                                    "src": "2103:152:20",
                                    "trueBody": {
                                        "expression": {
                                            "argumentTypes": null,
                                            "hexValue": "74727565",
                                            "id": 7769,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2210:4:20",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "true"
                                        },
                                        "functionReturnParameters": 7749,
                                        "id": 7770,
                                        "nodeType": "Return",
                                        "src": "2203:11:20"
                                    }
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7775,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transferFrom",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7746,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7741,
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7775,
                                    "src": "1882:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7740,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1882:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7743,
                                    "name": "receiver",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7775,
                                    "src": "1898:16:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7742,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1898:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7745,
                                    "name": "tokens",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7775,
                                    "src": "1916:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7744,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1916:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1881:50:20"
                        },
                        "returnParameters": {
                            "id": 7749,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7748,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7775,
                                    "src": "1948:4:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7747,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1948:4:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1947:6:20"
                        },
                        "scope": 7906,
                        "src": "1860:403:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 12263,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 7811,
                            "nodeType": "Block",
                            "src": "2367:380:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7790,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7787,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "2386:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7788,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "2404:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7789,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "2404:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "2386:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7791,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2416:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7786,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "2378:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7792,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2378:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7793,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2378:58:20"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 7798,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 7795,
                                                    "name": "sender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7777,
                                                    "src": "2524:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 7794,
                                                "name": "balanceOf",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12173,
                                                "src": "2514:9:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                                    "typeString": "function (address) view returns (uint256)"
                                                }
                                            },
                                            "id": 7796,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2514:17:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 7797,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7781,
                                            "src": "2535:6:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2514:27:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": null,
                                    "id": 7808,
                                    "nodeType": "IfStatement",
                                    "src": "2511:206:20",
                                    "trueBody": {
                                        "id": 7807,
                                        "nodeType": "Block",
                                        "src": "2542:175:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7800,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7777,
                                                            "src": "2654:6:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7801,
                                                            "name": "receiver",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7779,
                                                            "src": "2662:8:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7802,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7781,
                                                            "src": "2672:6:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 7799,
                                                        "name": "_transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12375,
                                                        "src": "2644:9:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 7803,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2644:35:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7804,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2644:35:20"
                                            },
                                            {
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "74727565",
                                                    "id": 7805,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2701:4:20",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 7785,
                                                "id": 7806,
                                                "nodeType": "Return",
                                                "src": "2694:11:20"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "66616c7365",
                                        "id": 7809,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2734:5:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "false"
                                    },
                                    "functionReturnParameters": 7785,
                                    "id": 7810,
                                    "nodeType": "Return",
                                    "src": "2727:12:20"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7812,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transferToken",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7782,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7777,
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7812,
                                    "src": "2294:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7776,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2294:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7779,
                                    "name": "receiver",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7812,
                                    "src": "2310:16:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7778,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2310:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7781,
                                    "name": "tokens",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7812,
                                    "src": "2328:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7780,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2328:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2293:50:20"
                        },
                        "returnParameters": {
                            "id": 7785,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7784,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7812,
                                    "src": "2362:4:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7783,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2362:4:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2361:6:20"
                        },
                        "scope": 7906,
                        "src": "2271:476:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8445,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7838,
                            "nodeType": "Block",
                            "src": "2840:184:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 7825,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 7822,
                                                    "name": "_issuingContract",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7578,
                                                    "src": "2859:16:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "id": 7823,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13007,
                                                        "src": "2877:3:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 7824,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "2877:10:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "2859:28:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "496e76616c696420726571756573746f72",
                                                "id": 7826,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2889:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                },
                                                "value": "Invalid requestor"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                    "typeString": "literal_string \"Invalid requestor\""
                                                }
                                            ],
                                            "id": 7821,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "2851:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7827,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2851:58:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7828,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2851:58:20"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 7830,
                                                "name": "receiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7814,
                                                "src": "2932:8:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 7831,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7816,
                                                "src": "2942:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 7829,
                                            "name": "transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12192,
                                            "src": "2923:8:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) returns (bool)"
                                            }
                                        },
                                        "id": 7832,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2923:26:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "argumentTypes": null,
                                            "hexValue": "66616c7365",
                                            "id": 7835,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3011:5:20",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "false"
                                        },
                                        "functionReturnParameters": 7820,
                                        "id": 7836,
                                        "nodeType": "Return",
                                        "src": "3004:12:20"
                                    },
                                    "id": 7837,
                                    "nodeType": "IfStatement",
                                    "src": "2920:96:20",
                                    "trueBody": {
                                        "expression": {
                                            "argumentTypes": null,
                                            "hexValue": "74727565",
                                            "id": 7833,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2971:4:20",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "true"
                                        },
                                        "functionReturnParameters": 7820,
                                        "id": 7834,
                                        "nodeType": "Return",
                                        "src": "2964:11:20"
                                    }
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7839,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "requestTransfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7817,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7814,
                                    "name": "receiver",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7839,
                                    "src": "2783:16:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7813,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2783:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7816,
                                    "name": "tokens",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7839,
                                    "src": "2801:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7815,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2801:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2782:34:20"
                        },
                        "returnParameters": {
                            "id": 7820,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7819,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7839,
                                    "src": "2835:4:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7818,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2835:4:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2834:6:20"
                        },
                        "scope": 7906,
                        "src": "2758:266:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8485,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 7904,
                            "nodeType": "Block",
                            "src": "3155:564:20",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 7864,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 7859,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                            {
                                                                "argumentTypes": null,
                                                                "expression": {
                                                                    "argumentTypes": null,
                                                                    "id": 7855,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 13007,
                                                                    "src": "3191:3:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 7856,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": null,
                                                                "src": "3191:10:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": null,
                                                                "id": 7853,
                                                                "name": "_factory",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7580,
                                                                "src": "3174:8:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                                                    "typeString": "contract ViaFactory"
                                                                }
                                                            },
                                                            "id": 7854,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getType",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8240,
                                                            "src": "3174:16:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$",
                                                                "typeString": "function (address) view external returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 7857,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3174:28:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "56696143617368",
                                                        "id": 7858,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3206:9:20",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                            "typeString": "literal_string \"ViaCash\""
                                                        },
                                                        "value": "ViaCash"
                                                    },
                                                    "src": "3174:41:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7862,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7845,
                                                            "src": "3249:8:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "id": 7860,
                                                            "name": "_factory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7580,
                                                            "src": "3219:8:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaFactory_$8402",
                                                                "typeString": "contract ViaFactory"
                                                            }
                                                        },
                                                        "id": 7861,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "checkSupportForToken",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8394,
                                                        "src": "3219:29:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                                            "typeString": "function (bytes32) view external returns (bool)"
                                                        }
                                                    },
                                                    "id": 7863,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3219:39:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "3174:84:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "556e737570706f7274656420746f6b656e",
                                                "id": 7865,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3260:19:20",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_35557054842e6bac2d5677ccc2aeb32b43981809d9c333559406d70b18885a3e",
                                                    "typeString": "literal_string \"Unsupported token\""
                                                },
                                                "value": "Unsupported token"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_35557054842e6bac2d5677ccc2aeb32b43981809d9c333559406d70b18885a3e",
                                                    "typeString": "literal_string \"Unsupported token\""
                                                }
                                            ],
                                            "id": 7852,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13010,
                                                13011
                                            ],
                                            "referencedDeclaration": 13011,
                                            "src": "3166:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 7866,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3166:114:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7867,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3166:114:20"
                                },
                                {
                                    "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 7870,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 7868,
                                            "name": "payer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7843,
                                            "src": "3294:5:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 7869,
                                            "name": "_issuer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7576,
                                            "src": "3301:7:20",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3294:14:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 7902,
                                        "nodeType": "Block",
                                        "src": "3515:189:20",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7892,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7841,
                                                            "src": "3575:6:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7893,
                                                            "name": "payer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7843,
                                                            "src": "3583:5:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7894,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7845,
                                                            "src": "3590:8:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7895,
                                                            "name": "cashContract",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7847,
                                                            "src": "3600:12:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "id": 7889,
                                                                    "name": "_issuingContract",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7578,
                                                                    "src": "3541:16:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 7888,
                                                                "name": "ViaBond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8169,
                                                                "src": "3533:7:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ViaBond_$8169_$",
                                                                    "typeString": "type(contract ViaBond)"
                                                                }
                                                            },
                                                            "id": 7890,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3533:25:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaBond_$8169",
                                                                "typeString": "contract ViaBond"
                                                            }
                                                        },
                                                        "id": 7891,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "requestPurchase",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8117,
                                                        "src": "3533:41:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                            "typeString": "function (uint256,address,bytes32,address) external returns (bool)"
                                                        }
                                                    },
                                                    "id": 7896,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3533:80:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "66616c7365",
                                                        "id": 7899,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3687:5:20",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "functionReturnParameters": 7851,
                                                    "id": 7900,
                                                    "nodeType": "Return",
                                                    "src": "3680:12:20"
                                                },
                                                "id": 7901,
                                                "nodeType": "IfStatement",
                                                "src": "3530:162:20",
                                                "trueBody": {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "74727565",
                                                        "id": 7897,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3639:4:20",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "functionReturnParameters": 7851,
                                                    "id": 7898,
                                                    "nodeType": "Return",
                                                    "src": "3632:11:20"
                                                }
                                            }
                                        ]
                                    },
                                    "id": 7903,
                                    "nodeType": "IfStatement",
                                    "src": "3291:413:20",
                                    "trueBody": {
                                        "id": 7887,
                                        "nodeType": "Block",
                                        "src": "3309:192:20",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7875,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7841,
                                                            "src": "3371:6:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7876,
                                                            "name": "payer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7843,
                                                            "src": "3379:5:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "id": 7877,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7845,
                                                            "src": "3386:8:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "id": 7879,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 13087,
                                                                    "src": "3404:4:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Token_$7906",
                                                                        "typeString": "contract Token"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Token_$7906",
                                                                        "typeString": "contract Token"
                                                                    }
                                                                ],
                                                                "id": 7878,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3396:7:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": "address"
                                                            },
                                                            "id": 7880,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3396:13:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                {
                                                                    "argumentTypes": null,
                                                                    "id": 7872,
                                                                    "name": "_issuingContract",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7578,
                                                                    "src": "3335:16:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 7871,
                                                                "name": "ViaBond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8169,
                                                                "src": "3327:7:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ViaBond_$8169_$",
                                                                    "typeString": "type(contract ViaBond)"
                                                                }
                                                            },
                                                            "id": 7873,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3327:25:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaBond_$8169",
                                                                "typeString": "contract ViaBond"
                                                            }
                                                        },
                                                        "id": 7874,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "requestRedemption",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8130,
                                                        "src": "3327:43:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                            "typeString": "function (uint256,address,bytes32,address) external returns (bool)"
                                                        }
                                                    },
                                                    "id": 7881,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3327:83:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "66616c7365",
                                                        "id": 7884,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3484:5:20",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "functionReturnParameters": 7851,
                                                    "id": 7885,
                                                    "nodeType": "Return",
                                                    "src": "3477:12:20"
                                                },
                                                "id": 7886,
                                                "nodeType": "IfStatement",
                                                "src": "3324:165:20",
                                                "trueBody": {
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "74727565",
                                                        "id": 7882,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3436:4:20",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "functionReturnParameters": 7851,
                                                    "id": 7883,
                                                    "nodeType": "Return",
                                                    "src": "3429:11:20"
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 7905,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "requestTransaction",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7848,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7841,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7905,
                                    "src": "3062:14:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 7840,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3062:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7843,
                                    "name": "payer",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7905,
                                    "src": "3078:13:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7842,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3078:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7845,
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7905,
                                    "src": "3093:16:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7844,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3093:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7847,
                                    "name": "cashContract",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7905,
                                    "src": "3111:20:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7846,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3111:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3061:71:20"
                        },
                        "returnParameters": {
                            "id": 7851,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7850,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7905,
                                    "src": "3150:4:20",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 7849,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3150:4:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3149:6:20"
                        },
                        "scope": 7906,
                        "src": "3034:685:20",
                        "stateMutability": "nonpayable",
                        "superFunction": 8498,
                        "visibility": "external"
                    }
                ],
                "scope": 7907,
                "src": "289:3441:20"
            }
        ],
        "src": "114:3618:20"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/Token.sol",
            "exportedSymbols": {
                "Token": [
                    7906
                ]
            }
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "0.5",
                        ".7"
                    ]
                },
                "id": 7566,
                "name": "PragmaDirective",
                "src": "114:22:20"
            },
            {
                "attributes": {
                    "SourceUnit": 8170,
                    "absolutePath": "project:/contracts/interfaces/ViaBond.sol",
                    "file": "./interfaces/ViaBond.sol",
                    "scope": 7907,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7567,
                "name": "ImportDirective",
                "src": "140:34:20"
            },
            {
                "attributes": {
                    "SourceUnit": 8500,
                    "absolutePath": "project:/contracts/interfaces/ViaToken.sol",
                    "file": "./interfaces/ViaToken.sol",
                    "scope": 7907,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7568,
                "name": "ImportDirective",
                "src": "176:35:20"
            },
            {
                "attributes": {
                    "SourceUnit": 8403,
                    "absolutePath": "project:/contracts/interfaces/ViaFactory.sol",
                    "file": "./interfaces/ViaFactory.sol",
                    "scope": 7907,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7569,
                "name": "ImportDirective",
                "src": "213:37:20"
            },
            {
                "attributes": {
                    "SourceUnit": 12539,
                    "absolutePath": "project:/contracts/utilities/ERC20.sol",
                    "file": "./utilities/ERC20.sol",
                    "scope": 7907,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 7570,
                "name": "ImportDirective",
                "src": "254:31:20"
            },
            {
                "attributes": {
                    "contractDependencies": [
                        29,
                        409,
                        478,
                        8499,
                        12538
                    ],
                    "contractKind": "contract",
                    "documentation": null,
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        7906,
                        12538,
                        409,
                        29,
                        478,
                        8499
                    ],
                    "name": "Token",
                    "scope": 7907
                },
                "children": [
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ViaToken",
                                    "referencedDeclaration": 8499,
                                    "type": "contract ViaToken"
                                },
                                "id": 7571,
                                "name": "UserDefinedTypeName",
                                "src": "307:8:20"
                            }
                        ],
                        "id": 7572,
                        "name": "InheritanceSpecifier",
                        "src": "307:8:20"
                    },
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ERC20",
                                    "referencedDeclaration": 12538,
                                    "type": "contract ERC20"
                                },
                                "id": 7573,
                                "name": "UserDefinedTypeName",
                                "src": "317:5:20"
                            }
                        ],
                        "id": 7574,
                        "name": "InheritanceSpecifier",
                        "src": "317:5:20"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_issuer",
                            "scope": 7906,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 7575,
                                "name": "ElementaryTypeName",
                                "src": "426:7:20"
                            }
                        ],
                        "id": 7576,
                        "name": "VariableDeclaration",
                        "src": "426:23:20"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_issuingContract",
                            "scope": 7906,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 7577,
                                "name": "ElementaryTypeName",
                                "src": "456:7:20"
                            }
                        ],
                        "id": 7578,
                        "name": "VariableDeclaration",
                        "src": "456:32:20"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_factory",
                            "scope": 7906,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "contract ViaFactory",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "ViaFactory",
                                    "referencedDeclaration": 8402,
                                    "type": "contract ViaFactory"
                                },
                                "id": 7579,
                                "name": "UserDefinedTypeName",
                                "src": "495:10:20"
                            }
                        ],
                        "id": 7580,
                        "name": "VariableDeclaration",
                        "src": "495:27:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "initialize",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "name",
                                            "scope": 7627,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 7581,
                                                "name": "ElementaryTypeName",
                                                "src": "577:7:20"
                                            }
                                        ],
                                        "id": 7582,
                                        "name": "VariableDeclaration",
                                        "src": "577:12:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "issuer",
                                            "scope": 7627,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7583,
                                                "name": "ElementaryTypeName",
                                                "src": "591:7:20"
                                            }
                                        ],
                                        "id": 7584,
                                        "name": "VariableDeclaration",
                                        "src": "591:14:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "owner",
                                            "scope": 7627,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7585,
                                                "name": "ElementaryTypeName",
                                                "src": "607:7:20"
                                            }
                                        ],
                                        "id": 7586,
                                        "name": "VariableDeclaration",
                                        "src": "607:13:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "symbol",
                                            "scope": 7627,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 7587,
                                                "name": "ElementaryTypeName",
                                                "src": "622:7:20"
                                            }
                                        ],
                                        "id": 7588,
                                        "name": "VariableDeclaration",
                                        "src": "622:14:20"
                                    }
                                ],
                                "id": 7589,
                                "name": "ParameterList",
                                "src": "576:61:20"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7592,
                                "name": "ParameterList",
                                "src": "656:0:20"
                            },
                            {
                                "attributes": {
                                    "arguments": null
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "argumentTypes": null,
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 453,
                                            "type": "modifier ()",
                                            "value": "initializer"
                                        },
                                        "id": 7590,
                                        "name": "Identifier",
                                        "src": "645:11:20"
                                    }
                                ],
                                "id": 7591,
                                "name": "ModifierInvocation",
                                "src": "645:11:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "contract ViaFactory"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7580,
                                                            "type": "contract ViaFactory",
                                                            "value": "_factory"
                                                        },
                                                        "id": 7593,
                                                        "name": "Identifier",
                                                        "src": "667:8:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "contract ViaFactory",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 8402,
                                                                    "type": "type(contract ViaFactory)",
                                                                    "value": "ViaFactory"
                                                                },
                                                                "id": 7594,
                                                                "name": "Identifier",
                                                                "src": "678:10:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7595,
                                                                        "name": "Identifier",
                                                                        "src": "689:3:20"
                                                                    }
                                                                ],
                                                                "id": 7596,
                                                                "name": "MemberAccess",
                                                                "src": "689:10:20"
                                                            }
                                                        ],
                                                        "id": 7597,
                                                        "name": "FunctionCall",
                                                        "src": "678:22:20"
                                                    }
                                                ],
                                                "id": 7598,
                                                "name": "Assignment",
                                                "src": "667:33:20"
                                            }
                                        ],
                                        "id": 7599,
                                        "name": "ExpressionStatement",
                                        "src": "667:33:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7576,
                                                            "type": "address",
                                                            "value": "_issuer"
                                                        },
                                                        "id": 7600,
                                                        "name": "Identifier",
                                                        "src": "711:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7584,
                                                            "type": "address",
                                                            "value": "issuer"
                                                        },
                                                        "id": 7601,
                                                        "name": "Identifier",
                                                        "src": "721:6:20"
                                                    }
                                                ],
                                                "id": 7602,
                                                "name": "Assignment",
                                                "src": "711:16:20"
                                            }
                                        ],
                                        "id": 7603,
                                        "name": "ExpressionStatement",
                                        "src": "711:16:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7578,
                                                            "type": "address",
                                                            "value": "_issuingContract"
                                                        },
                                                        "id": 7604,
                                                        "name": "Identifier",
                                                        "src": "738:16:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7586,
                                                            "type": "address",
                                                            "value": "owner"
                                                        },
                                                        "id": 7605,
                                                        "name": "Identifier",
                                                        "src": "757:5:20"
                                                    }
                                                ],
                                                "id": 7606,
                                                "name": "Assignment",
                                                "src": "738:24:20"
                                            }
                                        ],
                                        "id": 7607,
                                        "name": "ExpressionStatement",
                                        "src": "738:24:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12127,
                                                            "type": "function (string memory)",
                                                            "value": "setName"
                                                        },
                                                        "id": 7608,
                                                        "name": "Identifier",
                                                        "src": "773:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "string memory",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(string storage pointer)",
                                                                    "value": "string"
                                                                },
                                                                "id": 7609,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "781:6:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "bytes memory",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "member_name": "encodePacked",
                                                                            "referencedDeclaration": null,
                                                                            "type": "function () pure returns (bytes memory)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12994,
                                                                                    "type": "abi",
                                                                                    "value": "abi"
                                                                                },
                                                                                "id": 7610,
                                                                                "name": "Identifier",
                                                                                "src": "788:3:20"
                                                                            }
                                                                        ],
                                                                        "id": 7611,
                                                                        "name": "MemberAccess",
                                                                        "src": "788:16:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7582,
                                                                            "type": "bytes32",
                                                                            "value": "name"
                                                                        },
                                                                        "id": 7612,
                                                                        "name": "Identifier",
                                                                        "src": "805:4:20"
                                                                    }
                                                                ],
                                                                "id": 7613,
                                                                "name": "FunctionCall",
                                                                "src": "788:22:20"
                                                            }
                                                        ],
                                                        "id": 7614,
                                                        "name": "FunctionCall",
                                                        "src": "781:30:20"
                                                    }
                                                ],
                                                "id": 7615,
                                                "name": "FunctionCall",
                                                "src": "773:39:20"
                                            }
                                        ],
                                        "id": 7616,
                                        "name": "ExpressionStatement",
                                        "src": "773:39:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12145,
                                                            "type": "function (string memory)",
                                                            "value": "setSymbol"
                                                        },
                                                        "id": 7617,
                                                        "name": "Identifier",
                                                        "src": "823:9:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "string memory",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(string storage pointer)",
                                                                    "value": "string"
                                                                },
                                                                "id": 7618,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "833:6:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "bytes memory",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "member_name": "encodePacked",
                                                                            "referencedDeclaration": null,
                                                                            "type": "function () pure returns (bytes memory)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12994,
                                                                                    "type": "abi",
                                                                                    "value": "abi"
                                                                                },
                                                                                "id": 7619,
                                                                                "name": "Identifier",
                                                                                "src": "840:3:20"
                                                                            }
                                                                        ],
                                                                        "id": 7620,
                                                                        "name": "MemberAccess",
                                                                        "src": "840:16:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7588,
                                                                            "type": "bytes32",
                                                                            "value": "symbol"
                                                                        },
                                                                        "id": 7621,
                                                                        "name": "Identifier",
                                                                        "src": "857:6:20"
                                                                    }
                                                                ],
                                                                "id": 7622,
                                                                "name": "FunctionCall",
                                                                "src": "840:24:20"
                                                            }
                                                        ],
                                                        "id": 7623,
                                                        "name": "FunctionCall",
                                                        "src": "833:32:20"
                                                    }
                                                ],
                                                "id": 7624,
                                                "name": "FunctionCall",
                                                "src": "823:43:20"
                                            }
                                        ],
                                        "id": 7625,
                                        "name": "ExpressionStatement",
                                        "src": "823:43:20"
                                    }
                                ],
                                "id": 7626,
                                "name": "Block",
                                "src": "656:218:20"
                            }
                        ],
                        "id": 7627,
                        "name": "FunctionDefinition",
                        "src": "557:317:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getIssuer",
                            "scope": 7906,
                            "stateMutability": "view",
                            "superFunction": 8434,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7628,
                                "name": "ParameterList",
                                "src": "900:2:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7635,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7629,
                                                "name": "ElementaryTypeName",
                                                "src": "925:7:20"
                                            }
                                        ],
                                        "id": 7630,
                                        "name": "VariableDeclaration",
                                        "src": "925:7:20"
                                    }
                                ],
                                "id": 7631,
                                "name": "ParameterList",
                                "src": "924:9:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 7631
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 7576,
                                                    "type": "address",
                                                    "value": "_issuer"
                                                },
                                                "id": 7632,
                                                "name": "Identifier",
                                                "src": "951:7:20"
                                            }
                                        ],
                                        "id": 7633,
                                        "name": "Return",
                                        "src": "944:14:20"
                                    }
                                ],
                                "id": 7634,
                                "name": "Block",
                                "src": "933:33:20"
                            }
                        ],
                        "id": 7635,
                        "name": "FunctionDefinition",
                        "src": "882:84:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "addTotalSupply",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8476,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 7656,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7636,
                                                "name": "ElementaryTypeName",
                                                "src": "1002:7:20"
                                            }
                                        ],
                                        "id": 7637,
                                        "name": "VariableDeclaration",
                                        "src": "1002:14:20"
                                    }
                                ],
                                "id": 7638,
                                "name": "ParameterList",
                                "src": "1001:16:20"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7639,
                                "name": "ParameterList",
                                "src": "1026:0:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7640,
                                                        "name": "Identifier",
                                                        "src": "1037:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7641,
                                                                "name": "Identifier",
                                                                "src": "1045:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7642,
                                                                        "name": "Identifier",
                                                                        "src": "1063:3:20"
                                                                    }
                                                                ],
                                                                "id": 7643,
                                                                "name": "MemberAccess",
                                                                "src": "1063:10:20"
                                                            }
                                                        ],
                                                        "id": 7644,
                                                        "name": "BinaryOperation",
                                                        "src": "1045:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7645,
                                                        "name": "Literal",
                                                        "src": "1075:19:20"
                                                    }
                                                ],
                                                "id": 7646,
                                                "name": "FunctionCall",
                                                "src": "1037:58:20"
                                            }
                                        ],
                                        "id": 7647,
                                        "name": "ExpressionStatement",
                                        "src": "1037:58:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12418,
                                                            "type": "function (address,uint256)",
                                                            "value": "_mint"
                                                        },
                                                        "id": 7648,
                                                        "name": "Identifier",
                                                        "src": "1106:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                                            "typeString": "contract Token"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)",
                                                                    "value": "address"
                                                                },
                                                                "id": 7649,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1112:7:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 13087,
                                                                    "type": "contract Token",
                                                                    "value": "this"
                                                                },
                                                                "id": 7650,
                                                                "name": "Identifier",
                                                                "src": "1120:4:20"
                                                            }
                                                        ],
                                                        "id": 7651,
                                                        "name": "FunctionCall",
                                                        "src": "1112:13:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7637,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 7652,
                                                        "name": "Identifier",
                                                        "src": "1127:6:20"
                                                    }
                                                ],
                                                "id": 7653,
                                                "name": "FunctionCall",
                                                "src": "1106:28:20"
                                            }
                                        ],
                                        "id": 7654,
                                        "name": "ExpressionStatement",
                                        "src": "1106:28:20"
                                    }
                                ],
                                "id": 7655,
                                "name": "Block",
                                "src": "1026:116:20"
                            }
                        ],
                        "id": 7656,
                        "name": "FunctionDefinition",
                        "src": "978:164:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "reduceSupply",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8450,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 7677,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7657,
                                                "name": "ElementaryTypeName",
                                                "src": "1172:7:20"
                                            }
                                        ],
                                        "id": 7658,
                                        "name": "VariableDeclaration",
                                        "src": "1172:14:20"
                                    }
                                ],
                                "id": 7659,
                                "name": "ParameterList",
                                "src": "1171:16:20"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7660,
                                "name": "ParameterList",
                                "src": "1196:0:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7661,
                                                        "name": "Identifier",
                                                        "src": "1215:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7662,
                                                                "name": "Identifier",
                                                                "src": "1223:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7663,
                                                                        "name": "Identifier",
                                                                        "src": "1241:3:20"
                                                                    }
                                                                ],
                                                                "id": 7664,
                                                                "name": "MemberAccess",
                                                                "src": "1241:10:20"
                                                            }
                                                        ],
                                                        "id": 7665,
                                                        "name": "BinaryOperation",
                                                        "src": "1223:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7666,
                                                        "name": "Literal",
                                                        "src": "1253:19:20"
                                                    }
                                                ],
                                                "id": 7667,
                                                "name": "FunctionCall",
                                                "src": "1215:58:20"
                                            }
                                        ],
                                        "id": 7668,
                                        "name": "ExpressionStatement",
                                        "src": "1215:58:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12462,
                                                            "type": "function (address,uint256)",
                                                            "value": "_burn"
                                                        },
                                                        "id": 7669,
                                                        "name": "Identifier",
                                                        "src": "1284:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                                            "typeString": "contract Token"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)",
                                                                    "value": "address"
                                                                },
                                                                "id": 7670,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1290:7:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 13087,
                                                                    "type": "contract Token",
                                                                    "value": "this"
                                                                },
                                                                "id": 7671,
                                                                "name": "Identifier",
                                                                "src": "1298:4:20"
                                                            }
                                                        ],
                                                        "id": 7672,
                                                        "name": "FunctionCall",
                                                        "src": "1290:13:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7658,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 7673,
                                                        "name": "Identifier",
                                                        "src": "1305:6:20"
                                                    }
                                                ],
                                                "id": 7674,
                                                "name": "FunctionCall",
                                                "src": "1284:28:20"
                                            }
                                        ],
                                        "id": 7675,
                                        "name": "ExpressionStatement",
                                        "src": "1284:28:20"
                                    }
                                ],
                                "id": 7676,
                                "name": "Block",
                                "src": "1196:124:20"
                            }
                        ],
                        "id": 7677,
                        "name": "FunctionDefinition",
                        "src": "1150:170:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "addBalance",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8471,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "party",
                                            "scope": 7698,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7678,
                                                "name": "ElementaryTypeName",
                                                "src": "1348:7:20"
                                            }
                                        ],
                                        "id": 7679,
                                        "name": "VariableDeclaration",
                                        "src": "1348:13:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 7698,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7680,
                                                "name": "ElementaryTypeName",
                                                "src": "1363:7:20"
                                            }
                                        ],
                                        "id": 7681,
                                        "name": "VariableDeclaration",
                                        "src": "1363:14:20"
                                    }
                                ],
                                "id": 7682,
                                "name": "ParameterList",
                                "src": "1347:31:20"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7683,
                                "name": "ParameterList",
                                "src": "1387:0:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7684,
                                                        "name": "Identifier",
                                                        "src": "1398:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7685,
                                                                "name": "Identifier",
                                                                "src": "1406:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7686,
                                                                        "name": "Identifier",
                                                                        "src": "1424:3:20"
                                                                    }
                                                                ],
                                                                "id": 7687,
                                                                "name": "MemberAccess",
                                                                "src": "1424:10:20"
                                                            }
                                                        ],
                                                        "id": 7688,
                                                        "name": "BinaryOperation",
                                                        "src": "1406:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7689,
                                                        "name": "Literal",
                                                        "src": "1436:19:20"
                                                    }
                                                ],
                                                "id": 7690,
                                                "name": "FunctionCall",
                                                "src": "1398:58:20"
                                            }
                                        ],
                                        "id": 7691,
                                        "name": "ExpressionStatement",
                                        "src": "1398:58:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12418,
                                                            "type": "function (address,uint256)",
                                                            "value": "_mint"
                                                        },
                                                        "id": 7692,
                                                        "name": "Identifier",
                                                        "src": "1467:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7679,
                                                            "type": "address",
                                                            "value": "party"
                                                        },
                                                        "id": 7693,
                                                        "name": "Identifier",
                                                        "src": "1473:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7681,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 7694,
                                                        "name": "Identifier",
                                                        "src": "1480:6:20"
                                                    }
                                                ],
                                                "id": 7695,
                                                "name": "FunctionCall",
                                                "src": "1467:20:20"
                                            }
                                        ],
                                        "id": 7696,
                                        "name": "ExpressionStatement",
                                        "src": "1467:20:20"
                                    }
                                ],
                                "id": 7697,
                                "name": "Block",
                                "src": "1387:108:20"
                            }
                        ],
                        "id": 7698,
                        "name": "FunctionDefinition",
                        "src": "1328:167:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "reduceBalance",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8457,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "party",
                                            "scope": 7719,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7699,
                                                "name": "ElementaryTypeName",
                                                "src": "1526:7:20"
                                            }
                                        ],
                                        "id": 7700,
                                        "name": "VariableDeclaration",
                                        "src": "1526:13:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 7719,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7701,
                                                "name": "ElementaryTypeName",
                                                "src": "1541:7:20"
                                            }
                                        ],
                                        "id": 7702,
                                        "name": "VariableDeclaration",
                                        "src": "1541:14:20"
                                    }
                                ],
                                "id": 7703,
                                "name": "ParameterList",
                                "src": "1525:31:20"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 7704,
                                "name": "ParameterList",
                                "src": "1565:0:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7705,
                                                        "name": "Identifier",
                                                        "src": "1576:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7706,
                                                                "name": "Identifier",
                                                                "src": "1584:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7707,
                                                                        "name": "Identifier",
                                                                        "src": "1602:3:20"
                                                                    }
                                                                ],
                                                                "id": 7708,
                                                                "name": "MemberAccess",
                                                                "src": "1602:10:20"
                                                            }
                                                        ],
                                                        "id": 7709,
                                                        "name": "BinaryOperation",
                                                        "src": "1584:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7710,
                                                        "name": "Literal",
                                                        "src": "1614:19:20"
                                                    }
                                                ],
                                                "id": 7711,
                                                "name": "FunctionCall",
                                                "src": "1576:58:20"
                                            }
                                        ],
                                        "id": 7712,
                                        "name": "ExpressionStatement",
                                        "src": "1576:58:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12462,
                                                            "type": "function (address,uint256)",
                                                            "value": "_burn"
                                                        },
                                                        "id": 7713,
                                                        "name": "Identifier",
                                                        "src": "1645:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7700,
                                                            "type": "address",
                                                            "value": "party"
                                                        },
                                                        "id": 7714,
                                                        "name": "Identifier",
                                                        "src": "1651:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7702,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 7715,
                                                        "name": "Identifier",
                                                        "src": "1658:6:20"
                                                    }
                                                ],
                                                "id": 7716,
                                                "name": "FunctionCall",
                                                "src": "1645:20:20"
                                            }
                                        ],
                                        "id": 7717,
                                        "name": "ExpressionStatement",
                                        "src": "1645:20:20"
                                    }
                                ],
                                "id": 7718,
                                "name": "Block",
                                "src": "1565:108:20"
                            }
                        ],
                        "id": 7719,
                        "name": "FunctionDefinition",
                        "src": "1503:170:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getBalance",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8464,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "party",
                                            "scope": 7739,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7720,
                                                "name": "ElementaryTypeName",
                                                "src": "1701:7:20"
                                            }
                                        ],
                                        "id": 7721,
                                        "name": "VariableDeclaration",
                                        "src": "1701:13:20"
                                    }
                                ],
                                "id": 7722,
                                "name": "ParameterList",
                                "src": "1700:15:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7739,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7723,
                                                "name": "ElementaryTypeName",
                                                "src": "1733:7:20"
                                            }
                                        ],
                                        "id": 7724,
                                        "name": "VariableDeclaration",
                                        "src": "1733:7:20"
                                    }
                                ],
                                "id": 7725,
                                "name": "ParameterList",
                                "src": "1732:9:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7726,
                                                        "name": "Identifier",
                                                        "src": "1752:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7727,
                                                                "name": "Identifier",
                                                                "src": "1760:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7728,
                                                                        "name": "Identifier",
                                                                        "src": "1778:3:20"
                                                                    }
                                                                ],
                                                                "id": 7729,
                                                                "name": "MemberAccess",
                                                                "src": "1778:10:20"
                                                            }
                                                        ],
                                                        "id": 7730,
                                                        "name": "BinaryOperation",
                                                        "src": "1760:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7731,
                                                        "name": "Literal",
                                                        "src": "1790:19:20"
                                                    }
                                                ],
                                                "id": 7732,
                                                "name": "FunctionCall",
                                                "src": "1752:58:20"
                                            }
                                        ],
                                        "id": 7733,
                                        "name": "ExpressionStatement",
                                        "src": "1752:58:20"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 7725
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12173,
                                                            "type": "function (address) view returns (uint256)",
                                                            "value": "balanceOf"
                                                        },
                                                        "id": 7734,
                                                        "name": "Identifier",
                                                        "src": "1828:9:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7721,
                                                            "type": "address",
                                                            "value": "party"
                                                        },
                                                        "id": 7735,
                                                        "name": "Identifier",
                                                        "src": "1838:5:20"
                                                    }
                                                ],
                                                "id": 7736,
                                                "name": "FunctionCall",
                                                "src": "1828:16:20"
                                            }
                                        ],
                                        "id": 7737,
                                        "name": "Return",
                                        "src": "1821:23:20"
                                    }
                                ],
                                "id": 7738,
                                "name": "Block",
                                "src": "1741:111:20"
                            }
                        ],
                        "id": 7739,
                        "name": "FunctionDefinition",
                        "src": "1681:171:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transferFrom",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 12263,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "sender",
                                            "scope": 7775,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7740,
                                                "name": "ElementaryTypeName",
                                                "src": "1882:7:20"
                                            }
                                        ],
                                        "id": 7741,
                                        "name": "VariableDeclaration",
                                        "src": "1882:14:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "receiver",
                                            "scope": 7775,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7742,
                                                "name": "ElementaryTypeName",
                                                "src": "1898:7:20"
                                            }
                                        ],
                                        "id": 7743,
                                        "name": "VariableDeclaration",
                                        "src": "1898:16:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "tokens",
                                            "scope": 7775,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7744,
                                                "name": "ElementaryTypeName",
                                                "src": "1916:7:20"
                                            }
                                        ],
                                        "id": 7745,
                                        "name": "VariableDeclaration",
                                        "src": "1916:14:20"
                                    }
                                ],
                                "id": 7746,
                                "name": "ParameterList",
                                "src": "1881:50:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7775,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 7747,
                                                "name": "ElementaryTypeName",
                                                "src": "1948:4:20"
                                            }
                                        ],
                                        "id": 7748,
                                        "name": "VariableDeclaration",
                                        "src": "1948:4:20"
                                    }
                                ],
                                "id": 7749,
                                "name": "ParameterList",
                                "src": "1947:6:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13010,
                                                            "type": "function (bool) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7750,
                                                        "name": "Identifier",
                                                        "src": "2056:7:20"
                                                    },
                                                    {
                                                        "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,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12173,
                                                                            "type": "function (address) view returns (uint256)",
                                                                            "value": "balanceOf"
                                                                        },
                                                                        "id": 7751,
                                                                        "name": "Identifier",
                                                                        "src": "2064:9:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7741,
                                                                            "type": "address",
                                                                            "value": "sender"
                                                                        },
                                                                        "id": 7752,
                                                                        "name": "Identifier",
                                                                        "src": "2074:6:20"
                                                                    }
                                                                ],
                                                                "id": 7753,
                                                                "name": "FunctionCall",
                                                                "src": "2064:17:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7745,
                                                                    "type": "uint256",
                                                                    "value": "tokens"
                                                                },
                                                                "id": 7754,
                                                                "name": "Identifier",
                                                                "src": "2085:6:20"
                                                            }
                                                        ],
                                                        "id": 7755,
                                                        "name": "BinaryOperation",
                                                        "src": "2064:27:20"
                                                    }
                                                ],
                                                "id": 7756,
                                                "name": "FunctionCall",
                                                "src": "2056:36:20"
                                            }
                                        ],
                                        "id": 7757,
                                        "name": "ExpressionStatement",
                                        "src": "2056:36:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transferForward",
                                                            "referencedDeclaration": 8091,
                                                            "type": "function (address,address,uint256,address) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "contract ViaBond",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 8169,
                                                                            "type": "type(contract ViaBond)",
                                                                            "value": "ViaBond"
                                                                        },
                                                                        "id": 7758,
                                                                        "name": "Identifier",
                                                                        "src": "2106:7:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7578,
                                                                            "type": "address",
                                                                            "value": "_issuingContract"
                                                                        },
                                                                        "id": 7759,
                                                                        "name": "Identifier",
                                                                        "src": "2114:16:20"
                                                                    }
                                                                ],
                                                                "id": 7760,
                                                                "name": "FunctionCall",
                                                                "src": "2106:25:20"
                                                            }
                                                        ],
                                                        "id": 7761,
                                                        "name": "MemberAccess",
                                                        "src": "2106:41:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7741,
                                                            "type": "address",
                                                            "value": "sender"
                                                        },
                                                        "id": 7762,
                                                        "name": "Identifier",
                                                        "src": "2148:6:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7743,
                                                            "type": "address",
                                                            "value": "receiver"
                                                        },
                                                        "id": 7763,
                                                        "name": "Identifier",
                                                        "src": "2156:8:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7745,
                                                            "type": "uint256",
                                                            "value": "tokens"
                                                        },
                                                        "id": 7764,
                                                        "name": "Identifier",
                                                        "src": "2166:6:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                                            "typeString": "contract Token"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)",
                                                                    "value": "address"
                                                                },
                                                                "id": 7765,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "2174:7:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 13087,
                                                                    "type": "contract Token",
                                                                    "value": "this"
                                                                },
                                                                "id": 7766,
                                                                "name": "Identifier",
                                                                "src": "2182:4:20"
                                                            }
                                                        ],
                                                        "id": 7767,
                                                        "name": "FunctionCall",
                                                        "src": "2174:13:20"
                                                    }
                                                ],
                                                "id": 7768,
                                                "name": "FunctionCall",
                                                "src": "2106:82:20"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 7749
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "74727565",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "true"
                                                        },
                                                        "id": 7769,
                                                        "name": "Literal",
                                                        "src": "2210:4:20"
                                                    }
                                                ],
                                                "id": 7770,
                                                "name": "Return",
                                                "src": "2203:11:20"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 7749
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "66616c7365",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "false"
                                                        },
                                                        "id": 7771,
                                                        "name": "Literal",
                                                        "src": "2250:5:20"
                                                    }
                                                ],
                                                "id": 7772,
                                                "name": "Return",
                                                "src": "2243:12:20"
                                            }
                                        ],
                                        "id": 7773,
                                        "name": "IfStatement",
                                        "src": "2103:152:20"
                                    }
                                ],
                                "id": 7774,
                                "name": "Block",
                                "src": "1953:310:20"
                            }
                        ],
                        "id": 7775,
                        "name": "FunctionDefinition",
                        "src": "1860:403:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transferToken",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8445,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "sender",
                                            "scope": 7812,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7776,
                                                "name": "ElementaryTypeName",
                                                "src": "2294:7:20"
                                            }
                                        ],
                                        "id": 7777,
                                        "name": "VariableDeclaration",
                                        "src": "2294:14:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "receiver",
                                            "scope": 7812,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7778,
                                                "name": "ElementaryTypeName",
                                                "src": "2310:7:20"
                                            }
                                        ],
                                        "id": 7779,
                                        "name": "VariableDeclaration",
                                        "src": "2310:16:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "tokens",
                                            "scope": 7812,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7780,
                                                "name": "ElementaryTypeName",
                                                "src": "2328:7:20"
                                            }
                                        ],
                                        "id": 7781,
                                        "name": "VariableDeclaration",
                                        "src": "2328:14:20"
                                    }
                                ],
                                "id": 7782,
                                "name": "ParameterList",
                                "src": "2293:50:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7812,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 7783,
                                                "name": "ElementaryTypeName",
                                                "src": "2362:4:20"
                                            }
                                        ],
                                        "id": 7784,
                                        "name": "VariableDeclaration",
                                        "src": "2362:4:20"
                                    }
                                ],
                                "id": 7785,
                                "name": "ParameterList",
                                "src": "2361:6:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7786,
                                                        "name": "Identifier",
                                                        "src": "2378:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7787,
                                                                "name": "Identifier",
                                                                "src": "2386:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7788,
                                                                        "name": "Identifier",
                                                                        "src": "2404:3:20"
                                                                    }
                                                                ],
                                                                "id": 7789,
                                                                "name": "MemberAccess",
                                                                "src": "2404:10:20"
                                                            }
                                                        ],
                                                        "id": 7790,
                                                        "name": "BinaryOperation",
                                                        "src": "2386:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7791,
                                                        "name": "Literal",
                                                        "src": "2416:19:20"
                                                    }
                                                ],
                                                "id": 7792,
                                                "name": "FunctionCall",
                                                "src": "2378:58:20"
                                            }
                                        ],
                                        "id": 7793,
                                        "name": "ExpressionStatement",
                                        "src": "2378:58:20"
                                    },
                                    {
                                        "attributes": {
                                            "falseBody": null
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">=",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12173,
                                                                    "type": "function (address) view returns (uint256)",
                                                                    "value": "balanceOf"
                                                                },
                                                                "id": 7794,
                                                                "name": "Identifier",
                                                                "src": "2514:9:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7777,
                                                                    "type": "address",
                                                                    "value": "sender"
                                                                },
                                                                "id": 7795,
                                                                "name": "Identifier",
                                                                "src": "2524:6:20"
                                                            }
                                                        ],
                                                        "id": 7796,
                                                        "name": "FunctionCall",
                                                        "src": "2514:17:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7781,
                                                            "type": "uint256",
                                                            "value": "tokens"
                                                        },
                                                        "id": 7797,
                                                        "name": "Identifier",
                                                        "src": "2535:6:20"
                                                    }
                                                ],
                                                "id": 7798,
                                                "name": "BinaryOperation",
                                                "src": "2514:27:20"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12375,
                                                                            "type": "function (address,address,uint256)",
                                                                            "value": "_transfer"
                                                                        },
                                                                        "id": 7799,
                                                                        "name": "Identifier",
                                                                        "src": "2644:9:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7777,
                                                                            "type": "address",
                                                                            "value": "sender"
                                                                        },
                                                                        "id": 7800,
                                                                        "name": "Identifier",
                                                                        "src": "2654:6:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7779,
                                                                            "type": "address",
                                                                            "value": "receiver"
                                                                        },
                                                                        "id": 7801,
                                                                        "name": "Identifier",
                                                                        "src": "2662:8:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7781,
                                                                            "type": "uint256",
                                                                            "value": "tokens"
                                                                        },
                                                                        "id": 7802,
                                                                        "name": "Identifier",
                                                                        "src": "2672:6:20"
                                                                    }
                                                                ],
                                                                "id": 7803,
                                                                "name": "FunctionCall",
                                                                "src": "2644:35:20"
                                                            }
                                                        ],
                                                        "id": 7804,
                                                        "name": "ExpressionStatement",
                                                        "src": "2644:35:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "functionReturnParameters": 7785
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "74727565",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "bool",
                                                                    "type": "bool",
                                                                    "value": "true"
                                                                },
                                                                "id": 7805,
                                                                "name": "Literal",
                                                                "src": "2701:4:20"
                                                            }
                                                        ],
                                                        "id": 7806,
                                                        "name": "Return",
                                                        "src": "2694:11:20"
                                                    }
                                                ],
                                                "id": 7807,
                                                "name": "Block",
                                                "src": "2542:175:20"
                                            }
                                        ],
                                        "id": 7808,
                                        "name": "IfStatement",
                                        "src": "2511:206:20"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 7785
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "66616c7365",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "false"
                                                },
                                                "id": 7809,
                                                "name": "Literal",
                                                "src": "2734:5:20"
                                            }
                                        ],
                                        "id": 7810,
                                        "name": "Return",
                                        "src": "2727:12:20"
                                    }
                                ],
                                "id": 7811,
                                "name": "Block",
                                "src": "2367:380:20"
                            }
                        ],
                        "id": 7812,
                        "name": "FunctionDefinition",
                        "src": "2271:476:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "requestTransfer",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8485,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "receiver",
                                            "scope": 7839,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7813,
                                                "name": "ElementaryTypeName",
                                                "src": "2783:7:20"
                                            }
                                        ],
                                        "id": 7814,
                                        "name": "VariableDeclaration",
                                        "src": "2783:16:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "tokens",
                                            "scope": 7839,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7815,
                                                "name": "ElementaryTypeName",
                                                "src": "2801:7:20"
                                            }
                                        ],
                                        "id": 7816,
                                        "name": "VariableDeclaration",
                                        "src": "2801:14:20"
                                    }
                                ],
                                "id": 7817,
                                "name": "ParameterList",
                                "src": "2782:34:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7839,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 7818,
                                                "name": "ElementaryTypeName",
                                                "src": "2835:4:20"
                                            }
                                        ],
                                        "id": 7819,
                                        "name": "VariableDeclaration",
                                        "src": "2835:4:20"
                                    }
                                ],
                                "id": 7820,
                                "name": "ParameterList",
                                "src": "2834:6:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_858a8c8b3d51fcd7222c6014ce343eaa20fc6bb075590d68651da560f712d90c",
                                                                    "typeString": "literal_string \"Invalid requestor\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7821,
                                                        "name": "Identifier",
                                                        "src": "2851:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 7578,
                                                                    "type": "address",
                                                                    "value": "_issuingContract"
                                                                },
                                                                "id": 7822,
                                                                "name": "Identifier",
                                                                "src": "2859:16:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "referencedDeclaration": null,
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 13007,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 7823,
                                                                        "name": "Identifier",
                                                                        "src": "2877:3:20"
                                                                    }
                                                                ],
                                                                "id": 7824,
                                                                "name": "MemberAccess",
                                                                "src": "2877:10:20"
                                                            }
                                                        ],
                                                        "id": 7825,
                                                        "name": "BinaryOperation",
                                                        "src": "2859:28:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "496e76616c696420726571756573746f72",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Invalid requestor\"",
                                                            "value": "Invalid requestor"
                                                        },
                                                        "id": 7826,
                                                        "name": "Literal",
                                                        "src": "2889:19:20"
                                                    }
                                                ],
                                                "id": 7827,
                                                "name": "FunctionCall",
                                                "src": "2851:58:20"
                                            }
                                        ],
                                        "id": 7828,
                                        "name": "ExpressionStatement",
                                        "src": "2851:58:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12192,
                                                            "type": "function (address,uint256) returns (bool)",
                                                            "value": "transfer"
                                                        },
                                                        "id": 7829,
                                                        "name": "Identifier",
                                                        "src": "2923:8:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7814,
                                                            "type": "address",
                                                            "value": "receiver"
                                                        },
                                                        "id": 7830,
                                                        "name": "Identifier",
                                                        "src": "2932:8:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7816,
                                                            "type": "uint256",
                                                            "value": "tokens"
                                                        },
                                                        "id": 7831,
                                                        "name": "Identifier",
                                                        "src": "2942:6:20"
                                                    }
                                                ],
                                                "id": 7832,
                                                "name": "FunctionCall",
                                                "src": "2923:26:20"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 7820
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "74727565",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "true"
                                                        },
                                                        "id": 7833,
                                                        "name": "Literal",
                                                        "src": "2971:4:20"
                                                    }
                                                ],
                                                "id": 7834,
                                                "name": "Return",
                                                "src": "2964:11:20"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 7820
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "66616c7365",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "false"
                                                        },
                                                        "id": 7835,
                                                        "name": "Literal",
                                                        "src": "3011:5:20"
                                                    }
                                                ],
                                                "id": 7836,
                                                "name": "Return",
                                                "src": "3004:12:20"
                                            }
                                        ],
                                        "id": 7837,
                                        "name": "IfStatement",
                                        "src": "2920:96:20"
                                    }
                                ],
                                "id": 7838,
                                "name": "Block",
                                "src": "2840:184:20"
                            }
                        ],
                        "id": 7839,
                        "name": "FunctionDefinition",
                        "src": "2758:266:20"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "requestTransaction",
                            "scope": 7906,
                            "stateMutability": "nonpayable",
                            "superFunction": 8498,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 7905,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 7840,
                                                "name": "ElementaryTypeName",
                                                "src": "3062:7:20"
                                            }
                                        ],
                                        "id": 7841,
                                        "name": "VariableDeclaration",
                                        "src": "3062:14:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "payer",
                                            "scope": 7905,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7842,
                                                "name": "ElementaryTypeName",
                                                "src": "3078:7:20"
                                            }
                                        ],
                                        "id": 7843,
                                        "name": "VariableDeclaration",
                                        "src": "3078:13:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "currency",
                                            "scope": 7905,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 7844,
                                                "name": "ElementaryTypeName",
                                                "src": "3093:7:20"
                                            }
                                        ],
                                        "id": 7845,
                                        "name": "VariableDeclaration",
                                        "src": "3093:16:20"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "cashContract",
                                            "scope": 7905,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 7846,
                                                "name": "ElementaryTypeName",
                                                "src": "3111:7:20"
                                            }
                                        ],
                                        "id": 7847,
                                        "name": "VariableDeclaration",
                                        "src": "3111:20:20"
                                    }
                                ],
                                "id": 7848,
                                "name": "ParameterList",
                                "src": "3061:71:20"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 7905,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 7849,
                                                "name": "ElementaryTypeName",
                                                "src": "3150:4:20"
                                            }
                                        ],
                                        "id": 7850,
                                        "name": "VariableDeclaration",
                                        "src": "3150:4:20"
                                    }
                                ],
                                "id": 7851,
                                "name": "ParameterList",
                                "src": "3149:6:20"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_35557054842e6bac2d5677ccc2aeb32b43981809d9c333559406d70b18885a3e",
                                                                    "typeString": "literal_string \"Unsupported token\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13010,
                                                                13011
                                                            ],
                                                            "referencedDeclaration": 13011,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 7852,
                                                        "name": "Identifier",
                                                        "src": "3166:7:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "||",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "==",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "type": "bytes32",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address_payable",
                                                                                            "typeString": "address payable"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "getType",
                                                                                    "referencedDeclaration": 8240,
                                                                                    "type": "function (address) view external returns (bytes32)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 7580,
                                                                                            "type": "contract ViaFactory",
                                                                                            "value": "_factory"
                                                                                        },
                                                                                        "id": 7853,
                                                                                        "name": "Identifier",
                                                                                        "src": "3174:8:20"
                                                                                    }
                                                                                ],
                                                                                "id": 7854,
                                                                                "name": "MemberAccess",
                                                                                "src": "3174:16:20"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "referencedDeclaration": null,
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 13007,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 7855,
                                                                                        "name": "Identifier",
                                                                                        "src": "3191:3:20"
                                                                                    }
                                                                                ],
                                                                                "id": 7856,
                                                                                "name": "MemberAccess",
                                                                                "src": "3191:10:20"
                                                                            }
                                                                        ],
                                                                        "id": 7857,
                                                                        "name": "FunctionCall",
                                                                        "src": "3174:28:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "56696143617368",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "string",
                                                                            "type": "literal_string \"ViaCash\"",
                                                                            "value": "ViaCash"
                                                                        },
                                                                        "id": 7858,
                                                                        "name": "Literal",
                                                                        "src": "3206:9:20"
                                                                    }
                                                                ],
                                                                "id": 7859,
                                                                "name": "BinaryOperation",
                                                                "src": "3174:41:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "bool",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "checkSupportForToken",
                                                                            "referencedDeclaration": 8394,
                                                                            "type": "function (bytes32) view external returns (bool)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 7580,
                                                                                    "type": "contract ViaFactory",
                                                                                    "value": "_factory"
                                                                                },
                                                                                "id": 7860,
                                                                                "name": "Identifier",
                                                                                "src": "3219:8:20"
                                                                            }
                                                                        ],
                                                                        "id": 7861,
                                                                        "name": "MemberAccess",
                                                                        "src": "3219:29:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7845,
                                                                            "type": "bytes32",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 7862,
                                                                        "name": "Identifier",
                                                                        "src": "3249:8:20"
                                                                    }
                                                                ],
                                                                "id": 7863,
                                                                "name": "FunctionCall",
                                                                "src": "3219:39:20"
                                                            }
                                                        ],
                                                        "id": 7864,
                                                        "name": "BinaryOperation",
                                                        "src": "3174:84:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "556e737570706f7274656420746f6b656e",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"Unsupported token\"",
                                                            "value": "Unsupported token"
                                                        },
                                                        "id": 7865,
                                                        "name": "Literal",
                                                        "src": "3260:19:20"
                                                    }
                                                ],
                                                "id": 7866,
                                                "name": "FunctionCall",
                                                "src": "3166:114:20"
                                            }
                                        ],
                                        "id": 7867,
                                        "name": "ExpressionStatement",
                                        "src": "3166:114:20"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7843,
                                                            "type": "address",
                                                            "value": "payer"
                                                        },
                                                        "id": 7868,
                                                        "name": "Identifier",
                                                        "src": "3294:5:20"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 7576,
                                                            "type": "address",
                                                            "value": "_issuer"
                                                        },
                                                        "id": 7869,
                                                        "name": "Identifier",
                                                        "src": "3301:7:20"
                                                    }
                                                ],
                                                "id": 7870,
                                                "name": "BinaryOperation",
                                                "src": "3294:14:20"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "bool",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "requestRedemption",
                                                                            "referencedDeclaration": 8130,
                                                                            "type": "function (uint256,address,bytes32,address) external returns (bool)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "type": "contract ViaBond",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 8169,
                                                                                            "type": "type(contract ViaBond)",
                                                                                            "value": "ViaBond"
                                                                                        },
                                                                                        "id": 7871,
                                                                                        "name": "Identifier",
                                                                                        "src": "3327:7:20"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 7578,
                                                                                            "type": "address",
                                                                                            "value": "_issuingContract"
                                                                                        },
                                                                                        "id": 7872,
                                                                                        "name": "Identifier",
                                                                                        "src": "3335:16:20"
                                                                                    }
                                                                                ],
                                                                                "id": 7873,
                                                                                "name": "FunctionCall",
                                                                                "src": "3327:25:20"
                                                                            }
                                                                        ],
                                                                        "id": 7874,
                                                                        "name": "MemberAccess",
                                                                        "src": "3327:43:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7841,
                                                                            "type": "uint256",
                                                                            "value": "amount"
                                                                        },
                                                                        "id": 7875,
                                                                        "name": "Identifier",
                                                                        "src": "3371:6:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7843,
                                                                            "type": "address",
                                                                            "value": "payer"
                                                                        },
                                                                        "id": 7876,
                                                                        "name": "Identifier",
                                                                        "src": "3379:5:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7845,
                                                                            "type": "bytes32",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 7877,
                                                                        "name": "Identifier",
                                                                        "src": "3386:8:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "type": "address",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_contract$_Token_$7906",
                                                                                            "typeString": "contract Token"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "type(address)",
                                                                                    "value": "address"
                                                                                },
                                                                                "id": 7878,
                                                                                "name": "ElementaryTypeNameExpression",
                                                                                "src": "3396:7:20"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 13087,
                                                                                    "type": "contract Token",
                                                                                    "value": "this"
                                                                                },
                                                                                "id": 7879,
                                                                                "name": "Identifier",
                                                                                "src": "3404:4:20"
                                                                            }
                                                                        ],
                                                                        "id": 7880,
                                                                        "name": "FunctionCall",
                                                                        "src": "3396:13:20"
                                                                    }
                                                                ],
                                                                "id": 7881,
                                                                "name": "FunctionCall",
                                                                "src": "3327:83:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 7851
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "74727565",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "true"
                                                                        },
                                                                        "id": 7882,
                                                                        "name": "Literal",
                                                                        "src": "3436:4:20"
                                                                    }
                                                                ],
                                                                "id": 7883,
                                                                "name": "Return",
                                                                "src": "3429:11:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 7851
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "66616c7365",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "false"
                                                                        },
                                                                        "id": 7884,
                                                                        "name": "Literal",
                                                                        "src": "3484:5:20"
                                                                    }
                                                                ],
                                                                "id": 7885,
                                                                "name": "Return",
                                                                "src": "3477:12:20"
                                                            }
                                                        ],
                                                        "id": 7886,
                                                        "name": "IfStatement",
                                                        "src": "3324:165:20"
                                                    }
                                                ],
                                                "id": 7887,
                                                "name": "Block",
                                                "src": "3309:192:20"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "bool",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "requestPurchase",
                                                                            "referencedDeclaration": 8117,
                                                                            "type": "function (uint256,address,bytes32,address) external returns (bool)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "type": "contract ViaBond",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 8169,
                                                                                            "type": "type(contract ViaBond)",
                                                                                            "value": "ViaBond"
                                                                                        },
                                                                                        "id": 7888,
                                                                                        "name": "Identifier",
                                                                                        "src": "3533:7:20"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 7578,
                                                                                            "type": "address",
                                                                                            "value": "_issuingContract"
                                                                                        },
                                                                                        "id": 7889,
                                                                                        "name": "Identifier",
                                                                                        "src": "3541:16:20"
                                                                                    }
                                                                                ],
                                                                                "id": 7890,
                                                                                "name": "FunctionCall",
                                                                                "src": "3533:25:20"
                                                                            }
                                                                        ],
                                                                        "id": 7891,
                                                                        "name": "MemberAccess",
                                                                        "src": "3533:41:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7841,
                                                                            "type": "uint256",
                                                                            "value": "amount"
                                                                        },
                                                                        "id": 7892,
                                                                        "name": "Identifier",
                                                                        "src": "3575:6:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7843,
                                                                            "type": "address",
                                                                            "value": "payer"
                                                                        },
                                                                        "id": 7893,
                                                                        "name": "Identifier",
                                                                        "src": "3583:5:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7845,
                                                                            "type": "bytes32",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 7894,
                                                                        "name": "Identifier",
                                                                        "src": "3590:8:20"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 7847,
                                                                            "type": "address",
                                                                            "value": "cashContract"
                                                                        },
                                                                        "id": 7895,
                                                                        "name": "Identifier",
                                                                        "src": "3600:12:20"
                                                                    }
                                                                ],
                                                                "id": 7896,
                                                                "name": "FunctionCall",
                                                                "src": "3533:80:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 7851
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "74727565",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "true"
                                                                        },
                                                                        "id": 7897,
                                                                        "name": "Literal",
                                                                        "src": "3639:4:20"
                                                                    }
                                                                ],
                                                                "id": 7898,
                                                                "name": "Return",
                                                                "src": "3632:11:20"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 7851
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "66616c7365",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "false"
                                                                        },
                                                                        "id": 7899,
                                                                        "name": "Literal",
                                                                        "src": "3687:5:20"
                                                                    }
                                                                ],
                                                                "id": 7900,
                                                                "name": "Return",
                                                                "src": "3680:12:20"
                                                            }
                                                        ],
                                                        "id": 7901,
                                                        "name": "IfStatement",
                                                        "src": "3530:162:20"
                                                    }
                                                ],
                                                "id": 7902,
                                                "name": "Block",
                                                "src": "3515:189:20"
                                            }
                                        ],
                                        "id": 7903,
                                        "name": "IfStatement",
                                        "src": "3291:413:20"
                                    }
                                ],
                                "id": 7904,
                                "name": "Block",
                                "src": "3155:564:20"
                            }
                        ],
                        "id": 7905,
                        "name": "FunctionDefinition",
                        "src": "3034:685:20"
                    }
                ],
                "id": 7906,
                "name": "ContractDefinition",
                "src": "289:3441:20"
            }
        ],
        "id": 7907,
        "name": "SourceUnit",
        "src": "114:3618:20"
    },
    "compiler": {
        "name": "solc",
        "version": "0.5.7+commit.6da8b019.Emscripten.clang"
    },
    "networks": {
        "11155111": {
            "events": {},
            "links": {},
            "address": "0x58D7648C9d55567b5D1C37A3176D487539e9B8Be",
            "transactionHash": "0x4c4dd9b991acb7423f63c2efbe8fee3fc9344542fbec6c24f8754e4a14a2cee6"
        }
    },
    "schemaVersion": "3.4.16",
    "updatedAt": "2025-07-26T12:25:15.345Z",
    "networkType": "ethereum",
    "devdoc": {
        "methods": {
            "allowance(address,address)": {
                "details": "See {IERC20-allowance}.\r"
            },
            "approve(address,uint256)": {
                "details": "See {IERC20-approve}.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r"
            },
            "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}.\r"
            },
            "decimals()": {
                "details": "Returns the number of decimals used to get its user representation.\r For example, if `decimals` equals `2`, a balance of `505` tokens should\r be displayed to a user as `5.05` (`505 / 10 ** 2`).\r      * Tokens usually opt for a value of 18, imitating the relationship between\r Ether and Wei. This is the default value returned by this function, unless\r it's overridden.\r      * NOTE: This information is only used for _display_ purposes: it in\r no way affects any of the arithmetic of the contract, including\r {IERC20-balanceOf} and {IERC20-transfer}.\r"
            },
            "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller.\r      * This is an alternative to {approve} that can be used as a mitigation for\r problems described in {IERC20-approve}.\r      * Emits an {Approval} event indicating the updated allowance.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r - `spender` must have allowance for the caller of at least\r `subtractedValue`.\r"
            },
            "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller.\r      * This is an alternative to {approve} that can be used as a mitigation for\r problems described in {IERC20-approve}.\r      * Emits an {Approval} event indicating the updated allowance.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r"
            },
            "name()": {
                "details": "Returns the name of the token.\r"
            },
            "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the\r name.\r"
            },
            "totalSupply()": {
                "details": "See {IERC20-totalSupply}.\r"
            },
            "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}.\r      * Requirements:\r      * - `recipient` cannot be the zero address.\r - the caller must have a balance of at least `amount`.\r"
            }
        }
    },
    "userdoc": {
        "methods": {}
    }
}
