Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 58 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Lift | 11599189 | 1512 days ago | IN | 0 ETH | 0.00648869 | ||||
Lift | 11599189 | 1512 days ago | IN | 0 ETH | 0.0049965 | ||||
Lift | 11595217 | 1513 days ago | IN | 0 ETH | 0.01218333 | ||||
Lift | 11595074 | 1513 days ago | IN | 0 ETH | 0.01334046 | ||||
Reward Rate Set | 11593918 | 1513 days ago | IN | 0 ETH | 0.00216223 | ||||
Staking Fee Rate... | 11593918 | 1513 days ago | IN | 0 ETH | 0.00110471 | ||||
Claim Yields | 11429140 | 1538 days ago | IN | 0 ETH | 0.00195114 | ||||
Claim Yields | 11422958 | 1539 days ago | IN | 0 ETH | 0.00279111 | ||||
Claim Yields | 11421217 | 1540 days ago | IN | 0 ETH | 0.00348889 | ||||
Claim Yields | 11415164 | 1540 days ago | IN | 0 ETH | 0.00728791 | ||||
Claim Yields | 11407589 | 1542 days ago | IN | 0 ETH | 0.00364395 | ||||
Claim Yields | 11404380 | 1542 days ago | IN | 0 ETH | 0.0020158 | ||||
Claim Yields | 11404306 | 1542 days ago | IN | 0 ETH | 0.00147308 | ||||
Claim Yields | 11395065 | 1544 days ago | IN | 0 ETH | 0.00162815 | ||||
Claim Yields | 11391168 | 1544 days ago | IN | 0 ETH | 0.00147308 | ||||
Claim Yields | 11390089 | 1544 days ago | IN | 0 ETH | 0.00217086 | ||||
Claim Yields | 11383955 | 1545 days ago | IN | 0 ETH | 0.0052721 | ||||
Claim Yields | 11381384 | 1546 days ago | IN | 0 ETH | 0.00255852 | ||||
Claim Yields | 11374158 | 1547 days ago | IN | 0 ETH | 0.00193827 | ||||
Claim Yields | 11373811 | 1547 days ago | IN | 0 ETH | 0.00341136 | ||||
Claim Yields | 11372873 | 1547 days ago | IN | 0 ETH | 0.00178321 | ||||
Claim Yields | 11366491 | 1548 days ago | IN | 0 ETH | 0.00682272 | ||||
Claim Yields | 11365098 | 1548 days ago | IN | 0 ETH | 0.00558223 | ||||
Claim Yields | 11358590 | 1549 days ago | IN | 0 ETH | 0.00193827 | ||||
Claim Yields | 11355963 | 1550 days ago | IN | 0 ETH | 0.00124049 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Poo4
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-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 Poo4 is Ownable { using SafeMath for uint; using EnumerableSet for EnumerableSet.AddressSet; event RewardsTransferred(address holder, uint amount); // yfilend token contract address address public tokenAddress; address public liquiditytoken1; // reward rate % per year uint public rewardRate = 6500; uint public rewardInterval = 365 days; // staking fee percent uint public stakingFeeRate = 0; // unstaking fee percent uint public unstakingFeeRate = 250; // unstaking possible Time uint public PossibleUnstakeTime = 72 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, address _liquidityAddr) public onlyOwner returns(bool){ require(_tokenAddr != address(0) && _liquidityAddr != address(0), "Invalid addresses format are not supported"); tokenAddress = _tokenAddr; liquiditytoken1 = _liquidityAddr; } 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) && liquiditytoken1 != address(0), "Interracting token addresses are 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(liquiditytoken1).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(liquiditytoken1).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(liquiditytoken1).transfer(admin, fee), "Could not transfer withdraw fee."); require(Token(liquiditytoken1).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":[],"name":"liquiditytoken1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"},{"internalType":"address","name":"_liquidityAddr","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
60806040526119646003556301e133806004556000600581905560fa6006556203f480600755600855600a805460ff1916905534801561003e57600080fd5b50600080546001600160a01b031916331790556113ce806100606000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636a395ccb11610104578063c326bf4f116100a2578063f2fde38b11610071578063f2fde38b14610445578063f3073ee71461046b578063f3f91fa01461048a578063f851a440146104b0576101cf565b8063c326bf4f14610407578063d578ceab1461042d578063d816c7d514610435578063f1587ea11461043d576101cf565b8063a89c8c5e116100de578063a89c8c5e14610397578063b52b50e4146103c5578063bec4de3f146103e2578063c0a6d78b146103ea576101cf565b80636a395ccb146103515780637b0a47ee146103875780639d76ea581461038f576101cf565b8063455ab53c11610171578063583d42fd1161014b578063583d42fd146102f55780635ef057be1461031b5780636270cd18146103235780636654ffdf14610349576101cf565b8063455ab53c146102b35780634908e386146102bb57806352cd0d40146102d8576101cf565b80632f278fe8116101ad5780632f278fe814610261578063308feec31461026b57806337c5785a146102735780633844317714610296576101cf565b8063069ca4d0146101d45780631e94723f146102055780632ec14e851461023d575b600080fd5b6101f1600480360360208110156101ea57600080fd5b50356104b8565b604080519115158252519081900360200190f35b61022b6004803603602081101561021b57600080fd5b50356001600160a01b03166104d9565b60408051918252519081900360200190f35b610245610592565b604080516001600160a01b039092168252519081900360200190f35b6102696105a1565b005b61022b6105ac565b6101f16004803603604081101561028957600080fd5b50803590602001356105be565b6101f1600480360360208110156102ac57600080fd5b50356105e2565b6101f1610603565b6101f1600480360360208110156102d157600080fd5b503561060c565b610269600480360360208110156102ee57600080fd5b503561062d565b61022b6004803603602081101561030b57600080fd5b50356001600160a01b0316610932565b61022b610944565b61022b6004803603602081101561033957600080fd5b50356001600160a01b031661094a565b61022b61095c565b6102696004803603606081101561036757600080fd5b506001600160a01b03813581169160208101359091169060400135610962565b61022b610a3c565b610245610a42565b6101f1600480360360408110156103ad57600080fd5b506001600160a01b0381358116916020013516610a51565b610269600480360360208110156103db57600080fd5b5035610af7565b61022b610dec565b6101f16004803603602081101561040057600080fd5b5035610df2565b61022b6004803603602081101561041d57600080fd5b50356001600160a01b0316610e13565b61022b610e25565b61022b610e2b565b61022b610e31565b6102696004803603602081101561045b57600080fd5b50356001600160a01b0316610e65565b6101f16004803603602081101561048157600080fd5b50351515610eea565b61022b600480360360208110156104a057600080fd5b50356001600160a01b0316610f76565b610245610f88565b600080546001600160a01b031633146104d057600080fd5b60049190915590565b60006104e6600b83610f97565b6104f25750600061058d565b6001600160a01b0382166000908152600d60205260409020546105175750600061058d565b6001600160a01b0382166000908152600f602052604081205461053b904290610fb5565b6001600160a01b0384166000908152600d60205260408120546004546003549394509092610587916127109161058191908290889061057b908990610fc7565b90610fc7565b90610fe7565b93505050505b919050565b6002546001600160a01b031681565b6105aa33610ffc565b565b60006105b8600b611190565b90505b90565b600080546001600160a01b031633146105d657600080fd5b60059290925560065590565b600080546001600160a01b031633146105fa57600080fd5b60099190915590565b600a5460ff1681565b600080546001600160a01b0316331461062457600080fd5b60039190915590565b336000908152600d6020526040902054811115610691576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f207769746864726177000000000000604482015290519081900360640190fd5b600754336000908152600e60205260409020546106af904290610fb5565b116106eb5760405162461bcd60e51b815260040180806020018281038252603b815260200180611301603b913960400191505060405180910390fd5b6106f433610ffc565b600061071161271061058160065485610fc790919063ffffffff16565b9050600061071f8383610fb5565b600254600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b50516107f8576040805162461bcd60e51b815260206004820181905260248201527f436f756c64206e6f74207472616e73666572207769746864726177206665652e604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d602081101561087657600080fd5b50516108c9576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b336000908152600d60205260409020546108e39084610fb5565b336000818152600d602052604090209190915561090290600b90610f97565b801561091b5750336000908152600d6020526040902054155b1561092d5761092b600b3361119b565b505b505050565b600e6020526000908152604090205481565b60055481565b60106020526000908152604090205481565b60075481565b6000546001600160a01b0316331461097957600080fd5b6001546001600160a01b03848116911614156109b457610997610e31565b8111156109a357600080fd5b6008546109b090826111b0565b6008555b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610a0b57600080fd5b505af1158015610a1f573d6000803e3d6000fd5b505050506040513d6020811015610a3557600080fd5b5050505050565b60035481565b6001546001600160a01b031681565b600080546001600160a01b03163314610a6957600080fd5b6001600160a01b03831615801590610a8957506001600160a01b03821615155b610ac45760405162461bcd60e51b815260040180806020018281038252602a81526020018061136f602a913960400191505060405180910390fd5b600180546001600160a01b039485166001600160a01b031991821617909155600280549390941692169190911790915590565b600a5460ff161515600114610b53576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e67206973206e6f742079657420696e697469616c697a65640000604482015290519081900360640190fd5b60008111610ba8576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206465706f736974203020546f6b656e73000000000000000000604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610c0257600080fd5b505af1158015610c16573d6000803e3d6000fd5b505050506040513d6020811015610c2c57600080fd5b5051610c7f576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420546f6b656e20416c6c6f77616e636500000000604482015290519081900360640190fd5b610c8833610ffc565b6000610ca561271061058160055485610fc790919063ffffffff16565b90506000610cb38383610fb5565b600254600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050506040513d6020811015610d3957600080fd5b5051610d8c576040805162461bcd60e51b815260206004820152601f60248201527f436f756c64206e6f74207472616e73666572206465706f736974206665652e00604482015290519081900360640190fd5b336000908152600d6020526040902054610da690826111b0565b336000818152600d6020526040902091909155610dc590600b90610f97565b61092d57610dd4600b336111bf565b50336000908152600e60205260409020429055505050565b60045481565b600080546001600160a01b03163314610e0a57600080fd5b60079190915590565b600d6020526000908152604090205481565b60085481565b60065481565b600060095460085410610e46575060006105bb565b6000610e5f600854600954610fb590919063ffffffff16565b91505090565b6000546001600160a01b03163314610e7c57600080fd5b6001600160a01b038116610e8f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610f0257600080fd5b6001546001600160a01b031615801590610f2657506002546001600160a01b031615155b610f615760405162461bcd60e51b815260040180806020018281038252603381526020018061133c6033913960400191505060405180910390fd5b600a805460ff19169215159290921790915590565b600f6020526000908152604090205481565b6000546001600160a01b031681565b6000610fac836001600160a01b0384166111d4565b90505b92915050565b600082821115610fc157fe5b50900390565b6000828202831580610fe1575082848281610fde57fe5b04145b610fac57fe5b600080828481610ff357fe5b04949350505050565b6000611007826104d9565b90508015611173576001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b50516110e2576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526010602052604090205461110590826111b0565b6001600160a01b03831660009081526010602052604090205560085461112b90826111b0565b600855604080516001600160a01b03841681526020810183905281517f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf130929181900390910190a15b506001600160a01b03166000908152600f60205260409020429055565b6000610faf826111ec565b6000610fac836001600160a01b0384166111f0565b600082820183811015610fac57fe5b6000610fac836001600160a01b0384166112b6565b60009081526001919091016020526040902054151590565b5490565b600081815260018301602052604081205480156112ac578354600019808301919081019060009087908390811061122357fe5b906000526020600020015490508087600001848154811061124057fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061127057fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610faf565b6000915050610faf565b60006112c283836111d4565b6112f857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faf565b506000610faf56fe596f752068617665206e6f74207374616b656420666f722061207768696c65207965742c206b696e646c792077616974206120626974206d6f7265496e74657272616374696e6720746f6b656e2061646472657373657320617265206e6f742079657420636f6e66696775726564496e76616c69642061646472657373657320666f726d617420617265206e6f7420737570706f72746564a2646970667358221220b3e707ccfeeaec9bc98b37d4a65c6436edc8a5a6fb2b41c80c1c856818046a4664736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636a395ccb11610104578063c326bf4f116100a2578063f2fde38b11610071578063f2fde38b14610445578063f3073ee71461046b578063f3f91fa01461048a578063f851a440146104b0576101cf565b8063c326bf4f14610407578063d578ceab1461042d578063d816c7d514610435578063f1587ea11461043d576101cf565b8063a89c8c5e116100de578063a89c8c5e14610397578063b52b50e4146103c5578063bec4de3f146103e2578063c0a6d78b146103ea576101cf565b80636a395ccb146103515780637b0a47ee146103875780639d76ea581461038f576101cf565b8063455ab53c11610171578063583d42fd1161014b578063583d42fd146102f55780635ef057be1461031b5780636270cd18146103235780636654ffdf14610349576101cf565b8063455ab53c146102b35780634908e386146102bb57806352cd0d40146102d8576101cf565b80632f278fe8116101ad5780632f278fe814610261578063308feec31461026b57806337c5785a146102735780633844317714610296576101cf565b8063069ca4d0146101d45780631e94723f146102055780632ec14e851461023d575b600080fd5b6101f1600480360360208110156101ea57600080fd5b50356104b8565b604080519115158252519081900360200190f35b61022b6004803603602081101561021b57600080fd5b50356001600160a01b03166104d9565b60408051918252519081900360200190f35b610245610592565b604080516001600160a01b039092168252519081900360200190f35b6102696105a1565b005b61022b6105ac565b6101f16004803603604081101561028957600080fd5b50803590602001356105be565b6101f1600480360360208110156102ac57600080fd5b50356105e2565b6101f1610603565b6101f1600480360360208110156102d157600080fd5b503561060c565b610269600480360360208110156102ee57600080fd5b503561062d565b61022b6004803603602081101561030b57600080fd5b50356001600160a01b0316610932565b61022b610944565b61022b6004803603602081101561033957600080fd5b50356001600160a01b031661094a565b61022b61095c565b6102696004803603606081101561036757600080fd5b506001600160a01b03813581169160208101359091169060400135610962565b61022b610a3c565b610245610a42565b6101f1600480360360408110156103ad57600080fd5b506001600160a01b0381358116916020013516610a51565b610269600480360360208110156103db57600080fd5b5035610af7565b61022b610dec565b6101f16004803603602081101561040057600080fd5b5035610df2565b61022b6004803603602081101561041d57600080fd5b50356001600160a01b0316610e13565b61022b610e25565b61022b610e2b565b61022b610e31565b6102696004803603602081101561045b57600080fd5b50356001600160a01b0316610e65565b6101f16004803603602081101561048157600080fd5b50351515610eea565b61022b600480360360208110156104a057600080fd5b50356001600160a01b0316610f76565b610245610f88565b600080546001600160a01b031633146104d057600080fd5b60049190915590565b60006104e6600b83610f97565b6104f25750600061058d565b6001600160a01b0382166000908152600d60205260409020546105175750600061058d565b6001600160a01b0382166000908152600f602052604081205461053b904290610fb5565b6001600160a01b0384166000908152600d60205260408120546004546003549394509092610587916127109161058191908290889061057b908990610fc7565b90610fc7565b90610fe7565b93505050505b919050565b6002546001600160a01b031681565b6105aa33610ffc565b565b60006105b8600b611190565b90505b90565b600080546001600160a01b031633146105d657600080fd5b60059290925560065590565b600080546001600160a01b031633146105fa57600080fd5b60099190915590565b600a5460ff1681565b600080546001600160a01b0316331461062457600080fd5b60039190915590565b336000908152600d6020526040902054811115610691576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f207769746864726177000000000000604482015290519081900360640190fd5b600754336000908152600e60205260409020546106af904290610fb5565b116106eb5760405162461bcd60e51b815260040180806020018281038252603b815260200180611301603b913960400191505060405180910390fd5b6106f433610ffc565b600061071161271061058160065485610fc790919063ffffffff16565b9050600061071f8383610fb5565b600254600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b50516107f8576040805162461bcd60e51b815260206004820181905260248201527f436f756c64206e6f74207472616e73666572207769746864726177206665652e604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d602081101561087657600080fd5b50516108c9576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b336000908152600d60205260409020546108e39084610fb5565b336000818152600d602052604090209190915561090290600b90610f97565b801561091b5750336000908152600d6020526040902054155b1561092d5761092b600b3361119b565b505b505050565b600e6020526000908152604090205481565b60055481565b60106020526000908152604090205481565b60075481565b6000546001600160a01b0316331461097957600080fd5b6001546001600160a01b03848116911614156109b457610997610e31565b8111156109a357600080fd5b6008546109b090826111b0565b6008555b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610a0b57600080fd5b505af1158015610a1f573d6000803e3d6000fd5b505050506040513d6020811015610a3557600080fd5b5050505050565b60035481565b6001546001600160a01b031681565b600080546001600160a01b03163314610a6957600080fd5b6001600160a01b03831615801590610a8957506001600160a01b03821615155b610ac45760405162461bcd60e51b815260040180806020018281038252602a81526020018061136f602a913960400191505060405180910390fd5b600180546001600160a01b039485166001600160a01b031991821617909155600280549390941692169190911790915590565b600a5460ff161515600114610b53576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e67206973206e6f742079657420696e697469616c697a65640000604482015290519081900360640190fd5b60008111610ba8576040805162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206465706f736974203020546f6b656e73000000000000000000604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610c0257600080fd5b505af1158015610c16573d6000803e3d6000fd5b505050506040513d6020811015610c2c57600080fd5b5051610c7f576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420546f6b656e20416c6c6f77616e636500000000604482015290519081900360640190fd5b610c8833610ffc565b6000610ca561271061058160055485610fc790919063ffffffff16565b90506000610cb38383610fb5565b600254600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101889052905194955092169263a9059cbb926044808201936020939283900390910190829087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050506040513d6020811015610d3957600080fd5b5051610d8c576040805162461bcd60e51b815260206004820152601f60248201527f436f756c64206e6f74207472616e73666572206465706f736974206665652e00604482015290519081900360640190fd5b336000908152600d6020526040902054610da690826111b0565b336000818152600d6020526040902091909155610dc590600b90610f97565b61092d57610dd4600b336111bf565b50336000908152600e60205260409020429055505050565b60045481565b600080546001600160a01b03163314610e0a57600080fd5b60079190915590565b600d6020526000908152604090205481565b60085481565b60065481565b600060095460085410610e46575060006105bb565b6000610e5f600854600954610fb590919063ffffffff16565b91505090565b6000546001600160a01b03163314610e7c57600080fd5b6001600160a01b038116610e8f57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610f0257600080fd5b6001546001600160a01b031615801590610f2657506002546001600160a01b031615155b610f615760405162461bcd60e51b815260040180806020018281038252603381526020018061133c6033913960400191505060405180910390fd5b600a805460ff19169215159290921790915590565b600f6020526000908152604090205481565b6000546001600160a01b031681565b6000610fac836001600160a01b0384166111d4565b90505b92915050565b600082821115610fc157fe5b50900390565b6000828202831580610fe1575082848281610fde57fe5b04145b610fac57fe5b600080828481610ff357fe5b04949350505050565b6000611007826104d9565b90508015611173576001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b50516110e2576040805162461bcd60e51b815260206004820152601a60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732e000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526010602052604090205461110590826111b0565b6001600160a01b03831660009081526010602052604090205560085461112b90826111b0565b600855604080516001600160a01b03841681526020810183905281517f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf130929181900390910190a15b506001600160a01b03166000908152600f60205260409020429055565b6000610faf826111ec565b6000610fac836001600160a01b0384166111f0565b600082820183811015610fac57fe5b6000610fac836001600160a01b0384166112b6565b60009081526001919091016020526040902054151590565b5490565b600081815260018301602052604081205480156112ac578354600019808301919081019060009087908390811061122357fe5b906000526020600020015490508087600001848154811061124057fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061127057fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610faf565b6000915050610faf565b60006112c283836111d4565b6112f857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faf565b506000610faf56fe596f752068617665206e6f74207374616b656420666f722061207768696c65207965742c206b696e646c792077616974206120626974206d6f7265496e74657272616374696e6720746f6b656e2061646472657373657320617265206e6f742079657420636f6e66696775726564496e76616c69642061646472657373657320666f726d617420617265206e6f7420737570706f72746564a2646970667358221220b3e707ccfeeaec9bc98b37d4a65c6436edc8a5a6fb2b41c80c1c856818046a4664736f6c634300060c0033
Deployed Bytecode Sourcemap
10031:6375:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12186:144;;;;;;;;;;;;;;;;-1:-1:-1;12186:144:0;;:::i;:::-;;;;;;;;;;;;;;;;;;13533:598;;;;;;;;;;;;;;;;-1:-1:-1;13533:598:0;-1:-1:-1;;;;;13533:598:0;;:::i;:::-;;;;;;;;;;;;;;;;10293:30;;;:::i;:::-;;;;-1:-1:-1;;;;;10293:30:0;;;;;;;;;;;;;;16066:74;;;:::i;:::-;;14143:99;;;:::i;11512:201::-;;;;;;;;;;;;;;;;-1:-1:-1;11512:201:0;;;;;;;:::i;11859:130::-;;;;;;;;;;;;;;;;-1:-1:-1;11859:130:0;;:::i;10774:33::-;;;:::i;11727:118::-;;;;;;;;;;;;;;;;-1:-1:-1;11727:118:0;;:::i;15104:950::-;;;;;;;;;;;;;;;;-1:-1:-1;15104:950:0;;:::i;10928:44::-;;;;;;;;;;;;;;;;-1:-1:-1;10928:44:0;-1:-1:-1;;;;;10928:44:0;;:::i;10481:30::-;;;:::i;11034:50::-;;;;;;;;;;;;;;;;-1:-1:-1;11034:50:0;-1:-1:-1;;;;;11034:50:0;;:::i;10633:42::-;;;:::i;12604:368::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12604:368:0;;;;;;;;;;;;;;;;;:::i;10367:29::-;;;:::i;10259:27::-;;;:::i;11193:307::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11193:307:0;;;;;;;;;;:::i;14254:838::-;;;;;;;;;;;;;;;;-1:-1:-1;14254:838:0;;:::i;10403:37::-;;;:::i;12009:164::-;;;;;;;;;;;;;;;;-1:-1:-1;12009:164:0;;:::i;10873:48::-;;;;;;;;;;;;;;;;-1:-1:-1;10873:48:0;-1:-1:-1;;;;;10873:48:0;;:::i;10688:35::-;;;:::i;10554:34::-;;;:::i;16152:240::-;;;:::i;9681:178::-;;;;;;;;;;;;;;;;-1:-1:-1;9681:178:0;-1:-1:-1;;;;;9681:178:0;;:::i;12350:242::-;;;;;;;;;;;;;;;;-1:-1:-1;12350:242:0;;;;:::i;10979:48::-;;;;;;;;;;;;;;;;-1:-1:-1;10979:48:0;-1:-1:-1;;;;;10979:48:0;;:::i;9062:20::-;;;:::i;12186:144::-;12260:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12283:14:::1;:32:::0;;;;12186:144;:::o;13533:598::-;13597:4;13629:25;:7;13646;13629:16;:25::i;:::-;13624:40;;-1:-1:-1;13663:1:0;13656:8;;13624:40;-1:-1:-1;;;;;13679:24:0;;;;;;:15;:24;;;;;;13675:43;;-1:-1:-1;13717:1:0;13710:8;;13675:43;-1:-1:-1;;;;;13755:24:0;;13731:13;13755:24;;;:15;:24;;;;;;13747:33;;:3;;:7;:33::i;:::-;-1:-1:-1;;;;;13821:24:0;;13801:17;13821:24;;;:15;:24;;;;;;14024:14;;13934:10;;13731:49;;-1:-1:-1;13821:24:0;;13887:191;;14074:3;;13887:152;;14024:14;13887:152;;13731:49;;13887:58;;13821:24;;13887:46;:58::i;:::-;:92;;:102::i;:::-;:136;;:152::i;:191::-;13866:212;-1:-1:-1;;;;13533:598:0;;;;:::o;10293:30::-;;;-1:-1:-1;;;;;10293:30:0;;:::o;16066:74::-;16107:25;16121:10;16107:13;:25::i;:::-;16066:74::o;14143:99::-;14194:4;14218:16;:7;:14;:16::i;:::-;14211:23;;14143:99;;:::o;11512:201::-;11610:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11623:14:::1;:32:::0;;;;11663:16:::1;:36:::0;11512:201;:::o;11859:130::-;11935:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11948:12:::1;:26:::0;;;;11859:130;:::o;10774:33::-;;;;;;:::o;11727:118::-;11793:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;11806:10:::1;:24:::0;;;;11727:118;:::o;15104:950::-;15193:10;15177:27;;;;:15;:27;;;;;;:47;-1:-1:-1;15177:47:0;15169:86;;;;;-1:-1:-1;;;15169:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15319:19;;15304:10;15292:23;;;;:11;:23;;;;;;15284:32;;:3;;:7;:32::i;:::-;:54;15276:126;;;;-1:-1:-1;;;15276:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15423:25;15437:10;15423:13;:25::i;:::-;15469:8;15480:47;15523:3;15480:38;15501:16;;15480;:20;;:38;;;;:::i;:47::-;15469:58;-1:-1:-1;15538:19:0;15560:25;:16;15469:58;15560:20;:25::i;:::-;15620:15;;;15646:5;;15614:43;;;-1:-1:-1;;;15614:43:0;;-1:-1:-1;;;;;15646:5:0;;;15614:43;;;;;;;;;;;;15538:47;;-1:-1:-1;15620:15:0;;;15614:31;;:43;;;;;;;;;;;;;;;;;15620:15;15614:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15614:43:0;15606:88;;;;;-1:-1:-1;;;15606:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15719:15;;15713:59;;;-1:-1:-1;;;15713:59:0;;15745:10;15713:59;;;;;;;;;;;;-1:-1:-1;;;;;15719:15:0;;;;15713:31;;:59;;;;;;;;;;;;;;;15719:15;;15713:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15713:59:0;15705:98;;;;;-1:-1:-1;;;15705:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15870:10;15854:27;;;;:15;:27;;;;;;:49;;15886:16;15854:31;:49::i;:::-;15840:10;15824:27;;;;:15;:27;;;;;:79;;;;15928:28;;:7;;:16;:28::i;:::-;:64;;;;-1:-1:-1;15976:10:0;15960:27;;;;:15;:27;;;;;;:32;15928:64;15924:123;;;16009:26;:7;16024:10;16009:14;:26::i;:::-;;15924:123;15104:950;;;:::o;10928:44::-;;;;;;;;;;;;;:::o;10481:30::-;;;;:::o;11034:50::-;;;;;;;;;;;;;:::o;10633:42::-;;;;:::o;12604:368::-;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12729:12:::1;::::0;-1:-1:-1;;;;;12715:26:0;;::::1;12729:12:::0;::::1;12715:26;12711:203;;;12772:17;:15;:17::i;:::-;12762:7;:27;12758:76;;;12810:8;::::0;::::1;12758:76;12870:19;::::0;:32:::1;::::0;12894:7;12870:23:::1;:32::i;:::-;12848:19;:54:::0;12711:203:::1;12930:10;-1:-1:-1::0;;;;;12924:26:0::1;;12951:3;12956:7;12924:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;12924:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;;12604:368:0:o;10367:29::-;;;;:::o;10259:27::-;;;-1:-1:-1;;;;;10259:27:0;;:::o;11193:307::-;11289:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;-1:-1:-1;;;;;11310:24:0;::::1;::::0;;::::1;::::0;:56:::1;;-1:-1:-1::0;;;;;;11338:28:0;::::1;::::0;::::1;11310:56;11302:111;;;;-1:-1:-1::0;;;11302:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11421:12;:25:::0;;-1:-1:-1;;;;;11421:25:0;;::::1;-1:-1:-1::0;;;;;;11421:25:0;;::::1;;::::0;;;11454:15:::1;:32:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;11193:307;:::o;14254:838::-;14315:13;;;;:21;;:13;:21;14307:64;;;;;-1:-1:-1;;;14307:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14406:1;14390:13;:17;14382:53;;;;;-1:-1:-1;;;14382:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14460:15;;14454:77;;;-1:-1:-1;;;14454:77:0;;14490:10;14454:77;;;;14510:4;14454:77;;;;;;;;;;;;-1:-1:-1;;;;;14460:15:0;;;;14454:35;;:77;;;;;;;;;;;;;;;14460:15;;14454:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14454:77:0;14446:118;;;;;-1:-1:-1;;;14446:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14585:25;14599:10;14585:13;:25::i;:::-;14631:8;14642:42;14680:3;14642:33;14660:14;;14642:13;:17;;:33;;;;:::i;:42::-;14631:53;-1:-1:-1;14695:19:0;14717:22;:13;14631:53;14717:17;:22::i;:::-;14764:15;;;14790:5;;14758:43;;;-1:-1:-1;;;14758:43:0;;-1:-1:-1;;;;;14790:5:0;;;14758:43;;;;;;;;;;;;14695:44;;-1:-1:-1;14764:15:0;;;14758:31;;:43;;;;;;;;;;;;;;;;;14764:15;14758:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14758:43:0;14750:87;;;;;-1:-1:-1;;;14750:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14904:10;14888:27;;;;:15;:27;;;;;;:47;;14920:14;14888:31;:47::i;:::-;14874:10;14858:27;;;;:15;:27;;;;;:77;;;;14961:28;;:7;;:16;:28::i;:::-;14956:129;;15006:23;:7;15018:10;15006:11;:23::i;:::-;-1:-1:-1;15056:10:0;15044:23;;;;:11;:23;;;;;15070:3;15044:29;;14254:838;;;:::o;10403:37::-;;;;:::o;12009:164::-;12093:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12116:19:::1;:42:::0;;;;12009:164;:::o;10873:48::-;;;;;;;;;;;;;:::o;10688:35::-;;;;:::o;10554:34::-;;;;:::o;16152:240::-;16200:4;16244:12;;16221:19;;:35;16217:76;;-1:-1:-1;16280:1:0;16273:8;;16217:76;16303:14;16320:37;16337:19;;16320:12;;:16;;:37;;;;:::i;:::-;16303:54;-1:-1:-1;;16152: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;12350:242::-;12411:4;9492:5;;-1:-1:-1;;;;;9492:5:0;9478:10;:19;9470:28;;;;;;12435:12:::1;::::0;-1:-1:-1;;;;;12435:12:0::1;:26:::0;;::::1;::::0;:59:::1;;-1:-1:-1::0;12465:15:0::1;::::0;-1:-1:-1;;;;;12465:15:0::1;:29:::0;::::1;12435:59;12427:123;;;;-1:-1:-1::0;;;12427:123:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12561:13;:23:::0;;-1:-1:-1;;12561:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;;12350:242::o;10979: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;12990:531::-;13049:18;13070:25;13087:7;13070:16;:25::i;:::-;13049:46;-1:-1:-1;13110:17:0;;13106:367;;13158:12;;13152:52;;;-1:-1:-1;;;13152:52:0;;-1:-1:-1;;;;;13152:52:0;;;;;;;;;;;;;;;13158:12;;;;;13152:28;;:52;;;;;;;;;;;;;;13158:12;;13152:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13152:52:0;13144:91;;;;;-1:-1:-1;;;13144:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13279:26:0;;;;;;:17;:26;;;;;;:45;;13310:13;13279:30;:45::i;:::-;-1:-1:-1;;;;;13250:26:0;;;;;;:17;:26;;;;;:74;13361:19;;:38;;13385:13;13361:23;:38::i;:::-;13339:19;:60;13419:42;;;-1:-1:-1;;;;;13419:42:0;;;;;;;;;;;;;;;;;;;;;;;13106:367;-1:-1:-1;;;;;;13483:24:0;;;;;:15;:24;;;;;13510:3;13483:30;;12990: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://b3e707ccfeeaec9bc98b37d4a65c6436edc8a5a6fb2b41c80c1c856818046a46
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.