{"contractName":"DistributionIssuer","abi":[{"constant":true,"inputs":[],"name":"MAX_PAYEES_LENGTH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenAddress","type":"address"},{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_payee","type":"address"},{"indexed":false,"name":"_tokenAmount","type":"uint256"}],"name":"DistributionIssued","type":"event"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_payees","type":"address[]"},{"name":"_tokenAmounts","type":"uint256[]"}],"name":"pushDistributionsToAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506104dd806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063462184b314610051578063ecbbeb50146100c4575b600080fd5b34801561005d57600080fd5b506100c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506100ef565b005b3480156100d057600080fd5b506100d96102a4565b6040518082815260200191505060405180910390f35b6000604685859050101515610192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4e756d626572206f6620706179656573206d757374206265206c65737320746881526020017f616e204d41585f5041594545535f4c454e47544800000000000000000000000081525060400191505060405180910390fd5b8282905085859050141515610235576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f506179656520616e6420746f6b656e20616d6f756e7420617272617973206d7581526020017f7374206265207468652073616d65206c656e677468000000000000000000000081525060400191505060405180910390fd5b600090505b8484905081101561029c5761028f8633878785818110151561025857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868686818110151561028357fe5b905060200201356102a9565b808060010191505061023a565b505050505050565b604681565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b8101908080519060200190929190505050151561042f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f556e61626c6520746f207472616e7366657220746f6b656e730000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe953d24dd7dde52af1afe6844121155b2bdf430324883f8c8e236d7dff400467846040518082815260200191505060405180910390a4505050505600a165627a7a72305820835d7488c5883cf4b73ca1ccd9627bbad042fd7ef246372896eed22660f6d4800029","deployedBytecode":"0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063462184b314610051578063ecbbeb50146100c4575b600080fd5b34801561005d57600080fd5b506100c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506100ef565b005b3480156100d057600080fd5b506100d96102a4565b6040518082815260200191505060405180910390f35b6000604685859050101515610192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f4e756d626572206f6620706179656573206d757374206265206c65737320746881526020017f616e204d41585f5041594545535f4c454e47544800000000000000000000000081525060400191505060405180910390fd5b8282905085859050141515610235576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f506179656520616e6420746f6b656e20616d6f756e7420617272617973206d7581526020017f7374206265207468652073616d65206c656e677468000000000000000000000081525060400191505060405180910390fd5b600090505b8484905081101561029c5761028f8633878785818110151561025857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868686818110151561028357fe5b905060200201356102a9565b808060010191505061023a565b505050505050565b604681565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b8101908080519060200190929190505050151561042f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f556e61626c6520746f207472616e7366657220746f6b656e730000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe953d24dd7dde52af1afe6844121155b2bdf430324883f8c8e236d7dff400467846040518082815260200191505060405180910390a4505050505600a165627a7a72305820835d7488c5883cf4b73ca1ccd9627bbad042fd7ef246372896eed22660f6d4800029","source":"pragma solidity 0.4.24;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\";\n\n/**\n * @title Batch transfer distributions to payees\n */\n\ncontract DistributionIssuer {\n    /*----------- Constants -----------*/\n    uint public constant MAX_PAYEES_LENGTH = 70;\n\n    /*----------- Events -----------*/\n    event DistributionIssued(\n        address indexed _tokenAddress,\n        address indexed _from,\n        address indexed _payee,\n        uint256 _tokenAmount\n    );\n\n    /**\n    * @notice A user can push dividends to provided payees\n    * @param _tokenAddress The address of the token to pay out\n    * @param _payees Addresses to which to push the dividend\n    * @param _tokenAmounts The amount in tokens to push out to the payees\n    */\n    function pushDistributionsToAddresses(\n        address _tokenAddress,\n        address[] _payees,\n        uint256[] _tokenAmounts\n    ) external {\n        require(_payees.length < MAX_PAYEES_LENGTH, \"Number of payees must be less than MAX_PAYEES_LENGTH\");\n        require(_payees.length == _tokenAmounts.length, \"Payee and token amount arrays must be the same length\");\n        for (uint256 i = 0; i < _payees.length; i++) {\n            _issueDistribution(_tokenAddress, msg.sender, _payees[i], _tokenAmounts[i]);\n        }\n    }\n\n    /**\n    * @notice Issuing a distribution to a single payee\n    * @param _tokenAddress The address of the token to pay out\n    * @param _from Address distributing the tokens\n    * @param _payee Address to which to push the distribution\n    * @param _tokenAmount The amount in tokens to push out to the payee\n    */\n    function _issueDistribution(\n        address _tokenAddress,\n        address _from,\n        address _payee,\n        uint256 _tokenAmount\n    ) internal {\n        require(\n            StandardToken(_tokenAddress).transferFrom(\n                _from,\n                _payee,\n                _tokenAmount\n            ), \n            \"Unable to transfer tokens\"\n        );\n        emit DistributionIssued(_tokenAddress, _from, _payee, _tokenAmount);\n    }\n}","compiler":{"name":"solc","version":"0.4.24+commit.e67f0147.Emscripten.clang"},"networks":{},"schemaVersion":"2.0.1","updatedAt":"2019-03-05T14:12:53.616Z"}