Contract
0x6e0fa1dC8E3e6510aeBF14fCa3d83C77a9780ecB
15
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
MarketplaceDividends
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at moonriver.moonscan.io on 2021-10-26 */ //Custom contract allowing beanie NFT holders to claim accumulated rewards. pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IAdvTokenNFT is IERC721 { function tokensOfOwner(address _owner) external view returns(uint256[] memory ); } interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract MarketplaceDividends is IERC721Receiver, ReentrancyGuard, Ownable { address public beanieCA = 0xd3A9c48Df4d9342dc1A0EE2c185CE50588729Fa9; address public TOKEN = 0x98878B06940aE243284CA214f92Bb71a2b032B8A; //WMOVR uint256 public allTimeBalance = 0; uint256 tokenAllTimeBalance = 0; uint256 lastTokenBalance = 0; mapping(uint256 => uint256) claimed; mapping(uint256 => uint256) tokenClaimed; receive() external payable { allTimeBalance += msg.value; uint256 currentTokenBalance = IERC20(TOKEN).balanceOf(msg.sender); if (currentTokenBalance > lastTokenBalance) { tokenAllTimeBalance += (currentTokenBalance - lastTokenBalance); } lastTokenBalance = currentTokenBalance; } // Required in order to receive ERC 721's. function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) { return this.onERC721Received.selector; } function getClaimable(uint256 tokenId) public view returns (uint256) { uint256 allTimeShare = allTimeBalance / 462; return allTimeShare - claimed[tokenId]; } function getClaimableForAll(address user) public view returns (uint256) { uint256[] memory owned = IAdvTokenNFT(beanieCA).tokensOfOwner(user); uint256 total = 0; for (uint i = 0; i < owned.length; i++) { total += getClaimable(owned[i]); } return total; } function claim(uint256 tokenId) public nonReentrant { uint256 claimable = getClaimable(tokenId); claimed[tokenId] += claimable; payable(IERC721(beanieCA).ownerOf(tokenId)).transfer(claimable); } function claimForAll() external { uint256[] memory owned = IAdvTokenNFT(beanieCA).tokensOfOwner(msg.sender); for (uint i = 0; i < owned.length; i++) { claim(owned[i]); } } function getClaimableToken(uint256 tokenId) public view returns (uint256) { uint256 allTimeShare = tokenAllTimeBalance / 462; return allTimeShare - tokenClaimed[tokenId]; } function claimToken(uint256 tokenId) public nonReentrant { uint256 claimable = getClaimableToken(tokenId); tokenClaimed[tokenId] += claimable; IERC20(TOKEN).transferFrom(address(this), IERC721(beanieCA).ownerOf(tokenId), claimable); } function claimTokenForAll() external { uint256[] memory owned = IAdvTokenNFT(beanieCA).tokensOfOwner(msg.sender); for (uint i = 0; i < owned.length; i++) { claim(owned[i]); } } function unclaimedBalance() external view returns (uint256) { return address(this).balance; } function unclaimedTokenBalance() external view returns (uint256) { return IERC20(TOKEN).balanceOf(address(this)); } // Emergency only - Recover Tokens function recoverToken(address _token, uint256 amount) external onlyOwner { IERC20(_token).transfer(owner(), amount); } // Emergency only - Recover NFTs function recoverNFT(address _token, uint256 tokenId) external onlyOwner { IERC721(_token).transferFrom(address(this), owner(), tokenId); } // Emergency only - Recover MOVR function RecoverMOVR(address to, uint256 amount) external onlyOwner { payable(to).transfer(amount); } }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverMOVR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTimeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beanieCA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokenForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getClaimableForAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getClaimableToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"recoverNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclaimedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unclaimedTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673d3a9c48df4d9342dc1a0ee2c185ce50588729fa917909155600380549091167398878b06940ae243284ca214f92bb71a2b032b8a17905560006004819055600581905560065534801561006757600080fd5b5060016000556100763361007b565b6100cd565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61110e806100dc6000396000f3fe6080604052600436106101185760003560e01c80638573c8b1116100a0578063ee1778ae11610064578063ee1778ae146103dd578063ef5cf0a5146103f2578063f155525d14610407578063f2fde38b1461041c578063fa8176931461043c57600080fd5b80638573c8b11461033f5780638da5cb5b1461035f5780639c7e4a661461037d578063a9e7c2e51461039d578063b29a8140146103bd57600080fd5b80634666d628116100e75780634666d6281461029257806357ccdcf8146102b257806363d0ecd6146102d2578063715018a6146102f257806382bfefc81461030757600080fd5b8063150b7a02146101ea5780633319a00d14610233578063379607f5146102555780633af07ca61461027557600080fd5b366101e557346004600082825461012f9190610da1565b90915550506003546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561017857600080fd5b505afa15801561018c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b09190610db9565b90506006548111156101e0576006546101c99082610dd2565b600560008282546101da9190610da1565b90915550505b600655005b600080fd5b3480156101f657600080fd5b50610215610205366004610e45565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b34801561023f57600080fd5b5061025361024e366004610f09565b610452565b005b34801561026157600080fd5b50610253610270366004610f35565b610512565b34801561028157600080fd5b50475b60405190815260200161022a565b34801561029e57600080fd5b506102846102ad366004610f35565b61065d565b3480156102be57600080fd5b506102536102cd366004610f09565b610693565b3480156102de57600080fd5b506102846102ed366004610f4e565b6106f8565b3480156102fe57600080fd5b506102536107d4565b34801561031357600080fd5b50600354610327906001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b34801561034b57600080fd5b50600254610327906001600160a01b031681565b34801561036b57600080fd5b506001546001600160a01b0316610327565b34801561038957600080fd5b50610284610398366004610f35565b61080a565b3480156103a957600080fd5b506102536103b8366004610f35565b610839565b3480156103c957600080fd5b506102536103d8366004610f09565b6109d7565b3480156103e957600080fd5b50610253610aa2565b3480156103fe57600080fd5b50610284610b68565b34801561041357600080fd5b50610253610be9565b34801561042857600080fd5b50610253610437366004610f4e565b610c9e565b34801561044857600080fd5b5061028460045481565b6001546001600160a01b031633146104855760405162461bcd60e51b815260040161047c90610f6b565b60405180910390fd5b816001600160a01b03166323b872dd306104a76001546001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b1580156104f657600080fd5b505af115801561050a573d6000803e3d6000fd5b505050505050565b600260005414156105655760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161047c565b600260009081556105758261080a565b90508060076000848152602001908152602001600020600082825461059a9190610da1565b90915550506002546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190610fa0565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610653573d6000803e3d6000fd5b5050600160005550565b6000806101ce6005546106709190610fbd565b60008481526008602052604090205490915061068c9082610dd2565b9392505050565b6001546001600160a01b031633146106bd5760405162461bcd60e51b815260040161047c90610f6b565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156106f3573d6000803e3d6000fd5b505050565b600254604051632118854760e21b81526001600160a01b0383811660048301526000928392911690638462151c9060240160006040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077d9190810190610fdf565b90506000805b82518110156107cc576107ae8382815181106107a1576107a1611085565b602002602001015161080a565b6107b89083610da1565b9150806107c48161109b565b915050610783565b509392505050565b6001546001600160a01b031633146107fe5760405162461bcd60e51b815260040161047c90610f6b565b6108086000610d39565b565b6000806101ce60045461081d9190610fbd565b60008481526007602052604090205490915061068c9082610dd2565b6002600054141561088c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161047c565b6002600090815561089c8261065d565b9050806008600084815260200190815260200160002060008282546108c19190610da1565b90915550506003546002546040516331a9108f60e11b8152600481018590526001600160a01b03928316926323b872dd923092911690636352211e9060240160206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109509190610fa0565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401602060405180830381600087803b15801561099f57600080fd5b505af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065391906110b6565b6001546001600160a01b03163314610a015760405162461bcd60e51b815260040161047c90610f6b565b816001600160a01b031663a9059cbb610a226001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610a6a57600080fd5b505af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f391906110b6565b600254604051632118854760e21b81523360048201526000916001600160a01b031690638462151c9060240160006040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b229190810190610fdf565b905060005b8151811015610b6457610b52828281518110610b4557610b45611085565b6020026020010151610512565b80610b5c8161109b565b915050610b27565b5050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610bac57600080fd5b505afa158015610bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be49190610db9565b905090565b600254604051632118854760e21b81523360048201526000916001600160a01b031690638462151c9060240160006040518083038186803b158015610c2d57600080fd5b505afa158015610c41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c699190810190610fdf565b905060005b8151811015610b6457610c8c828281518110610b4557610b45611085565b80610c968161109b565b915050610c6e565b6001546001600160a01b03163314610cc85760405162461bcd60e51b815260040161047c90610f6b565b6001600160a01b038116610d2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047c565b610d3681610d39565b50565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610db457610db4610d8b565b500190565b600060208284031215610dcb57600080fd5b5051919050565b600082821015610de457610de4610d8b565b500390565b6001600160a01b0381168114610d3657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e3d57610e3d610dfe565b604052919050565b60008060008060808587031215610e5b57600080fd5b8435610e6681610de9565b9350602085810135610e7781610de9565b935060408601359250606086013567ffffffffffffffff80821115610e9b57600080fd5b818801915088601f830112610eaf57600080fd5b813581811115610ec157610ec1610dfe565b610ed3601f8201601f19168501610e14565b91508082528984828501011115610ee957600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215610f1c57600080fd5b8235610f2781610de9565b946020939093013593505050565b600060208284031215610f4757600080fd5b5035919050565b600060208284031215610f6057600080fd5b813561068c81610de9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215610fb257600080fd5b815161068c81610de9565b600082610fda57634e487b7160e01b600052601260045260246000fd5b500490565b60006020808385031215610ff257600080fd5b825167ffffffffffffffff8082111561100a57600080fd5b818501915085601f83011261101e57600080fd5b81518181111561103057611030610dfe565b8060051b9150611041848301610e14565b818152918301840191848101908884111561105b57600080fd5b938501935b8385101561107957845182529385019390850190611060565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156110af576110af610d8b565b5060010190565b6000602082840312156110c857600080fd5b8151801515811461068c57600080fdfea2646970667358221220674d9a2901d1af07744a9c5e052b781f67f4f6b3944b262703fd1f45793d056164736f6c63430008090033
Deployed ByteCode Sourcemap
12498:3246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12977:9;12959:14;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;13030:5:0;;13023:35;;-1:-1:-1;;;13023:35:0;;13047:10;13023:35;;;425:51:1;12993:27:0;;-1:-1:-1;;;;;13030:5:0;;13023:23;;398:18:1;;13023:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12993:65;;13091:16;;13069:19;:38;13065:124;;;13164:16;;13142:38;;:19;:38;:::i;:::-;13118:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;13065:124:0;13195:16;:38;12498:3246;;;;;13291:158;;;;;;;;;;-1:-1:-1;13291:158:0;;;;;:::i;:::-;-1:-1:-1;;;13291:158:0;;;;;;;;;;-1:-1:-1;;;;;;2629:33:1;;;2611:52;;2599:2;2584:18;13291:158:0;;;;;;;;15444:146;;;;;;;;;;-1:-1:-1;15444:146:0;;;;;:::i;:::-;;:::i;:::-;;13926:212;;;;;;;;;;-1:-1:-1;13926:212:0;;;;;:::i;:::-;;:::i;15002:101::-;;;;;;;;;;-1:-1:-1;15076:21:0;15002:101;;;3325:25:1;;;3313:2;3298:18;15002:101:0;3179:177:1;14346:185:0;;;;;;;;;;-1:-1:-1;14346:185:0;;;;;:::i;:::-;;:::i;15632:109::-;;;;;;;;;;-1:-1:-1;15632:109:0;;;;;:::i;:::-;;:::i;13631:289::-;;;;;;;;;;-1:-1:-1;13631:289:0;;;;;:::i;:::-;;:::i;1440:94::-;;;;;;;;;;;;;:::i;12653:65::-;;;;;;;;;;-1:-1:-1;12653:65:0;;;;-1:-1:-1;;;;;12653:65:0;;;;;;-1:-1:-1;;;;;443:32:1;;;425:51;;413:2;398:18;12653:65:0;279:203:1;12580:68:0;;;;;;;;;;-1:-1:-1;12580:68:0;;;;-1:-1:-1;;;;;12580:68:0;;;789:87;;;;;;;;;;-1:-1:-1;862:6:0;;-1:-1:-1;;;;;862:6:0;789:87;;13455:170;;;;;;;;;;-1:-1:-1;13455:170:0;;;;;:::i;:::-;;:::i;14537:252::-;;;;;;;;;;-1:-1:-1;14537:252:0;;;;;:::i;:::-;;:::i;15276:126::-;;;;;;;;;;-1:-1:-1;15276:126:0;;;;;:::i;:::-;;:::i;14795:201::-;;;;;;;;;;;;;:::i;15109:123::-;;;;;;;;;;;;;:::i;14144:196::-;;;;;;;;;;;;;:::i;1689:192::-;;;;;;;;;;-1:-1:-1;1689:192:0;;;;;:::i;:::-;;:::i;12731:33::-;;;;;;;;;;;;;;;;15444:146;862:6;;-1:-1:-1;;;;;862:6:0;252:10;1009:23;1001:68;;;;-1:-1:-1;;;1001:68:0;;;;;;;:::i;:::-;;;;;;;;;15531:6:::1;-1:-1:-1::0;;;;;15523:28:0::1;;15560:4;15567:7;862:6:::0;;-1:-1:-1;;;;;862:6:0;;789:87;15567:7:::1;15523:61;::::0;-1:-1:-1;;;;;;15523:61:0::1;::::0;;;;;;-1:-1:-1;;;;;4232:15:1;;;15523:61:0::1;::::0;::::1;4214:34:1::0;4284:15;;4264:18;;;4257:43;4316:18;;;4309:34;;;4149:18;;15523:61:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15444:146:::0;;:::o;13926:212::-;11553:1;12149:7;;:19;;12141:63;;;;-1:-1:-1;;;12141:63:0;;4556:2:1;12141:63:0;;;4538:21:1;4595:2;4575:18;;;4568:30;4634:33;4614:18;;;4607:61;4685:18;;12141:63:0;4354:355:1;12141:63:0;11553:1;12282:7;:18;;;14005:21:::1;14018:7:::0;14005:12:::1;:21::i;:::-;13985:41;;14053:9;14033:7;:16;14041:7;14033:16;;;;;;;;;;;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14085:8:0::1;::::0;14077:34:::1;::::0;-1:-1:-1;;;14077:34:0;;::::1;::::0;::::1;3325:25:1::0;;;-1:-1:-1;;;;;14085:8:0;;::::1;::::0;14077:25:::1;::::0;3298:18:1;;14077:34:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14069:52:0::1;:63;14122:9;14069:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11509:1:0;12461:7;:22;-1:-1:-1;13926:212:0:o;14346:185::-;14411:7;14427:20;14472:3;14450:19;;:25;;;;:::i;:::-;14504:21;;;;:12;:21;;;;;;14427:48;;-1:-1:-1;14489:36:0;;14427:48;14489:36;:::i;:::-;14482:43;14346:185;-1:-1:-1;;;14346:185:0:o;15632:109::-;862:6;;-1:-1:-1;;;;;862:6:0;252:10;1009:23;1001:68;;;;-1:-1:-1;;;1001:68:0;;;;;;;:::i;:::-;15707:28:::1;::::0;-1:-1:-1;;;;;15707:20:0;::::1;::::0;:28;::::1;;;::::0;15728:6;;15707:28:::1;::::0;;;15728:6;15707:20;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15632:109:::0;;:::o;13631:289::-;13748:8;;13735:42;;-1:-1:-1;;;13735:42:0;;-1:-1:-1;;;;;443:32:1;;;13735:42:0;;;425:51:1;13694:7:0;;;;13748:8;;;13735:36;;398:18:1;;13735:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13735:42:0;;;;;;;;;;;;:::i;:::-;13710:67;;13784:13;13813:6;13808:88;13829:5;:12;13825:1;:16;13808:88;;;13866:22;13879:5;13885:1;13879:8;;;;;;;;:::i;:::-;;;;;;;13866:12;:22::i;:::-;13857:31;;;;:::i;:::-;;-1:-1:-1;13843:3:0;;;;:::i;:::-;;;;13808:88;;;-1:-1:-1;13909:5:0;13631:289;-1:-1:-1;;;13631:289:0:o;1440:94::-;862:6;;-1:-1:-1;;;;;862:6:0;252:10;1009:23;1001:68;;;;-1:-1:-1;;;1001:68:0;;;;;;;:::i;:::-;1505:21:::1;1523:1;1505:9;:21::i;:::-;1440:94::o:0;13455:170::-;13515:7;13531:20;13571:3;13554:14;;:20;;;;:::i;:::-;13603:16;;;;:7;:16;;;;;;13531:43;;-1:-1:-1;13588:31:0;;13531:43;13588:31;:::i;14537:252::-;11553:1;12149:7;;:19;;12141:63;;;;-1:-1:-1;;;12141:63:0;;4556:2:1;12141:63:0;;;4538:21:1;4595:2;4575:18;;;4568:30;4634:33;4614:18;;;4607:61;4685:18;;12141:63:0;4354:355:1;12141:63:0;11553:1;12282:7;:18;;;14621:26:::1;14639:7:::0;14621:17:::1;:26::i;:::-;14601:46;;14679:9;14654:12;:21;14667:7;14654:21;;;;;;;;;;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14702:5:0::1;::::0;14745:8:::1;::::0;14737:34:::1;::::0;-1:-1:-1;;;14737:34:0;;::::1;::::0;::::1;3325:25:1::0;;;-1:-1:-1;;;;;14702:5:0;;::::1;::::0;14695:26:::1;::::0;14730:4:::1;::::0;14745:8;::::1;::::0;14737:25:::1;::::0;3298:18:1;;14737:34:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14695:88;::::0;-1:-1:-1;;;;;;14695:88:0::1;::::0;;;;;;-1:-1:-1;;;;;4232:15:1;;;14695:88:0::1;::::0;::::1;4214:34:1::0;4284:15;;4264:18;;;4257:43;4316:18;;;4309:34;;;4149:18;;14695:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15276:126::-:0;862:6;;-1:-1:-1;;;;;862:6:0;252:10;1009:23;1001:68;;;;-1:-1:-1;;;1001:68:0;;;;;;;:::i;:::-;15363:6:::1;-1:-1:-1::0;;;;;15356:23:0::1;;15380:7;862:6:::0;;-1:-1:-1;;;;;862:6:0;;789:87;15380:7:::1;15356:40;::::0;-1:-1:-1;;;;;;15356:40:0::1;::::0;;;;;;-1:-1:-1;;;;;6879:32:1;;;15356:40:0::1;::::0;::::1;6861:51:1::0;6928:18;;;6921:34;;;6834:18;;15356:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14795:201::-:0;14877:8;;14864:48;;-1:-1:-1;;;14864:48:0;;14901:10;14864:48;;;425:51:1;14839:22:0;;-1:-1:-1;;;;;14877:8:0;;14864:36;;398:18:1;;14864:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14864:48:0;;;;;;;;;;;;:::i;:::-;14839:73;;14924:6;14919:72;14940:5;:12;14936:1;:16;14919:72;;;14968:15;14974:5;14980:1;14974:8;;;;;;;;:::i;:::-;;;;;;;14968:5;:15::i;:::-;14954:3;;;;:::i;:::-;;;;14919:72;;;;14832:164;14795:201::o;15109:123::-;15195:5;;15188:38;;-1:-1:-1;;;15188:38:0;;15220:4;15188:38;;;425:51:1;15165:7:0;;-1:-1:-1;;;;;15195:5:0;;15188:23;;398:18:1;;15188:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15181:45;;15109:123;:::o;14144:196::-;14221:8;;14208:48;;-1:-1:-1;;;14208:48:0;;14245:10;14208:48;;;425:51:1;14183:22:0;;-1:-1:-1;;;;;14221:8:0;;14208:36;;398:18:1;;14208:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14208:48:0;;;;;;;;;;;;:::i;:::-;14183:73;;14268:6;14263:72;14284:5;:12;14280:1;:16;14263:72;;;14312:15;14318:5;14324:1;14318:8;;;;;;;;:::i;14312:15::-;14298:3;;;;:::i;:::-;;;;14263:72;;1689:192;862:6;;-1:-1:-1;;;;;862:6:0;252:10;1009:23;1001:68;;;;-1:-1:-1;;;1001:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1778:22:0;::::1;1770:73;;;::::0;-1:-1:-1;;;1770:73:0;;7168:2:1;1770:73:0::1;::::0;::::1;7150:21:1::0;7207:2;7187:18;;;7180:30;7246:34;7226:18;;;7219:62;-1:-1:-1;;;7297:18:1;;;7290:36;7343:19;;1770:73:0::1;6966:402:1::0;1770:73:0::1;1854:19;1864:8;1854:9;:19::i;:::-;1689:192:::0;:::o;1889:173::-;1964:6;;;-1:-1:-1;;;;;1981:17:0;;;-1:-1:-1;;;;;;1981:17:0;;;;;;;2014:40;;1964:6;;;1981:17;1964:6;;2014:40;;1945:16;;2014:40;1934:128;1889:173;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:1;;146:128::o;487:184::-;557:6;610:2;598:9;589:7;585:23;581:32;578:52;;;626:1;623;616:12;578:52;-1:-1:-1;649:16:1;;487:184;-1:-1:-1;487:184:1:o;676:125::-;716:4;744:1;741;738:8;735:34;;;749:18;;:::i;:::-;-1:-1:-1;786:9:1;;676:125::o;806:131::-;-1:-1:-1;;;;;881:31:1;;871:42;;861:70;;927:1;924;917:12;942:127;1003:10;998:3;994:20;991:1;984:31;1034:4;1031:1;1024:15;1058:4;1055:1;1048:15;1074:275;1145:2;1139:9;1210:2;1191:13;;-1:-1:-1;;1187:27:1;1175:40;;1245:18;1230:34;;1266:22;;;1227:62;1224:88;;;1292:18;;:::i;:::-;1328:2;1321:22;1074:275;;-1:-1:-1;1074:275:1:o;1354:1108::-;1449:6;1457;1465;1473;1526:3;1514:9;1505:7;1501:23;1497:33;1494:53;;;1543:1;1540;1533:12;1494:53;1582:9;1569:23;1601:31;1626:5;1601:31;:::i;:::-;1651:5;-1:-1:-1;1675:2:1;1714:18;;;1701:32;1742:33;1701:32;1742:33;:::i;:::-;1794:7;-1:-1:-1;1848:2:1;1833:18;;1820:32;;-1:-1:-1;1903:2:1;1888:18;;1875:32;1926:18;1956:14;;;1953:34;;;1983:1;1980;1973:12;1953:34;2021:6;2010:9;2006:22;1996:32;;2066:7;2059:4;2055:2;2051:13;2047:27;2037:55;;2088:1;2085;2078:12;2037:55;2124:2;2111:16;2146:2;2142;2139:10;2136:36;;;2152:18;;:::i;:::-;2194:53;2237:2;2218:13;;-1:-1:-1;;2214:27:1;2210:36;;2194:53;:::i;:::-;2181:66;;2270:2;2263:5;2256:17;2310:7;2305:2;2300;2296;2292:11;2288:20;2285:33;2282:53;;;2331:1;2328;2321:12;2282:53;2386:2;2381;2377;2373:11;2368:2;2361:5;2357:14;2344:45;2430:1;2425:2;2420;2413:5;2409:14;2405:23;2398:34;;2451:5;2441:15;;;;;1354:1108;;;;;;;:::o;2674:315::-;2742:6;2750;2803:2;2791:9;2782:7;2778:23;2774:32;2771:52;;;2819:1;2816;2809:12;2771:52;2858:9;2845:23;2877:31;2902:5;2877:31;:::i;:::-;2927:5;2979:2;2964:18;;;;2951:32;;-1:-1:-1;;;2674:315:1:o;2994:180::-;3053:6;3106:2;3094:9;3085:7;3081:23;3077:32;3074:52;;;3122:1;3119;3112:12;3074:52;-1:-1:-1;3145:23:1;;2994:180;-1:-1:-1;2994:180:1:o;3361:247::-;3420:6;3473:2;3461:9;3452:7;3448:23;3444:32;3441:52;;;3489:1;3486;3479:12;3441:52;3528:9;3515:23;3547:31;3572:5;3547:31;:::i;3613:356::-;3815:2;3797:21;;;3834:18;;;3827:30;3893:34;3888:2;3873:18;;3866:62;3960:2;3945:18;;3613:356::o;4714:251::-;4784:6;4837:2;4825:9;4816:7;4812:23;4808:32;4805:52;;;4853:1;4850;4843:12;4805:52;4885:9;4879:16;4904:31;4929:5;4904:31;:::i;4970:217::-;5010:1;5036;5026:132;;5080:10;5075:3;5071:20;5068:1;5061:31;5115:4;5112:1;5105:15;5143:4;5140:1;5133:15;5026:132;-1:-1:-1;5172:9:1;;4970:217::o;5192:936::-;5287:6;5318:2;5361;5349:9;5340:7;5336:23;5332:32;5329:52;;;5377:1;5374;5367:12;5329:52;5410:9;5404:16;5439:18;5480:2;5472:6;5469:14;5466:34;;;5496:1;5493;5486:12;5466:34;5534:6;5523:9;5519:22;5509:32;;5579:7;5572:4;5568:2;5564:13;5560:27;5550:55;;5601:1;5598;5591:12;5550:55;5630:2;5624:9;5652:2;5648;5645:10;5642:36;;;5658:18;;:::i;:::-;5704:2;5701:1;5697:10;5687:20;;5727:28;5751:2;5747;5743:11;5727:28;:::i;:::-;5789:15;;;5859:11;;;5855:20;;;5820:12;;;;5887:19;;;5884:39;;;5919:1;5916;5909:12;5884:39;5943:11;;;;5963:135;5979:6;5974:3;5971:15;5963:135;;;6045:10;;6033:23;;5996:12;;;;6076;;;;5963:135;;;6117:5;5192:936;-1:-1:-1;;;;;;;;5192:936:1:o;6133:127::-;6194:10;6189:3;6185:20;6182:1;6175:31;6225:4;6222:1;6215:15;6249:4;6246:1;6239:15;6265:135;6304:3;-1:-1:-1;;6325:17:1;;6322:43;;;6345:18;;:::i;:::-;-1:-1:-1;6392:1:1;6381:13;;6265:135::o;6405:277::-;6472:6;6525:2;6513:9;6504:7;6500:23;6496:32;6493:52;;;6541:1;6538;6531:12;6493:52;6573:9;6567:16;6626:5;6619:13;6612:21;6605:5;6602:32;6592:60;;6648:1;6645;6638:12
Swarm Source
ipfs://674d9a2901d1af07744a9c5e052b781f67f4f6b3944b262703fd1f45793d0561
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.