Source Code
Latest 25 from a total of 1,511 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 19241293 | 737 days ago | IN | 0 ETH | 0.00458959 | ||||
| Claim | 13939725 | 1510 days ago | IN | 0 ETH | 0.0057262 | ||||
| Claim | 13642148 | 1556 days ago | IN | 0 ETH | 0.0057262 | ||||
| Withdraw | 13504881 | 1578 days ago | IN | 0 ETH | 0.0057738 | ||||
| Claim | 13504881 | 1578 days ago | IN | 0 ETH | 0.0057262 | ||||
| Withdraw | 13504881 | 1578 days ago | IN | 0 ETH | 0.0057738 | ||||
| Claim | 13504881 | 1578 days ago | IN | 0 ETH | 0.0057262 | ||||
| Withdraw | 13504881 | 1578 days ago | IN | 0 ETH | 0.0057738 | ||||
| Transfer Any ERC... | 13494899 | 1580 days ago | IN | 0 ETH | 0.00894619 | ||||
| Transfer Ownersh... | 13489325 | 1580 days ago | IN | 0 ETH | 0.00338459 | ||||
| Withdraw | 13121913 | 1638 days ago | IN | 0 ETH | 0.0088974 | ||||
| Claim | 13121902 | 1638 days ago | IN | 0 ETH | 0.0051947 | ||||
| Claim | 13121901 | 1638 days ago | IN | 0 ETH | 0.0087131 | ||||
| Claim | 12922655 | 1669 days ago | IN | 0 ETH | 0.00303327 | ||||
| Withdraw | 12674516 | 1707 days ago | IN | 0 ETH | 0.0093546 | ||||
| Withdraw | 12665008 | 1709 days ago | IN | 0 ETH | 0.00132775 | ||||
| Withdraw | 12646415 | 1712 days ago | IN | 0 ETH | 0.00198471 | ||||
| Claim | 12612770 | 1717 days ago | IN | 0 ETH | 0.0049147 | ||||
| Claim | 12612770 | 1717 days ago | IN | 0 ETH | 0.0121331 | ||||
| Withdraw | 12589342 | 1721 days ago | IN | 0 ETH | 0.00081723 | ||||
| Claim | 12588062 | 1721 days ago | IN | 0 ETH | 0.00125077 | ||||
| Claim | 12567619 | 1724 days ago | IN | 0 ETH | 0.00130696 | ||||
| Withdraw | 12535334 | 1729 days ago | IN | 0 ETH | 0.00099235 | ||||
| Withdraw | 12534761 | 1729 days ago | IN | 0 ETH | 0.00105073 | ||||
| Claim | 12534688 | 1729 days ago | IN | 0 ETH | 0.00208462 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FarmProRata
Compiler Version
v0.6.11+commit.5ef660b1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion, BSD-3-Clause license, Audited
Contract Source Code (Solidity)Audit Report
/**
*Submitted for verification at Etherscan.io on 2020-11-14
*/
pragma solidity 0.6.11;
// SPDX-License-Identifier: BSD-3-Clause
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @dev Library for managing
* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
* types.
*
* Sets have the following properties:
*
* - Elements are added, removed, and checked for existence in constant time
* (O(1)).
* - Elements are enumerated in O(n). No guarantees are made on the ordering.
*
* ```
* contract Example {
* // Add the library methods
* using EnumerableSet for EnumerableSet.AddressSet;
*
* // Declare a set state variable
* EnumerableSet.AddressSet private mySet;
* }
* ```
*
* As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256`
* (`UintSet`) are supported.
*/
library EnumerableSet {
// To implement this library for multiple types with as little code
// repetition as possible, we write it in terms of a generic Set type with
// bytes32 values.
// The Set implementation uses private functions, and user-facing
// implementations (such as AddressSet) are just wrappers around the
// underlying Set.
// This means that we can only create new EnumerableSets for types that fit
// in bytes32.
struct Set {
// Storage of set values
bytes32[] _values;
// Position of the value in the `values` array, plus 1 because index 0
// means a value is not in the set.
mapping (bytes32 => uint256) _indexes;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function _add(Set storage set, bytes32 value) private returns (bool) {
if (!_contains(set, value)) {
set._values.push(value);
// The value is stored at length-1, but we add 1 to all indexes
// and use 0 as a sentinel value
set._indexes[value] = set._values.length;
return true;
} else {
return false;
}
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function _remove(Set storage set, bytes32 value) private returns (bool) {
// We read and store the value's index to prevent multiple reads from the same storage slot
uint256 valueIndex = set._indexes[value];
if (valueIndex != 0) { // Equivalent to contains(set, value)
// To delete an element from the _values array in O(1), we swap the element to delete with the last one in
// the array, and then remove the last element (sometimes called as 'swap and pop').
// This modifies the order of the array, as noted in {at}.
uint256 toDeleteIndex = valueIndex - 1;
uint256 lastIndex = set._values.length - 1;
// When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
// so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.
bytes32 lastvalue = set._values[lastIndex];
// Move the last value to the index where the value to delete is
set._values[toDeleteIndex] = lastvalue;
// Update the index for the moved value
set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based
// Delete the slot where the moved value was stored
set._values.pop();
// Delete the index for the deleted slot
delete set._indexes[value];
return true;
} else {
return false;
}
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function _contains(Set storage set, bytes32 value) private view returns (bool) {
return set._indexes[value] != 0;
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function _length(Set storage set) private view returns (uint256) {
return set._values.length;
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function _at(Set storage set, uint256 index) private view returns (bytes32) {
require(set._values.length > index, "EnumerableSet: index out of bounds");
return set._values[index];
}
// AddressSet
struct AddressSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(AddressSet storage set, address value) internal returns (bool) {
return _add(set._inner, bytes32(uint256(value)));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(AddressSet storage set, address value) internal returns (bool) {
return _remove(set._inner, bytes32(uint256(value)));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(AddressSet storage set, address value) internal view returns (bool) {
return _contains(set._inner, bytes32(uint256(value)));
}
/**
* @dev Returns the number of values in the set. O(1).
*/
function length(AddressSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(AddressSet storage set, uint256 index) internal view returns (address) {
return address(uint256(_at(set._inner, index)));
}
// UintSet
struct UintSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(UintSet storage set, uint256 value) internal returns (bool) {
return _add(set._inner, bytes32(value));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(UintSet storage set, uint256 value) internal returns (bool) {
return _remove(set._inner, bytes32(value));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(UintSet storage set, uint256 value) internal view returns (bool) {
return _contains(set._inner, bytes32(value));
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function length(UintSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(UintSet storage set, uint256 index) internal view returns (uint256) {
return uint256(_at(set._inner, index));
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) onlyOwner public {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
interface Token {
function transferFrom(address, address, uint) external returns (bool);
function transfer(address, uint) external returns (bool);
}
interface OldIERC20 {
function transfer(address, uint) external;
}
contract FarmProRata is Ownable {
using SafeMath for uint;
using EnumerableSet for EnumerableSet.AddressSet;
event RewardsTransferred(address holder, uint amount);
event RewardsDisbursed(uint amount);
// deposit token contract address and reward token contract address
// these contracts are "trusted" and checked to not contain re-entrancy pattern
// to safely avoid checks-effects-interactions where needed to simplify logic
address public trustedDepositTokenAddress = 0xE32479d25b6Cb8c02507c3568813E11A37fa32CA;
address public trustedRewardTokenAddress = 0x692eb773E0b5B7A79EFac5A015C8b36A2577F65c;
// Amount of tokens
uint public disburseAmount = 2000e18;
// To be disbursed continuously over this duration
uint public disburseDuration = 180 days;
// If there are any undistributed or unclaimed tokens left in contract after this time
// Admin can claim them
uint public adminCanClaimAfter = 210 days;
// do not change this => disburse 100% rewards over `disburseDuration`
uint public disbursePercentX100 = 100e2;
uint public contractDeployTime;
uint public adminClaimableTime;
uint public lastDisburseTime;
constructor() public {
contractDeployTime = now;
adminClaimableTime = contractDeployTime.add(adminCanClaimAfter);
lastDisburseTime = contractDeployTime;
}
uint public totalClaimedRewards = 0;
EnumerableSet.AddressSet private holders;
mapping (address => uint) public depositedTokens;
mapping (address => uint) public depositTime;
mapping (address => uint) public lastClaimedTime;
mapping (address => uint) public totalEarnedTokens;
mapping (address => uint) public lastDivPoints;
uint public totalTokensDisbursed = 0;
uint public contractBalance = 0;
uint public totalDivPoints = 0;
uint public totalTokens = 0;
uint internal pointMultiplier = 1e18;
function addContractBalance(uint amount) public onlyOwner {
require(Token(trustedRewardTokenAddress).transferFrom(msg.sender, address(this), amount), "Cannot add balance!");
contractBalance = contractBalance.add(amount);
}
function updateAccount(address account) private {
disburseTokens();
uint pendingDivs = getPendingDivs(account);
if (pendingDivs > 0) {
require(Token(trustedRewardTokenAddress).transfer(account, pendingDivs), "Could not transfer tokens.");
totalEarnedTokens[account] = totalEarnedTokens[account].add(pendingDivs);
totalClaimedRewards = totalClaimedRewards.add(pendingDivs);
emit RewardsTransferred(account, pendingDivs);
}
lastClaimedTime[account] = now;
lastDivPoints[account] = totalDivPoints;
}
function getPendingDivs(address _holder) public view returns (uint) {
if (!holders.contains(_holder)) return 0;
if (depositedTokens[_holder] == 0) return 0;
uint newDivPoints = totalDivPoints.sub(lastDivPoints[_holder]);
uint depositedAmount = depositedTokens[_holder];
uint pendingDivs = depositedAmount.mul(newDivPoints).div(pointMultiplier);
return pendingDivs;
}
function getEstimatedPendingDivs(address _holder) public view returns (uint) {
uint pendingDivs = getPendingDivs(_holder);
uint pendingDisbursement = getPendingDisbursement();
if (contractBalance < pendingDisbursement) {
pendingDisbursement = contractBalance;
}
uint depositedAmount = depositedTokens[_holder];
if (depositedAmount == 0) return 0;
if (totalTokens == 0) return 0;
uint myShare = depositedAmount.mul(pendingDisbursement).div(totalTokens);
return pendingDivs.add(myShare);
}
function getNumberOfHolders() public view returns (uint) {
return holders.length();
}
function deposit(uint amountToDeposit) public {
require(amountToDeposit > 0, "Cannot deposit 0 Tokens");
updateAccount(msg.sender);
require(Token(trustedDepositTokenAddress).transferFrom(msg.sender, address(this), amountToDeposit), "Insufficient Token Allowance");
depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountToDeposit);
totalTokens = totalTokens.add(amountToDeposit);
if (!holders.contains(msg.sender)) {
holders.add(msg.sender);
depositTime[msg.sender] = now;
}
}
function withdraw(uint amountToWithdraw) public {
require(amountToWithdraw > 0, "Cannot withdraw 0 Tokens!");
require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw");
updateAccount(msg.sender);
require(Token(trustedDepositTokenAddress).transfer(msg.sender, amountToWithdraw), "Could not transfer tokens.");
depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw);
totalTokens = totalTokens.sub(amountToWithdraw);
if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) {
holders.remove(msg.sender);
}
}
// withdraw without caring about Rewards
function emergencyWithdraw(uint amountToWithdraw) public {
require(amountToWithdraw > 0, "Cannot withdraw 0 Tokens!");
require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw");
// manual update account here without withdrawing pending rewards
disburseTokens();
lastClaimedTime[msg.sender] = now;
lastDivPoints[msg.sender] = totalDivPoints;
require(Token(trustedDepositTokenAddress).transfer(msg.sender, amountToWithdraw), "Could not transfer tokens.");
depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw);
totalTokens = totalTokens.sub(amountToWithdraw);
if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) {
holders.remove(msg.sender);
}
}
function claim() public {
updateAccount(msg.sender);
}
function disburseTokens() private {
uint amount = getPendingDisbursement();
// uint contractBalance = Token(trustedRewardTokenAddress).balanceOf(address(this));
if (contractBalance < amount) {
amount = contractBalance;
}
if (amount == 0 || totalTokens == 0) return;
totalDivPoints = totalDivPoints.add(amount.mul(pointMultiplier).div(totalTokens));
emit RewardsDisbursed(amount);
contractBalance = contractBalance.sub(amount);
lastDisburseTime = now;
}
function getPendingDisbursement() public view returns (uint) {
uint timeDiff;
uint _now = now;
uint _stakingEndTime = contractDeployTime.add(disburseDuration);
if (_now > _stakingEndTime) {
_now = _stakingEndTime;
}
if (lastDisburseTime >= _now) {
timeDiff = 0;
} else {
timeDiff = _now.sub(lastDisburseTime);
}
uint pendingDisburse = disburseAmount
.mul(disbursePercentX100)
.mul(timeDiff)
.div(disburseDuration)
.div(10000);
return pendingDisburse;
}
function getDepositorsList(uint startIndex, uint endIndex)
public
view
returns (address[] memory stakers,
uint[] memory stakingTimestamps,
uint[] memory lastClaimedTimeStamps,
uint[] memory stakedTokens) {
require (startIndex < endIndex);
uint length = endIndex.sub(startIndex);
address[] memory _stakers = new address[](length);
uint[] memory _stakingTimestamps = new uint[](length);
uint[] memory _lastClaimedTimeStamps = new uint[](length);
uint[] memory _stakedTokens = new uint[](length);
for (uint i = startIndex; i < endIndex; i = i.add(1)) {
address staker = holders.at(i);
uint listIndex = i.sub(startIndex);
_stakers[listIndex] = staker;
_stakingTimestamps[listIndex] = depositTime[staker];
_lastClaimedTimeStamps[listIndex] = lastClaimedTime[staker];
_stakedTokens[listIndex] = depositedTokens[staker];
}
return (_stakers, _stakingTimestamps, _lastClaimedTimeStamps, _stakedTokens);
}
// function to allow owner to claim *other* modern ERC20 tokens sent to this contract
function transferAnyERC20Token(address _tokenAddr, address _to, uint _amount) public onlyOwner {
// require(_tokenAddr != trustedRewardTokenAddress && _tokenAddr != trustedDepositTokenAddress, "Cannot send out reward tokens or staking tokens!");
require(_tokenAddr != trustedDepositTokenAddress, "Admin cannot transfer out deposit tokens from this vault!");
require((_tokenAddr != trustedRewardTokenAddress) || (now > adminClaimableTime), "Admin cannot Transfer out Reward Tokens Yet!");
require(Token(_tokenAddr).transfer(_to, _amount), "Could not transfer out tokens!");
}
// function to allow owner to claim *other* modern ERC20 tokens sent to this contract
function transferAnyOldERC20Token(address _tokenAddr, address _to, uint _amount) public onlyOwner {
// require(_tokenAddr != trustedRewardTokenAddress && _tokenAddr != trustedDepositTokenAddress, "Cannot send out reward tokens or staking tokens!");
require(_tokenAddr != trustedDepositTokenAddress, "Admin cannot transfer out deposit tokens from this vault!");
require((_tokenAddr != trustedRewardTokenAddress) || (now > adminClaimableTime), "Admin cannot Transfer out Reward Tokens Yet!");
OldIERC20(_tokenAddr).transfer(_to, _amount);
}
}Contract Security Audit
- The BlockChain Auditor - November 24th, 2020 - Security Audit Report
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"amount","type":"uint256"}],"name":"RewardsDisbursed","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addContractBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminCanClaimAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminClaimableTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractDeployTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToDeposit","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disburseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disburseDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disbursePercentX100","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getDepositorsList","outputs":[{"internalType":"address[]","name":"stakers","type":"address[]"},{"internalType":"uint256[]","name":"stakingTimestamps","type":"uint256[]"},{"internalType":"uint256[]","name":"lastClaimedTimeStamps","type":"uint256[]"},{"internalType":"uint256[]","name":"stakedTokens","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getEstimatedPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingDisbursement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getPendingDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDisburseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDivPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDivPoints","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":[],"name":"totalTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensDisbursed","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":"transferAnyERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyOldERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedDepositTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedRewardTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405273e32479d25b6cb8c02507c3568813e11a37fa32ca600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073692eb773e0b5b7a79efac5a015c8b36a2577f65c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550686c6b935b8bbd40000060035562ed4e00600455630114db006005556127106006556000600a556000601255600060135560006014556000601555670de0b6b3a76400006016553480156200010257600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600781905550620001686005546007546200017d60201b620025341790919060201c565b6008819055506007546009819055506200019a565b6000808284019050838110156200019057fe5b8091505092915050565b612d3080620001aa6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063ca7e0835116100ad578063e027c61f1161007c578063e027c61f146108eb578063ed3e917414610909578063f2fde38b14610977578063f3f91fa0146109bb578063fe547f7214610a13576101fb565b8063ca7e083514610823578063d493b9ac14610841578063d578ceab146108af578063d7130e14146108cd576101fb565b80639f54790d116100e95780639f54790d14610761578063ac51de8d1461077f578063b6b55f251461079d578063c326bf4f146107cb576101fb565b80638da5cb5b146106835780638e20a1d9146106cd5780638f5705be146106eb57806398896d1014610709576101fb565b8063452b4cfc116101925780636270cd18116101615780636270cd18146105d157806365ca78be146106295780637e1c0c09146106475780638b7afe2e14610665576101fb565b8063452b4cfc1461051357806346c64873146105415780634e71d92d146105995780635312ea8e146105a3576101fb565b80632e1a7d4d116101ce5780632e1a7d4d14610425578063308feec314610453578063310452261461047157806331a5dda1146104c9576101fb565b806305447d25146102005780630c9a0c78146103655780631cfa8021146103835780631f04461c146103cd575b600080fd5b6102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610a31565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561028557808201518184015260208101905061026a565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102c75780820151818401526020810190506102ac565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103095780820151818401526020810190506102ee565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561034b578082015181840152602081019050610330565b505050509050019850505050505050505060405180910390f35b61036d610d4a565b6040518082815260200191505060405180910390f35b61038b610d50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d76565b6040518082815260200191505060405180910390f35b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050610d8e565b005b61045b611145565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611156565b6040518082815260200191505060405180910390f35b6104d161123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053f6004803603602081101561052957600080fd5b8101908080359060200190929190505050611260565b005b6105836004803603602081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611461565b6040518082815260200191505060405180910390f35b6105a1611479565b005b6105cf600480360360208110156105b957600080fd5b8101908080359060200190929190505050611484565b005b610613600480360360208110156105e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c4565b6040518082815260200191505060405180910390f35b6106316118dc565b6040518082815260200191505060405180910390f35b61064f6118e2565b6040518082815260200191505060405180910390f35b61066d6118e8565b6040518082815260200191505060405180910390f35b61068b6118ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d5611913565b6040518082815260200191505060405180910390f35b6106f3611919565b6040518082815260200191505060405180910390f35b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b6040518082815260200191505060405180910390f35b610769611a66565b6040518082815260200191505060405180910390f35b610787611a6c565b6040518082815260200191505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611b24565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e52565b6040518082815260200191505060405180910390f35b61082b611e6a565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e70565b005b6108b761215c565b6040518082815260200191505060405180910390f35b6108d5612162565b6040518082815260200191505060405180910390f35b6108f3612168565b6040518082815260200191505060405180910390f35b6109756004803603606081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216e565b005b6109b96004803603602081101561098d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c5565b005b6109fd600480360360208110156109d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612516565b6040518082815260200191505060405180910390f35b610a1b61252e565b6040518082815260200191505060405180910390f35b606080606080848610610a4357600080fd5b6000610a58878761255090919063ffffffff16565b905060608167ffffffffffffffff81118015610a7357600080fd5b50604051908082528060200260200182016040528015610aa25781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610abe57600080fd5b50604051908082528060200260200182016040528015610aed5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610b0957600080fd5b50604051908082528060200260200182016040528015610b385781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610b5457600080fd5b50604051908082528060200260200182016040528015610b835781602001602082028036833780820191505090505b50905060008b90505b8a811015610d2f576000610baa82600b61256790919063ffffffff16565b90506000610bc18e8461255090919063ffffffff16565b905081878281518110610bd057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610c5657fe5b602002602001018181525050600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054858281518110610cae57fe5b602002602001018181525050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848281518110610d0657fe5b6020026020010181815250505050610d2860018261253490919063ffffffff16565b9050610b8c565b50838383839850985098509850505050505092959194509250565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915090505481565b60008111610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b610ec233612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b8101908080519060200190929190505050611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61106a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110c28160155461255090919063ffffffff16565b6015819055506110dc33600b61289f90919063ffffffff16565b801561112757506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156111425761114033600b6128cf90919063ffffffff16565b505b50565b6000611151600b6128ff565b905090565b6000806111628361191f565b9050600061116e611a6c565b90508060135410156111805760135490505b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114156111d95760009350505050611235565b600060155414156111f05760009350505050611235565b600061121960155461120b858561291490919063ffffffff16565b61294390919063ffffffff16565b905061122e818561253490919063ffffffff16565b9450505050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d60208110156113c057600080fd5b8101908080519060200190929190505050611443576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206164642062616c616e6365210000000000000000000000000081525060200191505060405180910390fd5b6114588160135461253490919063ffffffff16565b60138190555050565b600e6020528060005260406000206000915090505481565b61148233612581565b565b600081116114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6115b761295c565b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116ea57600080fd5b505af11580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b8101908080519060200190929190505050611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6117e981600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118418160155461255090919063ffffffff16565b60158190555061185b33600b61289f90919063ffffffff16565b80156118a657506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156118c1576118bf33600b6128cf90919063ffffffff16565b505b50565b60106020528060005260406000206000915090505481565b60125481565b60155481565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60045481565b600061193582600b61289f90919063ffffffff16565b6119425760009050611a61565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156119935760009050611a61565b60006119e9601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460145461255090919063ffffffff16565b90506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611a58601654611a4a858561291490919063ffffffff16565b61294390919063ffffffff16565b90508093505050505b919050565b60075481565b60008060004290506000611a8d60045460075461253490919063ffffffff16565b905080821115611a9b578091505b8160095410611aad5760009250611ac5565b611ac26009548361255090919063ffffffff16565b92505b6000611b18612710611b0a600454611afc88611aee60065460035461291490919063ffffffff16565b61291490919063ffffffff16565b61294390919063ffffffff16565b61294390919063ffffffff16565b90508094505050505090565b60008111611b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b611ba333612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506040513d6020811015611caa57600080fd5b8101908080519060200190929190505050611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611d7f81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd78160155461253490919063ffffffff16565b601581905550611df133600b61289f90919063ffffffff16565b611e4f57611e0933600b612a3490919063ffffffff16565b5042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600d6020528060005260406000206000915090505481565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611fce575060085442115b612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b8101908080519060200190929190505050612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f436f756c64206e6f74207472616e73666572206f757420746f6b656e7321000081525060200191505060405180910390fd5b505050565b600a5481565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806122cc575060085442115b612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f6020528060005260406000206000915090505481565b60035481565b60008082840190508381101561254657fe5b8091505092915050565b60008282111561255c57fe5b818303905092915050565b60006125768360000183612a64565b60001c905092915050565b61258961295c565b60006125948261191f565b9050600081111561281157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050506126f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61274781601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279f81600a5461253490919063ffffffff16565b600a819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006128c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ae7565b905092915050565b60006128f7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b0a565b905092915050565b600061290d82600001612bf2565b9050919050565b6000808284029050600084148061293357508284828161293057fe5b04145b61293957fe5b8091505092915050565b60008082848161294f57fe5b0490508091505092915050565b6000612966611a6c565b90508060135410156129785760135490505b600081148061298957506000601554145b156129945750612a32565b6129d16129c06015546129b26016548561291490919063ffffffff16565b61294390919063ffffffff16565b60145461253490919063ffffffff16565b6014819055507f497e6c34cb46390a801e970e8c72fd87aa7fded87c9b77cdac588f235904a825816040518082815260200191505060405180910390a1612a238160135461255090919063ffffffff16565b60138190555042600981905550505b565b6000612a5c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c03565b905092915050565b600081836000018054905011612ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c746022913960400191505060405180910390fd5b826000018281548110612ad457fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612be65760006001820390506000600186600001805490500390506000866000018281548110612b5557fe5b9060005260206000200154905080876000018481548110612b7257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612baa57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612bec565b60009150505b92915050565b600081600001805490509050919050565b6000612c0f8383612ae7565b612c68578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c6d565b600090505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647341646d696e2063616e6e6f74205472616e73666572206f75742052657761726420546f6b656e73205965742141646d696e2063616e6e6f74207472616e73666572206f7574206465706f73697420746f6b656e732066726f6d2074686973207661756c7421a26469706673582212207eb5f627675cf8f0b29065caaf6515be3e6f6fe2576d878c2b5d8c75379447fa64736f6c634300060b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063ca7e0835116100ad578063e027c61f1161007c578063e027c61f146108eb578063ed3e917414610909578063f2fde38b14610977578063f3f91fa0146109bb578063fe547f7214610a13576101fb565b8063ca7e083514610823578063d493b9ac14610841578063d578ceab146108af578063d7130e14146108cd576101fb565b80639f54790d116100e95780639f54790d14610761578063ac51de8d1461077f578063b6b55f251461079d578063c326bf4f146107cb576101fb565b80638da5cb5b146106835780638e20a1d9146106cd5780638f5705be146106eb57806398896d1014610709576101fb565b8063452b4cfc116101925780636270cd18116101615780636270cd18146105d157806365ca78be146106295780637e1c0c09146106475780638b7afe2e14610665576101fb565b8063452b4cfc1461051357806346c64873146105415780634e71d92d146105995780635312ea8e146105a3576101fb565b80632e1a7d4d116101ce5780632e1a7d4d14610425578063308feec314610453578063310452261461047157806331a5dda1146104c9576101fb565b806305447d25146102005780630c9a0c78146103655780631cfa8021146103835780631f04461c146103cd575b600080fd5b6102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610a31565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561028557808201518184015260208101905061026a565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102c75780820151818401526020810190506102ac565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103095780820151818401526020810190506102ee565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561034b578082015181840152602081019050610330565b505050509050019850505050505050505060405180910390f35b61036d610d4a565b6040518082815260200191505060405180910390f35b61038b610d50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d76565b6040518082815260200191505060405180910390f35b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050610d8e565b005b61045b611145565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611156565b6040518082815260200191505060405180910390f35b6104d161123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053f6004803603602081101561052957600080fd5b8101908080359060200190929190505050611260565b005b6105836004803603602081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611461565b6040518082815260200191505060405180910390f35b6105a1611479565b005b6105cf600480360360208110156105b957600080fd5b8101908080359060200190929190505050611484565b005b610613600480360360208110156105e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c4565b6040518082815260200191505060405180910390f35b6106316118dc565b6040518082815260200191505060405180910390f35b61064f6118e2565b6040518082815260200191505060405180910390f35b61066d6118e8565b6040518082815260200191505060405180910390f35b61068b6118ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d5611913565b6040518082815260200191505060405180910390f35b6106f3611919565b6040518082815260200191505060405180910390f35b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b6040518082815260200191505060405180910390f35b610769611a66565b6040518082815260200191505060405180910390f35b610787611a6c565b6040518082815260200191505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611b24565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e52565b6040518082815260200191505060405180910390f35b61082b611e6a565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e70565b005b6108b761215c565b6040518082815260200191505060405180910390f35b6108d5612162565b6040518082815260200191505060405180910390f35b6108f3612168565b6040518082815260200191505060405180910390f35b6109756004803603606081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216e565b005b6109b96004803603602081101561098d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c5565b005b6109fd600480360360208110156109d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612516565b6040518082815260200191505060405180910390f35b610a1b61252e565b6040518082815260200191505060405180910390f35b606080606080848610610a4357600080fd5b6000610a58878761255090919063ffffffff16565b905060608167ffffffffffffffff81118015610a7357600080fd5b50604051908082528060200260200182016040528015610aa25781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610abe57600080fd5b50604051908082528060200260200182016040528015610aed5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610b0957600080fd5b50604051908082528060200260200182016040528015610b385781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610b5457600080fd5b50604051908082528060200260200182016040528015610b835781602001602082028036833780820191505090505b50905060008b90505b8a811015610d2f576000610baa82600b61256790919063ffffffff16565b90506000610bc18e8461255090919063ffffffff16565b905081878281518110610bd057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610c5657fe5b602002602001018181525050600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054858281518110610cae57fe5b602002602001018181525050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848281518110610d0657fe5b6020026020010181815250505050610d2860018261253490919063ffffffff16565b9050610b8c565b50838383839850985098509850505050505092959194509250565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915090505481565b60008111610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b610ec233612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b8101908080519060200190929190505050611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61106a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110c28160155461255090919063ffffffff16565b6015819055506110dc33600b61289f90919063ffffffff16565b801561112757506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156111425761114033600b6128cf90919063ffffffff16565b505b50565b6000611151600b6128ff565b905090565b6000806111628361191f565b9050600061116e611a6c565b90508060135410156111805760135490505b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114156111d95760009350505050611235565b600060155414156111f05760009350505050611235565b600061121960155461120b858561291490919063ffffffff16565b61294390919063ffffffff16565b905061122e818561253490919063ffffffff16565b9450505050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d60208110156113c057600080fd5b8101908080519060200190929190505050611443576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206164642062616c616e6365210000000000000000000000000081525060200191505060405180910390fd5b6114588160135461253490919063ffffffff16565b60138190555050565b600e6020528060005260406000206000915090505481565b61148233612581565b565b600081116114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6115b761295c565b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116ea57600080fd5b505af11580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b8101908080519060200190929190505050611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6117e981600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118418160155461255090919063ffffffff16565b60158190555061185b33600b61289f90919063ffffffff16565b80156118a657506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156118c1576118bf33600b6128cf90919063ffffffff16565b505b50565b60106020528060005260406000206000915090505481565b60125481565b60155481565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60045481565b600061193582600b61289f90919063ffffffff16565b6119425760009050611a61565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156119935760009050611a61565b60006119e9601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460145461255090919063ffffffff16565b90506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611a58601654611a4a858561291490919063ffffffff16565b61294390919063ffffffff16565b90508093505050505b919050565b60075481565b60008060004290506000611a8d60045460075461253490919063ffffffff16565b905080821115611a9b578091505b8160095410611aad5760009250611ac5565b611ac26009548361255090919063ffffffff16565b92505b6000611b18612710611b0a600454611afc88611aee60065460035461291490919063ffffffff16565b61291490919063ffffffff16565b61294390919063ffffffff16565b61294390919063ffffffff16565b90508094505050505090565b60008111611b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b611ba333612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506040513d6020811015611caa57600080fd5b8101908080519060200190929190505050611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611d7f81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd78160155461253490919063ffffffff16565b601581905550611df133600b61289f90919063ffffffff16565b611e4f57611e0933600b612a3490919063ffffffff16565b5042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600d6020528060005260406000206000915090505481565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611fce575060085442115b612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b8101908080519060200190929190505050612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f436f756c64206e6f74207472616e73666572206f757420746f6b656e7321000081525060200191505060405180910390fd5b505050565b600a5481565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806122cc575060085442115b612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f6020528060005260406000206000915090505481565b60035481565b60008082840190508381101561254657fe5b8091505092915050565b60008282111561255c57fe5b818303905092915050565b60006125768360000183612a64565b60001c905092915050565b61258961295c565b60006125948261191f565b9050600081111561281157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050506126f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61274781601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279f81600a5461253490919063ffffffff16565b600a819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006128c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ae7565b905092915050565b60006128f7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b0a565b905092915050565b600061290d82600001612bf2565b9050919050565b6000808284029050600084148061293357508284828161293057fe5b04145b61293957fe5b8091505092915050565b60008082848161294f57fe5b0490508091505092915050565b6000612966611a6c565b90508060135410156129785760135490505b600081148061298957506000601554145b156129945750612a32565b6129d16129c06015546129b26016548561291490919063ffffffff16565b61294390919063ffffffff16565b60145461253490919063ffffffff16565b6014819055507f497e6c34cb46390a801e970e8c72fd87aa7fded87c9b77cdac588f235904a825816040518082815260200191505060405180910390a1612a238160135461255090919063ffffffff16565b60138190555042600981905550505b565b6000612a5c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c03565b905092915050565b600081836000018054905011612ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c746022913960400191505060405180910390fd5b826000018281548110612ad457fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612be65760006001820390506000600186600001805490500390506000866000018281548110612b5557fe5b9060005260206000200154905080876000018481548110612b7257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612baa57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612bec565b60009150505b92915050565b600081600001805490509050919050565b6000612c0f8383612ae7565b612c68578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c6d565b600090505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647341646d696e2063616e6e6f74205472616e73666572206f75742052657761726420546f6b656e73205965742141646d696e2063616e6e6f74207472616e73666572206f7574206465706f73697420746f6b656e732066726f6d2074686973207661756c7421a26469706673582212207eb5f627675cf8f0b29065caaf6515be3e6f6fe2576d878c2b5d8c75379447fa64736f6c634300060b0033
Deployed Bytecode Sourcemap
10107:10116:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17689:1131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11187:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10578:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11851:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14724:671;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14016:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13418:590;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10671:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12107:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11688:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16300:68;;;:::i;:::-;;15449:843;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11794:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11906:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12026:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11949:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9062:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11989:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10890:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12977:433;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11235:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16945:736;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14125:591;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11633:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11272:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18921:617;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11540:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11059:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11309:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19637:583;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9681:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11739:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10791:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17689:1131;17796:24;17835:31;17881:35;17931:26;17992:8;17979:10;:21;17970:31;;;;;;18014:11;18028:24;18041:10;18028:8;:12;;:24;;;;:::i;:::-;18014:38;;18063:25;18105:6;18091:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18063:49;;18123:32;18169:6;18158:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18123:53;;18187:36;18237:6;18226:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18187:57;;18255:27;18296:6;18285:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18255:48;;18321:6;18330:10;18321:19;;18316:408;18346:8;18342:1;:12;18316:408;;;18385:14;18402:13;18413:1;18402:7;:10;;:13;;;;:::i;:::-;18385:30;;18430:14;18447:17;18453:10;18447:1;:5;;:17;;;;:::i;:::-;18430:34;;18501:6;18479:8;18488:9;18479:19;;;;;;;;;;;;;:28;;;;;;;;;;;18554:11;:19;18566:6;18554:19;;;;;;;;;;;;;;;;18522:18;18541:9;18522:29;;;;;;;;;;;;;:51;;;;;18624:15;:23;18640:6;18624:23;;;;;;;;;;;;;;;;18588:22;18611:9;18588:33;;;;;;;;;;;;;:59;;;;;18689:15;:23;18705:6;18689:23;;;;;;;;;;;;;;;;18662:13;18676:9;18662:24;;;;;;;;;;;;;:50;;;;;18316:408;;18360:8;18366:1;18360;:5;;:8;;;;:::i;:::-;18356:12;;18316:408;;;;18744:8;18754:18;18774:22;18798:13;18736:76;;;;;;;;;;;;;17689:1131;;;;;;;:::o;11187:39::-;;;;:::o;10578:86::-;;;;;;;;;;;;;:::o;11851:46::-;;;;;;;;;;;;;;;;;:::o;14724:671::-;14810:1;14791:16;:20;14783:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14893:16;14862:15;:27;14878:10;14862:27;;;;;;;;;;;;;;;;:47;;14854:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14953:25;14967:10;14953:13;:25::i;:::-;15005:26;;;;;;;;;;;14999:42;;;15042:10;15054:16;14999:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14991:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15145:49;15177:16;15145:15;:27;15161:10;15145:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;15115:15;:27;15131:10;15115:27;;;;;;;;;;;;;;;:79;;;;15219:33;15235:16;15219:11;;:15;;:33;;;;:::i;:::-;15205:11;:47;;;;15269:28;15286:10;15269:7;:16;;:28;;;;:::i;:::-;:64;;;;;15332:1;15301:15;:27;15317:10;15301:27;;;;;;;;;;;;;;;;:32;15269:64;15265:123;;;15350:26;15365:10;15350:7;:14;;:26;;;;:::i;:::-;;15265:123;14724:671;:::o;14016:99::-;14067:4;14091:16;:7;:14;:16::i;:::-;14084:23;;14016:99;:::o;13418:590::-;13489:4;13506:16;13525:23;13540:7;13525:14;:23::i;:::-;13506:42;;13559:24;13586;:22;:24::i;:::-;13559:51;;13643:19;13625:15;;:37;13621:107;;;13701:15;;13679:37;;13621:107;13738:20;13761:15;:24;13777:7;13761:24;;;;;;;;;;;;;;;;13738:47;;13819:1;13800:15;:20;13796:34;;;13829:1;13822:8;;;;;;;13796:34;13860:1;13845:11;;:16;13841:30;;;13870:1;13863:8;;;;;;;13841:30;13884:12;13899:57;13944:11;;13899:40;13919:19;13899:15;:19;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;13884:72;;13976:24;13992:7;13976:11;:15;;:24;;;;:::i;:::-;13969:31;;;;;;13418:590;;;;:::o;10671:85::-;;;;;;;;;;;;;:::o;12107:245::-;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;12190:25:::1;;;;;;;;;;;12184:45;;;12230:10;12250:4;12257:6;12184:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12176:112;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12317:27;12337:6;12317:15;;:19;;:27;;;;:::i;:::-;12299:15;:45;;;;12107:245:::0;:::o;11688:44::-;;;;;;;;;;;;;;;;;:::o;16300:68::-;16335:25;16349:10;16335:13;:25::i;:::-;16300:68::o;15449:843::-;15544:1;15525:16;:20;15517:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15627:16;15596:15;:27;15612:10;15596:27;;;;;;;;;;;;;;;;:47;;15588:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15762:16;:14;:16::i;:::-;15819:3;15789:15;:27;15805:10;15789:27;;;;;;;;;;;;;;;:33;;;;15861:14;;15833:13;:25;15847:10;15833:25;;;;;;;;;;;;;;;:42;;;;15902:26;;;;;;;;;;;15896:42;;;15939:10;15951:16;15896:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15888:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16042:49;16074:16;16042:15;:27;16058:10;16042:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;16012:15;:27;16028:10;16012:27;;;;;;;;;;;;;;;:79;;;;16116:33;16132:16;16116:11;;:15;;:33;;;;:::i;:::-;16102:11;:47;;;;16166:28;16183:10;16166:7;:16;;:28;;;;:::i;:::-;:64;;;;;16229:1;16198:15;:27;16214:10;16198:27;;;;;;;;;;;;;;;;:32;16166:64;16162:123;;;16247:26;16262:10;16247:7;:14;;:26;;;;:::i;:::-;;16162:123;15449:843;:::o;11794:50::-;;;;;;;;;;;;;;;;;:::o;11906:36::-;;;;:::o;12026:27::-;;;;:::o;11949:31::-;;;;:::o;9062:20::-;;;;;;;;;;;;;:::o;11989:30::-;;;;:::o;10890:39::-;;;;:::o;12977:433::-;13039:4;13061:25;13078:7;13061;:16;;:25;;;;:::i;:::-;13056:40;;13095:1;13088:8;;;;13056:40;13139:1;13111:15;:24;13127:7;13111:24;;;;;;;;;;;;;;;;:29;13107:43;;;13149:1;13142:8;;;;13107:43;13163:17;13183:42;13202:13;:22;13216:7;13202:22;;;;;;;;;;;;;;;;13183:14;;:18;;:42;;;;:::i;:::-;13163:62;;13238:20;13261:15;:24;13277:7;13261:24;;;;;;;;;;;;;;;;13238:47;;13298:16;13317:54;13355:15;;13317:33;13337:12;13317:15;:19;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;13298:73;;13391:11;13384:18;;;;;12977:433;;;;:::o;11235:30::-;;;;:::o;16945:736::-;17000:4;17017:13;17041:9;17053:3;17041:15;;17067:20;17090:40;17113:16;;17090:18;;:22;;:40;;;;:::i;:::-;17067:63;;17152:15;17145:4;:22;17141:77;;;17191:15;17184:22;;17141:77;17252:4;17232:16;;:24;17228:139;;17284:1;17273:12;;17228:139;;;17329:26;17338:16;;17329:4;:8;;:26;;;;:::i;:::-;17318:37;;17228:139;17379:20;17402:238;17634:5;17402:189;17574:16;;17402:129;17522:8;17402:77;17459:19;;17402:14;;:56;;:77;;;;:::i;:::-;:119;;:129;;;;:::i;:::-;:171;;:189;;;;:::i;:::-;:231;;:238;;;;:::i;:::-;17379:261;;17658:15;17651:22;;;;;;16945:736;:::o;14125:591::-;14208:1;14190:15;:19;14182:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14250:25;14264:10;14250:13;:25::i;:::-;14302:26;;;;;;;;;;;14296:46;;;14343:10;14363:4;14370:15;14296:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14288:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14462:48;14494:15;14462;:27;14478:10;14462:27;;;;;;;;;;;;;;;;:31;;:48;;;;:::i;:::-;14432:15;:27;14448:10;14432:27;;;;;;;;;;;;;;;:78;;;;14535:32;14551:15;14535:11;;:15;;:32;;;;:::i;:::-;14521:11;:46;;;;14585:28;14602:10;14585:7;:16;;:28;;;;:::i;:::-;14580:129;;14630:23;14642:10;14630:7;:11;;:23;;;;:::i;:::-;;14694:3;14668:11;:23;14680:10;14668:23;;;;;;;;;;;;;;;:29;;;;14580:129;14125:591;:::o;11633:48::-;;;;;;;;;;;;;;;;;:::o;11272:30::-;;;;:::o;18921:617::-;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;19209:26:::1;;;;;;;;;;;19195:40;;:10;:40;;;;19187:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19331:25;;;;;;;;;;;19317:39;;:10;:39;;;;19316:71;;;;19368:18;;19362:3;:24;19316:71;19308:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19461:10;19455:26;;;19482:3;19487:7;19455:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;19447:83;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18921:617:::0;;;:::o;11540:35::-;;;;:::o;11059:41::-;;;;:::o;11309:28::-;;;;:::o;19637:583::-;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;19928:26:::1;;;;;;;;;;;19914:40;;:10;:40;;;;19906:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20050:25;;;;;;;;;;;20036:39;;:10;:39;;;;20035:71;;;;20087:18;;20081:3;:24;20035:71;20027:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20178:10;20168:30;;;20199:3;20204:7;20168:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19637:583:::0;;;:::o;9681:178::-;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;9778:1:::1;9758:22;;:8;:22;;;;9750:31;;;::::0;::::1;;9821:8;9793:37;;9814:5;::::0;::::1;;;;;;;;;9793:37;;;;;;;;;;;;9845:8;9837:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;9681:178:::0;:::o;11739:48::-;;;;;;;;;;;;;;;;;:::o;10791:36::-;;;;:::o;735:133::-;793:7;809:9;825:1;821;:5;809:17;;845:1;840;:6;;833:14;;;;861:1;854:8;;;735:133;;;;:::o;616:113::-;674:7;702:1;697;:6;;690:14;;;;722:1;718;:5;711:12;;616:113;;;;:::o;7082:149::-;7156:7;7199:22;7203:3;:10;;7215:5;7199:3;:22::i;:::-;7191:31;;7176:47;;7082:149;;;;:::o;12362:607::-;12421:16;:14;:16::i;:::-;12448;12467:23;12482:7;12467:14;:23::i;:::-;12448:42;;12519:1;12505:11;:15;12501:370;;;12551:25;;;;;;;;;;;12545:41;;;12587:7;12596:11;12545:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12537:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12683:43;12714:11;12683:17;:26;12701:7;12683:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;12654:17;:26;12672:7;12654:26;;;;;;;;;;;;;;;:72;;;;12763:36;12787:11;12763:19;;:23;;:36;;;;:::i;:::-;12741:19;:58;;;;12819:40;12838:7;12847:11;12819:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;12501:370;12908:3;12881:15;:24;12897:7;12881:24;;;;;;;;;;;;;;;:30;;;;12947:14;;12922:13;:22;12936:7;12922:22;;;;;;;;;;;;;;;:39;;;;12362:607;;:::o;6377:158::-;6457:4;6481:46;6491:3;:10;;6519:5;6511:14;;6503:23;;6481:9;:46::i;:::-;6474:53;;6377:158;;;;:::o;6142:149::-;6215:4;6239:44;6247:3;:10;;6275:5;6267:14;;6259:23;;6239:7;:44::i;:::-;6232:51;;6142:149;;;;:::o;6621:117::-;6684:7;6711:19;6719:3;:10;;6711:7;:19::i;:::-;6704:26;;6621:117;;;:::o;187:147::-;245:7;261:9;277:1;273;:5;261:17;;297:1;292;:6;:20;;;;311:1;306;302;:5;;;;;;:10;292:20;285:28;;;;327:1;320:8;;;187:147;;;;:::o;340:270::-;398:7;489:9;505:1;501;:5;;;;;;489:17;;603:1;596:8;;;340:270;;;;:::o;16376:561::-;16421:11;16435:24;:22;:24::i;:::-;16421:38;;16590:6;16572:15;;:24;16568:81;;;16622:15;;16613:24;;16568:81;16673:1;16663:6;:11;:31;;;;16693:1;16678:11;;:16;16663:31;16659:44;;;16696:7;;;16659:44;16732:64;16751:44;16783:11;;16751:27;16762:15;;16751:6;:10;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16732:14;;:18;;:64;;;;:::i;:::-;16715:14;:81;;;;16812:24;16829:6;16812:24;;;;;;;;;;;;;;;;;;16867:27;16887:6;16867:15;;:19;;:27;;;;:::i;:::-;16849:15;:45;;;;16924:3;16905:16;:22;;;;16376:561;;:::o;5823:143::-;5893:4;5917:41;5922:3;:10;;5950:5;5942:14;;5934:23;;5917:4;:41::i;:::-;5910:48;;5823:143;;;;:::o;5365:204::-;5432:7;5481:5;5460:3;:11;;:18;;;;:26;5452:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5543:3;:11;;5555:5;5543:18;;;;;;;;;;;;;;;;5536:25;;5365:204;;;;:::o;4697:129::-;4770:4;4817:1;4794:3;:12;;:19;4807:5;4794:19;;;;;;;;;;;;:24;;4787:31;;4697:129;;;;:::o;3067:1544::-;3133:4;3251:18;3272:3;:12;;:19;3285:5;3272:19;;;;;;;;;;;;3251:40;;3322:1;3308:10;:15;3304:1300;;3670:21;3707:1;3694:10;:14;3670:38;;3723:17;3764:1;3743:3;:11;;:18;;;;:22;3723:42;;4010:17;4030:3;:11;;4042:9;4030:22;;;;;;;;;;;;;;;;4010:42;;4176:9;4147:3;:11;;4159:13;4147:26;;;;;;;;;;;;;;;:38;;;;4295:1;4279:13;:17;4253:3;:12;;:23;4266:9;4253:23;;;;;;;;;;;:43;;;;4405:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;4500:3;:12;;:19;4513:5;4500:19;;;;;;;;;;;4493:26;;;4543:4;4536:11;;;;;;;;3304:1300;4587:5;4580:12;;;3067:1544;;;;;:::o;4912:109::-;4968:7;4995:3;:11;;:18;;;;4988:25;;4912:109;;;:::o;2477:414::-;2540:4;2562:21;2572:3;2577:5;2562:9;:21::i;:::-;2557:327;;2600:3;:11;;2617:5;2600:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:3;:11;;:18;;;;2761:3;:12;;:19;2774:5;2761:19;;;;;;;;;;;:40;;;;2823:4;2816:11;;;;2557:327;2867:5;2860:12;;2477:414;;;;;:::o
Swarm Source
ipfs://7eb5f627675cf8f0b29065caaf6515be3e6f6fe2576d878c2b5d8c75379447fa
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.