More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,404 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Yields | 11853496 | 1408 days ago | IN | 0 ETH | 0.00355611 | ||||
Lift | 11772709 | 1420 days ago | IN | 0 ETH | 0.00272963 | ||||
Claim Yields | 11772696 | 1420 days ago | IN | 0 ETH | 0.00314385 | ||||
Claim Yields | 11747189 | 1424 days ago | IN | 0 ETH | 0.00261704 | ||||
Claim Yields | 11712586 | 1429 days ago | IN | 0 ETH | 0.00236025 | ||||
Lift | 11712580 | 1429 days ago | IN | 0 ETH | 0.00299497 | ||||
Lift | 11712575 | 1429 days ago | IN | 0 ETH | 0.0025449 | ||||
Lift | 11712564 | 1429 days ago | IN | 0 ETH | 0.0025449 | ||||
Claim Yields | 11712559 | 1429 days ago | IN | 0 ETH | 0.00217143 | ||||
Claim Yields | 11712501 | 1429 days ago | IN | 0 ETH | 0.00191967 | ||||
Claim Yields | 11712498 | 1429 days ago | IN | 0 ETH | 0.0018882 | ||||
Lift | 11695979 | 1432 days ago | IN | 0 ETH | 0.00182452 | ||||
Claim Yields | 11688814 | 1433 days ago | IN | 0 ETH | 0.00213996 | ||||
Place | 11688814 | 1433 days ago | IN | 0 ETH | 0.00144444 | ||||
Claim Yields | 11676695 | 1435 days ago | IN | 0 ETH | 0.00144762 | ||||
Claim Yields | 11610539 | 1445 days ago | IN | 0 ETH | 0.00302112 | ||||
Claim Yields | 11610530 | 1445 days ago | IN | 0 ETH | 0.00317847 | ||||
Claim Yields | 11579294 | 1450 days ago | IN | 0 ETH | 0.00173085 | ||||
Lift | 11577100 | 1450 days ago | IN | 0 ETH | 0.00321873 | ||||
Lift | 11573399 | 1451 days ago | IN | 0 ETH | 0.00127328 | ||||
Claim Yields | 11573385 | 1451 days ago | IN | 0 ETH | 0.00111718 | ||||
Claim Yields | 11573217 | 1451 days ago | IN | 0 ETH | 0.00100704 | ||||
Claim Yields | 11573178 | 1451 days ago | IN | 0 ETH | 0.00118641 | ||||
Claim Yields | 11569045 | 1451 days ago | IN | 0 ETH | 0.00144762 | ||||
Claim Yields | 11569041 | 1451 days ago | IN | 0 ETH | 0.00217143 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Pool1
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-18 */ pragma solidity 0.6.12; // 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 admin; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { admin = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == admin); _; } /** * @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(admin, newOwner); admin = newOwner; } } interface Token { function transferFrom(address, address, uint) external returns (bool); function transfer(address, uint) external returns (bool); } contract Pool1 is Ownable { using SafeMath for uint; using EnumerableSet for EnumerableSet.AddressSet; event RewardsTransferred(address holder, uint amount); // yfilend token contract address address public tokenAddress; // reward rate % per year uint public rewardRate = 6000; uint public rewardInterval = 365 days; // staking fee percent uint public stakingFeeRate = 0; // unstaking fee percent uint public unstakingFeeRate = 0; // unstaking possible Time uint public PossibleUnstakeTime = 48 hours; uint public totalClaimedRewards = 0; uint private FundedTokens; bool public stakingStatus = false; EnumerableSet.AddressSet private holders; mapping (address => uint) public depositedTokens; mapping (address => uint) public stakingTime; mapping (address => uint) public lastClaimedTime; mapping (address => uint) public totalEarnedTokens; /*=============================ADMINISTRATIVE FUNCTIONS ==================================*/ function setTokenAddresses(address _tokenAddr) public onlyOwner returns(bool){ require(_tokenAddr != address(0), "Invalid address format is not supported"); tokenAddress = _tokenAddr; } function stakingFeeRateSet(uint _stakingFeeRate, uint _unstakingFeeRate) public onlyOwner returns(bool){ stakingFeeRate = _stakingFeeRate; unstakingFeeRate = _unstakingFeeRate; } function rewardRateSet(uint _rewardRate) public onlyOwner returns(bool){ rewardRate = _rewardRate; } function StakingReturnsAmountSet(uint _poolreward) public onlyOwner returns(bool){ FundedTokens = _poolreward; } function possibleUnstakeTimeSet(uint _possibleUnstakeTime) public onlyOwner returns(bool){ PossibleUnstakeTime = _possibleUnstakeTime; } function rewardIntervalSet(uint _rewardInterval) public onlyOwner returns(bool){ rewardInterval = _rewardInterval; } function allowStaking(bool _status) public onlyOwner returns(bool){ require(tokenAddress != address(0), "Interracting token address is not yet configured"); stakingStatus = _status; } function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { if (_tokenAddr == tokenAddress) { if (_amount > getFundedTokens()) { revert(); } totalClaimedRewards = totalClaimedRewards.add(_amount); } Token(_tokenAddr).transfer(_to, _amount); } function updateAccount(address account) private { uint unclaimedDivs = getUnclaimedDivs(account); if (unclaimedDivs > 0) { require(Token(tokenAddress).transfer(account, unclaimedDivs), "Could not transfer tokens."); totalEarnedTokens[account] = totalEarnedTokens[account].add(unclaimedDivs); totalClaimedRewards = totalClaimedRewards.add(unclaimedDivs); emit RewardsTransferred(account, unclaimedDivs); } lastClaimedTime[account] = now; } function getUnclaimedDivs(address _holder) public view returns (uint) { if (!holders.contains(_holder)) return 0; if (depositedTokens[_holder] == 0) return 0; uint timeDiff = now.sub(lastClaimedTime[_holder]); uint stakedAmount = depositedTokens[_holder]; uint unclaimedDivs = stakedAmount .mul(rewardRate) .mul(timeDiff) .div(rewardInterval) .div(1e4); return unclaimedDivs; } function getNumberOfHolders() public view returns (uint) { return holders.length(); } function place(uint amountToStake) public { require(stakingStatus == true, "Staking is not yet initialized"); require(amountToStake > 0, "Cannot deposit 0 Tokens"); require(Token(tokenAddress).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(tokenAddress).transfer(admin, 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] = now; } } function lift(uint amountToWithdraw) public { require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw"); require(now.sub(stakingTime[msg.sender]) > PossibleUnstakeTime, "You have not staked for a while yet, kindly wait a bit more"); updateAccount(msg.sender); uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4); uint amountAfterFee = amountToWithdraw.sub(fee); require(Token(tokenAddress).transfer(admin, fee), "Could not transfer withdraw fee."); require(Token(tokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens."); depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw); if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) { holders.remove(msg.sender); } } function claimYields() public { updateAccount(msg.sender); } function getFundedTokens() public view returns (uint) { if (totalClaimedRewards >= FundedTokens) { return 0; } uint remaining = FundedTokens.sub(totalClaimedRewards); return remaining; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"PossibleUnstakeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolreward","type":"uint256"}],"name":"StakingReturnsAmountSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"allowStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimYields","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFundedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getUnclaimedDivs","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":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"lift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"place","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_possibleUnstakeTime","type":"uint256"}],"name":"possibleUnstakeTimeSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardInterval","type":"uint256"}],"name":"rewardIntervalSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"rewardRateSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"setTokenAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingFeeRate","type":"uint256"},{"internalType":"uint256","name":"_unstakingFeeRate","type":"uint256"}],"name":"stakingFeeRateSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]
Contract Creation Code
60806040526117706002556301e133806003556000600481905560058190556202a3006006556007556009805460ff1916905534801561003e57600080fd5b50600080546001600160a01b03191633179055611361806100606000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636a395ccb116100f9578063d578ceab11610097578063f2fde38b11610071578063f2fde38b1461042a578063f3073ee714610450578063f3f91fa01461046f578063f851a44014610495576101c4565b8063d578ceab14610412578063d816c7d51461041a578063f1587ea114610422576101c4565b8063b52b50e4116100d3578063b52b50e4146103aa578063bec4de3f146103c7578063c0a6d78b146103cf578063c326bf4f146103ec576101c4565b80636a395ccb146103485780637b0a47ee1461037e5780639d76ea5814610386576101c4565b8063455ab53c11610166578063583d42fd11610140578063583d42fd146102ec5780635ef057be146103125780636270cd181461031a5780636654ffdf14610340576101c4565b8063455ab53c146102aa5780634908e386146102b257806352cd0d40146102cf576101c4565b80632f278fe8116101a25780632f278fe814610258578063308feec31461026257806337c5785a1461026a578063384431771461028d576101c4565b8063069ca4d0146101c95780630d2adb90146101fa5780631e94723f14610220575b600080fd5b6101e6600480360360208110156101df57600080fd5b503561049d565b604080519115158252519081900360200190f35b6101e66004803603602081101561021057600080fd5b50356001600160a01b03166104be565b6102466004803603602081101561023657600080fd5b50356001600160a01b031661053f565b60408051918252519081900360200190f35b6102606105f8565b005b610246610603565b6101e66004803603604081101561028057600080fd5b5080359060200135610615565b6101e6600480360360208110156102a357600080fd5b5035610639565b6101e661065a565b6101e6600480360360208110156102c857600080fd5b5035610663565b610260600480360360208110156102e557600080fd5b5035610684565b6102466004803603602081101561030257600080fd5b50356001600160a01b0316610989565b61024661099b565b6102466004803603602081101561033057600080fd5b50356001600160a01b03166109a1565b6102466109b3565b6102606004803603606081101561035e57600080fd5b506001600160a01b038135811691602081013590911690604001356109b9565b610246610a93565b61038e610a99565b604080516001600160a01b039092168252519081900360200190f35b610260600480360360208110156103c057600080fd5b5035610aa8565b610246610d9d565b6101e6600480360360208110156103e557600080fd5b5035610da3565b6102466004803603602081101561040257600080fd5b50356001600160a01b0316610dc4565b610246610dd6565b610246610ddc565b610246610de2565b6102606004803603602081101561044057600080fd5b50356001600160a01b0316610e16565b6101e66004803603602081101561046657600080fd5b50351515610e9b565b6102466004803603602081101561048557600080fd5b50356001600160a01b0316610f0f565b61038e610f21565b600080546001600160a01b031633146104b557600080fd5b60039190915590565b600080546001600160a01b031633146104d657600080fd5b6001600160a01b03821661051b5760405162461bcd60e51b81526004018080602001828103825260278152602001806112d56027913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03939093169290921790915590565b600061054c600a83610f30565b610558575060006105f3565b6001600160a01b0382166000908152600c602052604090205461057d575060006105f3565b6001600160a01b0382166000908152600e60205260408120546105a1904290610f4e565b6001600160a01b0384166000908152600c602052604081205460035460025493945090926105ed91612710916105e79190829088906105e1908990610f60565b90610f60565b90610f80565b93505050505b919050565b61060133610f95565b565b600061060f600a611129565b90505b90565b600080546001600160a01b0316331461062d57600080fd5b60049290925560055590565b600080546001600160a01b0316331461065157600080fd5b60089190915590565b60095460ff1681565b600080546001600160a01b0316331461067b57600080fd5b60029190915590565b336000908152600c60205260409020548111156106e8576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f207769746864726177000000000000604482015290519081900360640190fd5b600654336000908152600d6020526040902054610706904290610f4e565b116107425760405162461bcd60e51b815260040180806020018281038252603b81526020018061129a603b913960400191505060405180910390fd5b61074b33610f95565b60006107686127106105e760055485610f6090919063ffffffff16565b905060006107768383610f4e565b600154600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b1580156107d257600080fd5b505af11580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b505161084f576040805162461bcd60e51b815260206004820181905260248201527f436f756c64206e6f74207472616e73666572207769746864726177206665652e604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156108a357600080fd5b505af11580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051610920576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b336000908152600c602052604090205461093a9084610f4e565b336000818152600c602052604090209190915561095990600a90610f30565b80156109725750336000908152600c6020526040902054155b1561098457610982600a33611134565b505b505050565b600d6020526000908152604090205481565b60045481565b600f6020526000908152604090205481565b60065481565b6000546001600160a01b031633146109d057600080fd5b6001546001600160a01b0384811691161415610a0b576109ee610de2565b8111156109fa57600080fd5b600754610a079082611149565b6007555b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050506040513d6020811015610a8c57600080fd5b5050505050565b60025481565b6001546001600160a01b031681565b60095460ff161515600114610b04576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e67206973206e6f742079657420696e697469616c697a65640000604482015290519081900360640190fd5b60008111610b59576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206465706f736974203020546f6b656e73000000000000000000604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b505050506040513d6020811015610bdd57600080fd5b5051610c30576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420546f6b656e20416c6c6f77616e636500000000604482015290519081900360640190fd5b610c3933610f95565b6000610c566127106105e760045485610f6090919063ffffffff16565b90506000610c648383610f4e565b600154600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050506040513d6020811015610cea57600080fd5b5051610d3d576040805162461bcd60e51b815260206004820152601f60248201527f436f756c64206e6f74207472616e73666572206465706f736974206665652e00604482015290519081900360640190fd5b336000908152600c6020526040902054610d579082611149565b336000818152600c6020526040902091909155610d7690600a90610f30565b61098457610d85600a33611158565b50336000908152600d60205260409020429055505050565b60035481565b600080546001600160a01b03163314610dbb57600080fd5b60069190915590565b600c6020526000908152604090205481565b60075481565b60055481565b600060085460075410610df757506000610612565b6000610e10600754600854610f4e90919063ffffffff16565b91505090565b6000546001600160a01b03163314610e2d57600080fd5b6001600160a01b038116610e4057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610eb357600080fd5b6001546001600160a01b0316610efa5760405162461bcd60e51b81526004018080602001828103825260308152602001806112fc6030913960400191505060405180910390fd5b6009805460ff19169215159290921790915590565b600e6020526000908152604090205481565b6000546001600160a01b031681565b6000610f45836001600160a01b03841661116d565b90505b92915050565b600082821115610f5a57fe5b50900390565b6000828202831580610f7a575082848281610f7757fe5b04145b610f4557fe5b600080828481610f8c57fe5b04949350505050565b6000610fa08261053f565b9050801561110c576001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b505050506040513d602081101561102857600080fd5b505161107b576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600f602052604090205461109e9082611149565b6001600160a01b0383166000908152600f60205260409020556007546110c49082611149565b600755604080516001600160a01b03841681526020810183905281517f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf130929181900390910190a15b506001600160a01b03166000908152600e60205260409020429055565b6000610f4882611185565b6000610f45836001600160a01b038416611189565b600082820183811015610f4557fe5b6000610f45836001600160a01b03841661124f565b60009081526001919091016020526040902054151590565b5490565b6000818152600183016020526040812054801561124557835460001980830191908101906000908790839081106111bc57fe5b90600052602060002001549050808760000184815481106111d957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061120957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610f48565b6000915050610f48565b600061125b838361116d565b61129157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f48565b506000610f4856fe596f752068617665206e6f74207374616b656420666f722061207768696c65207965742c206b696e646c792077616974206120626974206d6f7265496e76616c6964206164647265737320666f726d6174206973206e6f7420737570706f72746564496e74657272616374696e6720746f6b656e2061646472657373206973206e6f742079657420636f6e66696775726564a2646970667358221220b86bdac90c72019060fcff1677dfcee4f3fcd1e1cdcb6e7c72b0b2d1c54e342864736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636a395ccb116100f9578063d578ceab11610097578063f2fde38b11610071578063f2fde38b1461042a578063f3073ee714610450578063f3f91fa01461046f578063f851a44014610495576101c4565b8063d578ceab14610412578063d816c7d51461041a578063f1587ea114610422576101c4565b8063b52b50e4116100d3578063b52b50e4146103aa578063bec4de3f146103c7578063c0a6d78b146103cf578063c326bf4f146103ec576101c4565b80636a395ccb146103485780637b0a47ee1461037e5780639d76ea5814610386576101c4565b8063455ab53c11610166578063583d42fd11610140578063583d42fd146102ec5780635ef057be146103125780636270cd181461031a5780636654ffdf14610340576101c4565b8063455ab53c146102aa5780634908e386146102b257806352cd0d40146102cf576101c4565b80632f278fe8116101a25780632f278fe814610258578063308feec31461026257806337c5785a1461026a578063384431771461028d576101c4565b8063069ca4d0146101c95780630d2adb90146101fa5780631e94723f14610220575b600080fd5b6101e6600480360360208110156101df57600080fd5b503561049d565b604080519115158252519081900360200190f35b6101e66004803603602081101561021057600080fd5b50356001600160a01b03166104be565b6102466004803603602081101561023657600080fd5b50356001600160a01b031661053f565b60408051918252519081900360200190f35b6102606105f8565b005b610246610603565b6101e66004803603604081101561028057600080fd5b5080359060200135610615565b6101e6600480360360208110156102a357600080fd5b5035610639565b6101e661065a565b6101e6600480360360208110156102c857600080fd5b5035610663565b610260600480360360208110156102e557600080fd5b5035610684565b6102466004803603602081101561030257600080fd5b50356001600160a01b0316610989565b61024661099b565b6102466004803603602081101561033057600080fd5b50356001600160a01b03166109a1565b6102466109b3565b6102606004803603606081101561035e57600080fd5b506001600160a01b038135811691602081013590911690604001356109b9565b610246610a93565b61038e610a99565b604080516001600160a01b039092168252519081900360200190f35b610260600480360360208110156103c057600080fd5b5035610aa8565b610246610d9d565b6101e6600480360360208110156103e557600080fd5b5035610da3565b6102466004803603602081101561040257600080fd5b50356001600160a01b0316610dc4565b610246610dd6565b610246610ddc565b610246610de2565b6102606004803603602081101561044057600080fd5b50356001600160a01b0316610e16565b6101e66004803603602081101561046657600080fd5b50351515610e9b565b6102466004803603602081101561048557600080fd5b50356001600160a01b0316610f0f565b61038e610f21565b600080546001600160a01b031633146104b557600080fd5b60039190915590565b600080546001600160a01b031633146104d657600080fd5b6001600160a01b03821661051b5760405162461bcd60e51b81526004018080602001828103825260278152602001806112d56027913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03939093169290921790915590565b600061054c600a83610f30565b610558575060006105f3565b6001600160a01b0382166000908152600c602052604090205461057d575060006105f3565b6001600160a01b0382166000908152600e60205260408120546105a1904290610f4e565b6001600160a01b0384166000908152600c602052604081205460035460025493945090926105ed91612710916105e79190829088906105e1908990610f60565b90610f60565b90610f80565b93505050505b919050565b61060133610f95565b565b600061060f600a611129565b90505b90565b600080546001600160a01b0316331461062d57600080fd5b60049290925560055590565b600080546001600160a01b0316331461065157600080fd5b60089190915590565b60095460ff1681565b600080546001600160a01b0316331461067b57600080fd5b60029190915590565b336000908152600c60205260409020548111156106e8576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f207769746864726177000000000000604482015290519081900360640190fd5b600654336000908152600d6020526040902054610706904290610f4e565b116107425760405162461bcd60e51b815260040180806020018281038252603b81526020018061129a603b913960400191505060405180910390fd5b61074b33610f95565b60006107686127106105e760055485610f6090919063ffffffff16565b905060006107768383610f4e565b600154600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b1580156107d257600080fd5b505af11580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b505161084f576040805162461bcd60e51b815260206004820181905260248201527f436f756c64206e6f74207472616e73666572207769746864726177206665652e604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156108a357600080fd5b505af11580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b5051610920576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b336000908152600c602052604090205461093a9084610f4e565b336000818152600c602052604090209190915561095990600a90610f30565b80156109725750336000908152600c6020526040902054155b1561098457610982600a33611134565b505b505050565b600d6020526000908152604090205481565b60045481565b600f6020526000908152604090205481565b60065481565b6000546001600160a01b031633146109d057600080fd5b6001546001600160a01b0384811691161415610a0b576109ee610de2565b8111156109fa57600080fd5b600754610a079082611149565b6007555b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050506040513d6020811015610a8c57600080fd5b5050505050565b60025481565b6001546001600160a01b031681565b60095460ff161515600114610b04576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e67206973206e6f742079657420696e697469616c697a65640000604482015290519081900360640190fd5b60008111610b59576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206465706f736974203020546f6b656e73000000000000000000604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b505050506040513d6020811015610bdd57600080fd5b5051610c30576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420546f6b656e20416c6c6f77616e636500000000604482015290519081900360640190fd5b610c3933610f95565b6000610c566127106105e760045485610f6090919063ffffffff16565b90506000610c648383610f4e565b600154600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050506040513d6020811015610cea57600080fd5b5051610d3d576040805162461bcd60e51b815260206004820152601f60248201527f436f756c64206e6f74207472616e73666572206465706f736974206665652e00604482015290519081900360640190fd5b336000908152600c6020526040902054610d579082611149565b336000818152600c6020526040902091909155610d7690600a90610f30565b61098457610d85600a33611158565b50336000908152600d60205260409020429055505050565b60035481565b600080546001600160a01b03163314610dbb57600080fd5b60069190915590565b600c6020526000908152604090205481565b60075481565b60055481565b600060085460075410610df757506000610612565b6000610e10600754600854610f4e90919063ffffffff16565b91505090565b6000546001600160a01b03163314610e2d57600080fd5b6001600160a01b038116610e4057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610eb357600080fd5b6001546001600160a01b0316610efa5760405162461bcd60e51b81526004018080602001828103825260308152602001806112fc6030913960400191505060405180910390fd5b6009805460ff19169215159290921790915590565b600e6020526000908152604090205481565b6000546001600160a01b031681565b6000610f45836001600160a01b03841661116d565b90505b92915050565b600082821115610f5a57fe5b50900390565b6000828202831580610f7a575082848281610f7757fe5b04145b610f4557fe5b600080828481610f8c57fe5b04949350505050565b6000610fa08261053f565b9050801561110c576001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b505050506040513d602081101561102857600080fd5b505161107b576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600f602052604090205461109e9082611149565b6001600160a01b0383166000908152600f60205260409020556007546110c49082611149565b600755604080516001600160a01b03841681526020810183905281517f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf130929181900390910190a15b506001600160a01b03166000908152600e60205260409020429055565b6000610f4882611185565b6000610f45836001600160a01b038416611189565b600082820183811015610f4557fe5b6000610f45836001600160a01b03841661124f565b60009081526001919091016020526040902054151590565b5490565b6000818152600183016020526040812054801561124557835460001980830191908101906000908790839081106111bc57fe5b90600052602060002001549050808760000184815481106111d957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061120957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610f48565b6000915050610f48565b600061125b838361116d565b61129157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f48565b506000610f4856fe596f752068617665206e6f74207374616b656420666f722061207768696c65207965742c206b696e646c792077616974206120626974206d6f7265496e76616c6964206164647265737320666f726d6174206973206e6f7420737570706f72746564496e74657272616374696e6720746f6b656e2061646472657373206973206e6f742079657420636f6e66696775726564a2646970667358221220b86bdac90c72019060fcff1677dfcee4f3fcd1e1cdcb6e7c72b0b2d1c54e342864736f6c634300060c0033
Deployed Bytecode Sourcemap
10031:6185:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12052:144;;;;;;;;;;;;;;;;-1:-1:-1;12052:144:0;;:::i;:::-;;;;;;;;;;;;;;;;;;11155:218;;;;;;;;;;;;;;;;-1:-1:-1;11155:218:0;-1:-1:-1;;;;;11155:218:0;;:::i;13355:598::-;;;;;;;;;;;;;;;;-1:-1:-1;13355:598:0;-1:-1:-1;;;;;13355:598:0;;:::i;:::-;;;;;;;;;;;;;;;;15876:74;;;:::i;:::-;;13965:99;;;:::i;11385:202::-;;;;;;;;;;;;;;;;-1:-1:-1;11385:202:0;;;;;;;:::i;11733:130::-;;;;;;;;;;;;;;;;-1:-1:-1;11733:130:0;;:::i;10736:33::-;;;:::i;11601:118::-;;;;;;;;;;;;;;;;-1:-1:-1;11601:118:0;;:::i;14920:944::-;;;;;;;;;;;;;;;;-1:-1:-1;14920:944:0;;:::i;10890:44::-;;;;;;;;;;;;;;;;-1:-1:-1;10890:44:0;-1:-1:-1;;;;;10890:44:0;;:::i;10445:30::-;;;:::i;10996:50::-;;;;;;;;;;;;;;;;-1:-1:-1;10996:50:0;-1:-1:-1;;;;;10996:50:0;;:::i;10595:42::-;;;:::i;12426:368::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12426:368:0;;;;;;;;;;;;;;;;;:::i;10331:29::-;;;:::i;10260:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;10260:27:0;;;;;;;;;;;;;;14076:832;;;;;;;;;;;;;;;;-1:-1:-1;14076:832:0;;:::i;10367:37::-;;;:::i;11875:164::-;;;;;;;;;;;;;;;;-1:-1:-1;11875:164:0;;:::i;10835:48::-;;;;;;;;;;;;;;;;-1:-1:-1;10835:48:0;-1:-1:-1;;;;;10835:48:0;;:::i;10650:35::-;;;:::i;10518:32::-;;;:::i;15962:240::-;;;:::i;9681:178::-;;;;;;;;;;;;;;;;-1:-1:-1;9681:178:0;-1:-1:-1;;;;;9681:178:0;;:::i;12208:206::-;;;;;;;;;;;;;;;;-1:-1:-1;12208:206:0;;;;:::i;10941:48::-;;;;;;;;;;;;;;;;-1:-1:-1;10941:48:0;-1:-1:-1;;;;;10941:48:0;;:::i;9062:20::-;;;:::i;12052:144::-;12126:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12149:14:::1;:32:::0;;;;12052:144;:::o;11155:218::-;11227:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;-1:-1:-1;;;;;11248:24:0;::::1;11240:76;;;;-1:-1:-1::0;;;11240:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11324:12;:25:::0;;-1:-1:-1;;;;;;11324:25:0::1;-1:-1:-1::0;;;;;11324:25:0;;;::::1;::::0;;;::::1;::::0;;;;11155:218::o;13355:598::-;13419:4;13451:25;:7;13468;13451:16;:25::i;:::-;13446:40;;-1:-1:-1;13485:1:0;13478:8;;13446:40;-1:-1:-1;;;;;13501:24:0;;;;;;:15;:24;;;;;;13497:43;;-1:-1:-1;13539:1:0;13532:8;;13497:43;-1:-1:-1;;;;;13577:24:0;;13553:13;13577:24;;;:15;:24;;;;;;13569:33;;:3;;:7;:33::i;:::-;-1:-1:-1;;;;;13643:24:0;;13623:17;13643:24;;;:15;:24;;;;;;13846:14;;13756:10;;13553:49;;-1:-1:-1;13643:24:0;;13709:191;;13896:3;;13709:152;;13846:14;13709:152;;13553:49;;13709:58;;13643:24;;13709:46;:58::i;:::-;:92;;:102::i;:::-;:136;;:152::i;:191::-;13688:212;-1:-1:-1;;;;13355:598:0;;;;:::o;15876:74::-;15917:25;15931:10;15917:13;:25::i;:::-;15876:74::o;13965:99::-;14016:4;14040:16;:7;:14;:16::i;:::-;14033:23;;13965:99;;:::o;11385:202::-;11483:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11496:14:::1;:32:::0;;;;11536:16:::1;:36:::0;11385:202;:::o;11733:130::-;11809:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11822:12:::1;:26:::0;;;;11733:130;:::o;10736:33::-;;;;;;:::o;11601:118::-;11667:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11680:10:::1;:24:::0;;;;11601:118;:::o;14920:944::-;15009:10;14993:27;;;;:15;:27;;;;;;:47;-1:-1:-1;14993:47:0;14985:86;;;;;-1:-1:-1;;;14985:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15135:19;;15120:10;15108:23;;;;:11;:23;;;;;;15100:32;;:3;;:7;:32::i;:::-;:54;15092:126;;;;-1:-1:-1;;;15092:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15239:25;15253:10;15239:13;:25::i;:::-;15285:8;15296:47;15339:3;15296:38;15317:16;;15296;:20;;:38;;;;:::i;:47::-;15285:58;-1:-1:-1;15354:19:0;15376:25;:16;15285:58;15376:20;:25::i;:::-;15436:12;;;15459:5;;15430:40;;;-1:-1:-1;;;15430:40:0;;-1:-1:-1;;;;;15459:5:0;;;15430:40;;;;;;;;;;;;15354:47;;-1:-1:-1;15436:12:0;;;15430:28;;:40;;;;;;;;;;;;;;;;;15436:12;15430:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15430:40:0;15422:85;;;;;-1:-1:-1;;;15422:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15532:12;;15526:56;;;-1:-1:-1;;;15526:56:0;;15555:10;15526:56;;;;;;;;;;;;-1:-1:-1;;;;;15532:12:0;;;;15526:28;;:56;;;;;;;;;;;;;;;15532:12;;15526:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15526:56:0;15518:95;;;;;-1:-1:-1;;;15518:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15680:10;15664:27;;;;:15;:27;;;;;;:49;;15696:16;15664:31;:49::i;:::-;15650:10;15634:27;;;;:15;:27;;;;;:79;;;;15738:28;;:7;;:16;:28::i;:::-;:64;;;;-1:-1:-1;15786:10:0;15770:27;;;;:15;:27;;;;;;:32;15738:64;15734:123;;;15819:26;:7;15834:10;15819:14;:26::i;:::-;;15734:123;14920:944;;;:::o;10890:44::-;;;;;;;;;;;;;:::o;10445:30::-;;;;:::o;10996:50::-;;;;;;;;;;;;;:::o;10595:42::-;;;;:::o;12426:368::-;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12551:12:::1;::::0;-1:-1:-1;;;;;12537:26:0;;::::1;12551:12:::0;::::1;12537:26;12533:203;;;12594:17;:15;:17::i;:::-;12584:7;:27;12580:76;;;12632:8;::::0;::::1;12580:76;12692:19;::::0;:32:::1;::::0;12716:7;12692:23:::1;:32::i;:::-;12670:19;:54:::0;12533:203:::1;12752:10;-1:-1:-1::0;;;;;12746:26:0::1;;12773:3;12778:7;12746:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;12746:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;;12426:368:0:o;10331:29::-;;;;:::o;10260:27::-;;;-1:-1:-1;;;;;10260:27:0;;:::o;14076:832::-;14137:13;;;;:21;;:13;:21;14129:64;;;;;-1:-1:-1;;;14129:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14228:1;14212:13;:17;14204:53;;;;;-1:-1:-1;;;14204:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14282:12;;14276:74;;;-1:-1:-1;;;14276:74:0;;14309:10;14276:74;;;;14329:4;14276:74;;;;;;;;;;;;-1:-1:-1;;;;;14282:12:0;;;;14276:32;;:74;;;;;;;;;;;;;;;14282:12;;14276:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14276:74:0;14268:115;;;;;-1:-1:-1;;;14268:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14404:25;14418:10;14404:13;:25::i;:::-;14450:8;14461:42;14499:3;14461:33;14479:14;;14461:13;:17;;:33;;;;:::i;:42::-;14450:53;-1:-1:-1;14514:19:0;14536:22;:13;14450:53;14536:17;:22::i;:::-;14583:12;;;14606:5;;14577:40;;;-1:-1:-1;;;14577:40:0;;-1:-1:-1;;;;;14606:5:0;;;14577:40;;;;;;;;;;;;14514:44;;-1:-1:-1;14583:12:0;;;14577:28;;:40;;;;;;;;;;;;;;;;;14583:12;14577:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14577:40:0;14569:84;;;;;-1:-1:-1;;;14569:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14720:10;14704:27;;;;:15;:27;;;;;;:47;;14736:14;14704:31;:47::i;:::-;14690:10;14674:27;;;;:15;:27;;;;;:77;;;;14777:28;;:7;;:16;:28::i;:::-;14772:129;;14822:23;:7;14834:10;14822:11;:23::i;:::-;-1:-1:-1;14872:10:0;14860:23;;;;:11;:23;;;;;14886:3;14860:29;;14076:832;;;:::o;10367:37::-;;;;:::o;11875:164::-;11959:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11982:19:::1;:42:::0;;;;11875:164;:::o;10835:48::-;;;;;;;;;;;;;:::o;10650:35::-;;;;:::o;10518:32::-;;;;:::o;15962:240::-;16010:4;16054:12;;16031:19;;:35;16027:76;;-1:-1:-1;16090:1:0;16083:8;;16027:76;16113:14;16130:37;16147:19;;16130:12;;:16;;:37;;;;:::i;:::-;16113:54;-1:-1:-1;;15962:240:0;:::o;9681:178::-;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;-1:-1:-1;;;;;9758:22:0;::::1;9750:31;;;::::0;::::1;;9814:5;::::0;;9793:37:::1;::::0;-1:-1:-1;;;;;9793:37:0;;::::1;::::0;9814:5;::::1;::::0;9793:37:::1;::::0;::::1;9837:5;:16:::0;;-1:-1:-1;;;;;;9837:16:0::1;-1:-1:-1::0;;;;;9837:16:0;;;::::1;::::0;;;::::1;::::0;;9681:178::o;12208:206::-;12269:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12293:12:::1;::::0;-1:-1:-1;;;;;12293:12:0::1;12285:87;;;;-1:-1:-1::0;;;12285:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12383:13;:23:::0;;-1:-1:-1;;12383:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;;12208:206::o;10941:48::-;;;;;;;;;;;;;:::o;9062:20::-;;;-1:-1:-1;;;;;9062:20:0;;:::o;6377:158::-;6457:4;6481:46;6491:3;-1:-1:-1;;;;;6511:14:0;;6481:9;:46::i;:::-;6474:53;;6377:158;;;;;:::o;616:113::-;674:7;702:1;697;:6;;690:14;;;;-1:-1:-1;718:5:0;;;616:113::o;187:147::-;245:7;273:5;;;292:6;;;:20;;;311:1;306;302;:5;;;;;;:10;292:20;285:28;;;340:270;398:7;489:9;505:1;501;:5;;;;;;;340:270;-1:-1:-1;;;;340:270:0:o;12812:531::-;12871:18;12892:25;12909:7;12892:16;:25::i;:::-;12871:46;-1:-1:-1;12932:17:0;;12928:367;;12980:12;;12974:52;;;-1:-1:-1;;;12974:52:0;;-1:-1:-1;;;;;12974:52:0;;;;;;;;;;;;;;;12980:12;;;;;12974:28;;:52;;;;;;;;;;;;;;12980:12;;12974:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12974:52:0;12966:91;;;;;-1:-1:-1;;;12966:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13101:26:0;;;;;;:17;:26;;;;;;:45;;13132:13;13101:30;:45::i;:::-;-1:-1:-1;;;;;13072:26:0;;;;;;:17;:26;;;;;:74;13183:19;;:38;;13207:13;13183:23;:38::i;:::-;13161:19;:60;13241:42;;;-1:-1:-1;;;;;13241:42:0;;;;;;;;;;;;;;;;;;;;;;;12928:367;-1:-1:-1;;;;;;13305:24:0;;;;;:15;:24;;;;;13332:3;13305:30;;12812:531::o;6621:117::-;6684:7;6711:19;6719:3;6711:7;:19::i;6142:149::-;6215:4;6239:44;6247:3;-1:-1:-1;;;;;6267:14:0;;6239:7;:44::i;735:133::-;793:7;821:5;;;840:6;;;;833:14;;;5823:143;5893:4;5917:41;5922:3;-1:-1:-1;;;;;5942:14:0;;5917:4;:41::i;4697:129::-;4770:4;4794:19;;;:12;;;;;:19;;;;;;:24;;;4697:129::o;4912:109::-;4995:18;;4912:109::o;3067:1544::-;3133:4;3272:19;;;:12;;;:19;;;;;;3308:15;;3304:1300;;3743:18;;-1:-1:-1;;3694:14:0;;;;3743:22;;;;3670:21;;3743:3;;:22;;4030;;;;;;;;;;;;;;4010:42;;4176:9;4147:3;:11;;4159:13;4147:26;;;;;;;;;;;;;;;;;;;:38;;;;4253:23;;;4295:1;4253:12;;;:23;;;;;;4279:17;;;4253:43;;4405:17;;4253:3;;4405:17;;;;;;;;;;;;;;;;;;;;;;4500:3;:12;;:19;4513:5;4500:19;;;;;;;;;;;4493:26;;;4543:4;4536:11;;;;;;;;3304:1300;4587:5;4580:12;;;;;2477:414;2540:4;2562:21;2572:3;2577:5;2562:9;:21::i;:::-;2557:327;;-1:-1:-1;2600:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;2783:18;;2761:19;;;:12;;;:19;;;;;;:40;;;;2816:11;;2557:327;-1:-1:-1;2867:5:0;2860:12;
Swarm Source
ipfs://b86bdac90c72019060fcff1677dfcee4f3fcd1e1cdcb6e7c72b0b2d1c54e3428
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.