Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name:
bDFSocial_Farming
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-02-15 */ pragma solidity >=0.7.0; // SPDX-License-Identifier: BSD-3-Clause /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256` * (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner ; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } interface Token { function transferFrom(address, address, uint) external returns (bool); function transfer(address, uint) external returns (bool); function balanceOf(address _owner) external returns (uint256 balance); } contract bDFSocial_Farming is Ownable { using SafeMath for uint; using EnumerableSet for EnumerableSet.AddressSet; event RewardsTransferred(address holder, uint amount); // DEFISocial token contract address address public constant LPtokenAddress = 0x0A88Bd9Bb4Ad2625d693b521D18485EA020FEB0D; // BNB - bDFSocial LP address public constant tokenAddress = 0x75de745a333a47Fe786e8DbBf3E9440d3d5Bc809; //bDFSocial uint public constant rewardInterval = 365 days; // staking fee 1 percent uint public constant stakingFeeRate = 100; // unstaking fee 0.50 percent uint public constant unstakingFeeRate = 100; // unstaking possible after 12 hours //uint public constant cliffTime = 72 hours; uint public totalClaimedRewards = 0; EnumerableSet.AddressSet private holders; mapping (address => uint) public depositedTokens; mapping (address => uint) public stakingTime; mapping (address => uint) public lastClaimedTime; mapping (address => uint) public totalEarnedTokens; function updateAccount(address account) private { uint pendingDivs = getPendingDivs(account); if (pendingDivs > 0 && totalClaimedRewards.add(pendingDivs) <= 50000000000000000000) { require(Token(tokenAddress).transfer(account, pendingDivs), "Could not transfer tokens."); totalEarnedTokens[account] = totalEarnedTokens[account].add(pendingDivs); totalClaimedRewards = totalClaimedRewards.add(pendingDivs); emit RewardsTransferred(account, pendingDivs); } lastClaimedTime[account] = block.timestamp; } function getPendingDivs(address _holder) public view returns (uint) { if (!holders.contains(_holder)) return 0; if (depositedTokens[_holder] == 0) return 0; uint timeDiff = block.timestamp.sub(lastClaimedTime[_holder]); uint stakedAmount = depositedTokens[_holder]; uint numHolders = getNumberOfHolders(); uint rewardRateFinal = numHolders.mul(1e2); uint pendingDivs = stakedAmount .mul(rewardRateFinal) .mul(timeDiff) .div(rewardInterval) .div(1e4); return pendingDivs; } function getNumberOfHolders() public view returns (uint) { return holders.length(); } function deposit(uint amountToStake) public { require(amountToStake > 300000000000000000, "Cannot deposit less than 0.5 Tokens"); require(Token(LPtokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance"); updateAccount(msg.sender); uint fee = amountToStake.mul(stakingFeeRate).div(1e4); uint amountAfterFee = amountToStake.sub(fee); require(Token(LPtokenAddress).transfer(owner, fee), "Could not transfer deposit fee."); depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountAfterFee); if (!holders.contains(msg.sender)) { holders.add(msg.sender); stakingTime[msg.sender] = block.timestamp; }else{ } } function withdraw(uint amountToWithdraw) public { require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); //require(block.timestamp.sub(stakingTime[msg.sender]) > cliffTime, "You recently staked, please wait before withdrawing."); if(totalClaimedRewards.add(getPendingDivs(msg.sender)) <= 50000000000000000000){ updateAccount(msg.sender); } uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4); uint amountAfterFee = amountToWithdraw.sub(fee); depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw); require(Token(LPtokenAddress).transfer(owner, fee), "Could not transfer withdraw fee."); require(Token(LPtokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens."); if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) { holders.remove(msg.sender); } } function emergencyWithdraw(uint amountToWithdraw) public { require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); //require(block.timestamp.sub(stakingTime[msg.sender]) > cliffTime, "You recently staked, please wait before withdrawing."); //updateAccount(msg.sender); uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4); uint amountAfterFee = amountToWithdraw.sub(fee); depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw); require(Token(LPtokenAddress).transfer(owner, fee), "Could not transfer withdraw fee."); require(Token(LPtokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens."); if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) { holders.remove(msg.sender); } } function claimDivs() public { updateAccount(msg.sender); } uint private constant stakingAndDaoTokens = 50e18; function getStakingAndDaoAmount() public view returns (uint) { if (totalClaimedRewards >= stakingAndDaoTokens) { return 0; } uint remaining = stakingAndDaoTokens.sub(totalClaimedRewards); return remaining; } // function to allow admin to claim *other* ERC20 tokens sent to this contract (by mistake) // Admin cannot transfer out YF-DAI from this smart contract function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { require (_tokenAddr != LPtokenAddress, "Cannot Transfer Out DFSocial!"); Token(_tokenAddr).transfer(_to, _amount); } }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsTransferred","type":"event"},{"inputs":[],"name":"LPtokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDivs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakingAndDaoAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060015534801561001557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ec9806100656000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806398896d10116100ad578063d578ceab11610071578063d578ceab14610473578063d816c7d514610491578063f2fde38b146104af578063f3f91fa0146104f3578063f9da7db81461054b5761012c565b806398896d10146103435780639d76ea581461039b578063b6b55f25146103cf578063bec4de3f146103fd578063c326bf4f1461041b5761012c565b8063583d42fd116100f4578063583d42fd146101d35780635ef057be1461022b5780636270cd18146102495780636a395ccb146102a15780638da5cb5b1461030f5761012c565b806319aa70e714610131578063268cab491461013b5780632e1a7d4d14610159578063308feec3146101875780635312ea8e146101a5575b600080fd5b61013961057f565b005b61014361058a565b6040518082815260200191505060405180910390f35b6101856004803603602081101561016f57600080fd5b81019080803590602001909291905050506105d1565b005b61018f610a97565b6040518082815260200191505060405180910390f35b6101d1600480360360208110156101bb57600080fd5b8101908080359060200190929190505050610aa8565b005b610215600480360360208110156101e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f38565b6040518082815260200191505060405180910390f35b610233610f50565b6040518082815260200191505060405180910390f35b61028b6004803603602081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f55565b6040518082815260200191505060405180910390f35b61030d600480360360608110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6d565b005b61031761112d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103856004803603602081101561035957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611151565b6040518082815260200191505060405180910390f35b6103a36112e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103fb600480360360208110156103e557600080fd5b81019080803590602001909291905050506112fc565b005b61040561175b565b6040518082815260200191505060405180910390f35b61045d6004803603602081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611763565b6040518082815260200191505060405180910390f35b61047b61177b565b6040518082815260200191505060405180910390f35b610499611781565b6040518082815260200191505060405180910390f35b6104f1600480360360208110156104c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611786565b005b6105356004803603602081101561050957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d5565b6040518082815260200191505060405180910390f35b6105536118ed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058833611905565b565b60006802b5e3af16b1880000600154106105a757600090506105ce565b60006105c76001546802b5e3af16b1880000611bc490919063ffffffff16565b9050809150505b90565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6802b5e3af16b18800006106ad61069c33611151565b600154611bdb90919063ffffffff16565b116106bc576106bb33611905565b5b60006106e66127106106d8606485611bf790919063ffffffff16565b611c2690919063ffffffff16565b905060006106fd8284611bc490919063ffffffff16565b905061075183600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b505050506040513d602081101561086357600080fd5b81019080805190602001909291905050506108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561096b57600080fd5b505af115801561097f573d6000803e3d6000fd5b505050506040513d602081101561099557600080fd5b8101908080519060200190929190505050610a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610a2c336002611c3f90919063ffffffff16565b8015610a7757506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610a9257610a90336002611c6f90919063ffffffff16565b505b505050565b6000610aa36002611c9f565b905090565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6000610b87612710610b79606485611bf790919063ffffffff16565b611c2690919063ffffffff16565b90506000610b9e8284611bc490919063ffffffff16565b9050610bf283600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610cda57600080fd5b505af1158015610cee573d6000803e3d6000fd5b505050506040513d6020811015610d0457600080fd5b8101908080519060200190929190505050610d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b8101908080519060200190929190505050610eb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610ecd336002611c3f90919063ffffffff16565b8015610f1857506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610f3357610f31336002611c6f90919063ffffffff16565b505b505050565b60056020528060005260406000206000915090505481565b606481565b60076020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fc557600080fd5b730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43616e6e6f74205472616e73666572204f7574204446536f6369616c2100000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110ec57600080fd5b505af1158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b810190808051906020019092919050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611167826002611c3f90919063ffffffff16565b61117457600090506112df565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156111c557600090506112df565b6000611219600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611bc490919063ffffffff16565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611269610a97565b90506000611281606483611bf790919063ffffffff16565b905060006112d46127106112c66301e133806112b8896112aa888b611bf790919063ffffffff16565b611bf790919063ffffffff16565b611c2690919063ffffffff16565b611c2690919063ffffffff16565b905080955050505050505b919050565b7375de745a333a47fe786e8dbbf3e9440d3d5bc80981565b670429d069189e0000811161135c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e716023913960400191505060405180910390fd5b730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156113ff57600080fd5b505af1158015611413573d6000803e3d6000fd5b505050506040513d602081101561142957600080fd5b81019080805190602001909291905050506114ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b6114b533611905565b60006114df6127106114d1606485611bf790919063ffffffff16565b611c2690919063ffffffff16565b905060006114f68284611bc490919063ffffffff16565b9050730a88bd9bb4ad2625d693b521d18485ea020feb0d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561159d57600080fd5b505af11580156115b1573d6000803e3d6000fd5b505050506040513d60208110156115c757600080fd5b810190808051906020019092919050505061164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61169c81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdb90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f3336002611c3f90919063ffffffff16565b6117555761170b336002611cb490919063ffffffff16565b5042600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611756565b5b505050565b6301e1338081565b60046020528060005260406000206000915090505481565b60015481565b606481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561181857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b730a88bd9bb4ad2625d693b521d18485ea020feb0d81565b600061191082611151565b905060008111801561193f57506802b5e3af16b188000061193c82600154611bdb90919063ffffffff16565b11155b15611b7c577375de745a333a47fe786e8dbbf3e9440d3d5bc80973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505050506040513d60208110156119f357600080fd5b8101908080519060200190929190505050611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b611ac881600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdb90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2081600154611bdb90919063ffffffff16565b6001819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600082821115611bd057fe5b818303905092915050565b600080828401905083811015611bed57fe5b8091505092915050565b60008082840290506000841480611c16575082848281611c1357fe5b04145b611c1c57fe5b8091505092915050565b600080828481611c3257fe5b0490508091505092915050565b6000611c67836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ce4565b905092915050565b6000611c97836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d07565b905092915050565b6000611cad82600001611def565b9050919050565b6000611cdc836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e00565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114611de35760006001820390506000600186600001805490500390506000866000018281548110611d5257fe5b9060005260206000200154905080876000018481548110611d6f57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480611da757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611de9565b60009150505b92915050565b600081600001805490509050919050565b6000611e0c8383611ce4565b611e65578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611e6a565b600090505b9291505056fe43616e6e6f74206465706f736974206c657373207468616e20302e3520546f6b656e73a26469706673582212209e3c489f4f7c432fef917e7c1f62956591efa79508fbf3bb852c03487221d29464736f6c63430007060033
Deployed ByteCode Sourcemap
10103:6316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15585:72;;;:::i;:::-;;15743:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13527:1074;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12564:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14613:960;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11060:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10661:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11166:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16179:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9063:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11840:712;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10459:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12681:834;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10572:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11005:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10904:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10750:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9677:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11111:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10347:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15585:72;15624:25;15638:10;15624:13;:25::i;:::-;15585:72::o;15743:261::-;15798:4;15725:5;15819:19;;:42;15815:83;;15885:1;15878:8;;;;15815:83;15908:14;15925:44;15949:19;;15725:5;15925:23;;:44;;;;:::i;:::-;15908:61;;15987:9;15980:16;;;15743:261;;:::o;13527:1074::-;13625:16;13594:15;:27;13610:10;13594:27;;;;;;;;;;;;;;;;:47;;13586:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13895:20;13840:51;13864:26;13879:10;13864:14;:26::i;:::-;13840:19;;:23;;:51;;;;:::i;:::-;:75;13837:131;;13931:25;13945:10;13931:13;:25::i;:::-;13837:131;13998:8;14009:47;14052:3;14009:38;10790:3;14009:16;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;13998:58;;14067:19;14089:25;14110:3;14089:16;:20;;:25;;;;:::i;:::-;14067:47;;14165:49;14197:16;14165:15;:27;14181:10;14165:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;14135:15;:27;14151:10;14135:27;;;;;;;;;;;;;;;:79;;;;10388:42;14243:30;;;14274:5;;;;;;;;;;14281:3;14243:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14235:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10388:42;14341:30;;;14372:10;14384:14;14341:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14333:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14475:28;14492:10;14475:7;:16;;:28;;;;:::i;:::-;:64;;;;;14538:1;14507:15;:27;14523:10;14507:27;;;;;;;;;;;;;;;;:32;14475:64;14471:123;;;14556:26;14571:10;14556:7;:14;;:26;;;;:::i;:::-;;14471:123;13527:1074;;;:::o;12564:99::-;12615:4;12639:16;:7;:14;:16::i;:::-;12632:23;;12564:99;:::o;14613:960::-;14720:16;14689:15;:27;14705:10;14689:27;;;;;;;;;;;;;;;;:47;;14681:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14980:8;14991:47;15034:3;14991:38;10790:3;14991:16;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;14980:58;;15049:19;15071:25;15092:3;15071:16;:20;;:25;;;;:::i;:::-;15049:47;;15147:49;15179:16;15147:15;:27;15163:10;15147:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;15117:15;:27;15133:10;15117:27;;;;;;;;;;;;;;;:79;;;;10388:42;15225:30;;;15256:5;;;;;;;;;;15263:3;15225:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15217:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10388:42;15323:30;;;15354:10;15366:14;15323:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15315:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15447:28;15464:10;15447:7;:16;;:28;;;;:::i;:::-;:64;;;;;15510:1;15479:15;:27;15495:10;15479:27;;;;;;;;;;;;;;;;:32;15447:64;15443:123;;;15528:26;15543:10;15528:7;:14;;:26;;;;:::i;:::-;;15443:123;14613:960;;;:::o;11060:44::-;;;;;;;;;;;;;;;;;:::o;10661:41::-;10699:3;10661:41;:::o;11166:50::-;;;;;;;;;;;;;;;;;:::o;16179:237::-;9488:5;;;;;;;;;;9474:19;;:10;:19;;;9466:28;;;;;;10388:42:::1;16295:28;;:10;:28;;;;16286:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16374:10;16368:26;;;16395:3;16400:7;16368:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;16179:237:::0;;;:::o;9063:20::-;;;;;;;;;;;;:::o;11840:712::-;11902:4;11924:25;11941:7;11924;:16;;:25;;;;:::i;:::-;11919:40;;11958:1;11951:8;;;;11919:40;12002:1;11974:15;:24;11990:7;11974:24;;;;;;;;;;;;;;;;:29;11970:43;;;12012:1;12005:8;;;;11970:43;12026:13;12042:45;12062:15;:24;12078:7;12062:24;;;;;;;;;;;;;;;;12042:15;:19;;:45;;;;:::i;:::-;12026:61;;12098:17;12118:15;:24;12134:7;12118:24;;;;;;;;;;;;;;;;12098:44;;12173:15;12191:20;:18;:20::i;:::-;12173:38;;12222:20;12245:19;12260:3;12245:10;:14;;:19;;;;:::i;:::-;12222:42;;12285:16;12304:197;12497:3;12304:158;10610:8;12304:108;12403:8;12304:63;12351:15;12304:12;:46;;:63;;;;:::i;:::-;:98;;:108;;;;:::i;:::-;:142;;:158;;;;:::i;:::-;:192;;:197;;;;:::i;:::-;12285:216;;12533:11;12526:18;;;;;;;11840:712;;;;:::o;10459:81::-;10498:42;10459:81;:::o;12681:834::-;12760:18;12744:13;:34;12736:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10388:42;12837:34;;;12872:10;12892:4;12899:13;12837:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12829:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12967:25;12981:10;12967:13;:25::i;:::-;13013:8;13024:42;13062:3;13024:33;10699:3;13024:13;:17;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;13013:53;;13077:19;13099:22;13117:3;13099:13;:17;;:22;;;;:::i;:::-;13077:44;;10388:42;13140:30;;;13171:5;;;;;;;;;;13178:3;13140:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13132:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13269:47;13301:14;13269:15;:27;13285:10;13269:27;;;;;;;;;;;;;;;;:31;;:47;;;;:::i;:::-;13239:15;:27;13255:10;13239:27;;;;;;;;;;;;;;;:77;;;;13342:28;13359:10;13342:7;:16;;:28;;;;:::i;:::-;13337:171;;13387:23;13399:10;13387:7;:11;;:23;;;;:::i;:::-;;13451:15;13425:11;:23;13437:10;13425:23;;;;;;;;;;;;;;;:41;;;;13337:171;;;;12681:834;;;:::o;10572:46::-;10610:8;10572:46;:::o;11005:48::-;;;;;;;;;;;;;;;;;:::o;10904:35::-;;;;:::o;10750:43::-;10790:3;10750:43;:::o;9677:178::-;9488:5;;;;;;;;;;9474:19;;:10;:19;;;9466:28;;;;;;9774:1:::1;9754:22;;:8;:22;;;;9746:31;;;::::0;::::1;;9817:8;9789:37;;9810:5;::::0;::::1;;;;;;;;9789:37;;;;;;;;;;;;9841:8;9833:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;9677:178:::0;:::o;11111:48::-;;;;;;;;;;;;;;;;;:::o;10347:83::-;10388:42;10347:83;:::o;11235:593::-;11294:16;11313:23;11328:7;11313:14;:23::i;:::-;11294:42;;11365:1;11351:11;:15;:79;;;;;11410:20;11370:36;11394:11;11370:19;;:23;;:36;;;;:::i;:::-;:60;;11351:79;11347:421;;;10498:42;11455:28;;;11484:7;11493:11;11455:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11447:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11580:43;11611:11;11580:17;:26;11598:7;11580:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;11551:17;:26;11569:7;11551:26;;;;;;;;;;;;;;;:72;;;;11660:36;11684:11;11660:19;;:23;;:36;;;;:::i;:::-;11638:19;:58;;;;11716:40;11735:7;11744:11;11716:40;;;;;;;;;;;;;;;;;;;;;;;;;;11347:421;11805:15;11778;:24;11794:7;11778:24;;;;;;;;;;;;;;;:42;;;;11235:593;;:::o;617:113::-;675:7;703:1;698;:6;;691:14;;;;723:1;719;:5;712:12;;617:113;;;;:::o;736:133::-;794:7;810:9;826:1;822;:5;810:17;;846:1;841;:6;;834:14;;;;862:1;855:8;;;736:133;;;;:::o;188:147::-;246:7;262:9;278:1;274;:5;262:17;;298:1;293;:6;:20;;;;312:1;307;303;:5;;;;;;:10;293:20;286:28;;;;328:1;321:8;;;188:147;;;;:::o;341:270::-;399:7;490:9;506:1;502;:5;;;;;;490:17;;604:1;597:8;;;341:270;;;;:::o;6378:158::-;6458:4;6482:46;6492:3;:10;;6520:5;6512:14;;6504:23;;6482:9;:46::i;:::-;6475:53;;6378:158;;;;:::o;6143:149::-;6216:4;6240:44;6248:3;:10;;6276:5;6268:14;;6260:23;;6240:7;:44::i;:::-;6233:51;;6143:149;;;;:::o;6622:117::-;6685:7;6712:19;6720:3;:10;;6712:7;:19::i;:::-;6705:26;;6622:117;;;:::o;5824:143::-;5894:4;5918:41;5923:3;:10;;5951:5;5943:14;;5935:23;;5918:4;:41::i;:::-;5911:48;;5824:143;;;;:::o;4698:129::-;4771:4;4818:1;4795:3;:12;;:19;4808:5;4795:19;;;;;;;;;;;;:24;;4788:31;;4698:129;;;;:::o;3068:1544::-;3134:4;3252:18;3273:3;:12;;:19;3286:5;3273:19;;;;;;;;;;;;3252:40;;3323:1;3309:10;:15;3305:1300;;3671:21;3708:1;3695:10;:14;3671:38;;3724:17;3765:1;3744:3;:11;;:18;;;;:22;3724:42;;4011:17;4031:3;:11;;4043:9;4031:22;;;;;;;;;;;;;;;;4011:42;;4177:9;4148:3;:11;;4160:13;4148:26;;;;;;;;;;;;;;;:38;;;;4296:1;4280:13;:17;4254:3;:12;;:23;4267:9;4254:23;;;;;;;;;;;:43;;;;4406:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;4501:3;:12;;:19;4514:5;4501:19;;;;;;;;;;;4494:26;;;4544:4;4537:11;;;;;;;;3305:1300;4588:5;4581:12;;;3068:1544;;;;;:::o;4913:109::-;4969:7;4996:3;:11;;:18;;;;4989:25;;4913:109;;;:::o;2478:414::-;2541:4;2563:21;2573:3;2578:5;2563:9;:21::i;:::-;2558:327;;2601:3;:11;;2618:5;2601:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2784:3;:11;;:18;;;;2762:3;:12;;:19;2775:5;2762:19;;;;;;;;;;;:40;;;;2824:4;2817:11;;;;2558:327;2868:5;2861:12;;2478:414;;;;;:::o
Swarm Source
ipfs://9e3c489f4f7c432fef917e7c1f62956591efa79508fbf3bb852c03487221d294
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.