Source Code
Latest 25 from a total of 956 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Any ERC... | 13494913 | 1491 days ago | IN | 0 ETH | 0.00744225 | ||||
| Transfer Ownersh... | 13489338 | 1492 days ago | IN | 0 ETH | 0.00315256 | ||||
| Withdraw | 12939815 | 1577 days ago | IN | 0 ETH | 0.00188118 | ||||
| Withdraw | 12646432 | 1623 days ago | IN | 0 ETH | 0.00210189 | ||||
| Claim | 12633469 | 1625 days ago | IN | 0 ETH | 0.00250154 | ||||
| Withdraw | 12608738 | 1629 days ago | IN | 0 ETH | 0.00087579 | ||||
| Claim | 12608688 | 1629 days ago | IN | 0 ETH | 0.00182975 | ||||
| Withdraw | 12593174 | 1631 days ago | IN | 0 ETH | 0.010087 | ||||
| Withdraw | 12589368 | 1632 days ago | IN | 0 ETH | 0.00070063 | ||||
| Claim | 12588062 | 1632 days ago | IN | 0 ETH | 0.00166769 | ||||
| Withdraw | 12585102 | 1633 days ago | IN | 0 ETH | 0.0003456 | ||||
| Withdraw | 12585074 | 1633 days ago | IN | 0 ETH | 0.00093417 | ||||
| Claim | 12585064 | 1633 days ago | IN | 0 ETH | 0.00187615 | ||||
| Claim | 12567619 | 1635 days ago | IN | 0 ETH | 0.00130696 | ||||
| Deposit | 12564559 | 1636 days ago | IN | 0 ETH | 0.00203112 | ||||
| Deposit | 12564537 | 1636 days ago | IN | 0 ETH | 0.00226324 | ||||
| Deposit | 12561674 | 1636 days ago | IN | 0 ETH | 0.00150883 | ||||
| Deposit | 12561669 | 1636 days ago | IN | 0 ETH | 0.00156686 | ||||
| Deposit | 12561665 | 1636 days ago | IN | 0 ETH | 0.00168292 | ||||
| Deposit | 12561655 | 1636 days ago | IN | 0 ETH | 0.00162489 | ||||
| Deposit | 12561640 | 1636 days ago | IN | 0 ETH | 0.00156686 | ||||
| Withdraw | 12561637 | 1636 days ago | IN | 0 ETH | 0.00054 | ||||
| Deposit | 12561635 | 1636 days ago | IN | 0 ETH | 0.00139276 | ||||
| Deposit | 12561635 | 1636 days ago | IN | 0 ETH | 0.00139276 | ||||
| Deposit | 12561623 | 1636 days ago | IN | 0 ETH | 0.00162489 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
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-21
*/
/**
*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 = 0x01A388530083e69fd0B60353C90d8bF2B29be2E7;
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
60806040527301a388530083e69fd0b60353c90d8bf2b29be2e7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073692eb773e0b5b7a79efac5a015c8b36a2577f65c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550686c6b935b8bbd40000060035562ed4e00600455630114db006005556127106006556000600a556000601255600060135560006014556000601555670de0b6b3a76400006016553480156200010257600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600781905550620001686005546007546200017d60201b620025341790919060201c565b6008819055506007546009819055506200019a565b6000808284019050838110156200019057fe5b8091505092915050565b612d3080620001aa6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063ca7e0835116100ad578063e027c61f1161007c578063e027c61f146108eb578063ed3e917414610909578063f2fde38b14610977578063f3f91fa0146109bb578063fe547f7214610a13576101fb565b8063ca7e083514610823578063d493b9ac14610841578063d578ceab146108af578063d7130e14146108cd576101fb565b80639f54790d116100e95780639f54790d14610761578063ac51de8d1461077f578063b6b55f251461079d578063c326bf4f146107cb576101fb565b80638da5cb5b146106835780638e20a1d9146106cd5780638f5705be146106eb57806398896d1014610709576101fb565b8063452b4cfc116101925780636270cd18116101615780636270cd18146105d157806365ca78be146106295780637e1c0c09146106475780638b7afe2e14610665576101fb565b8063452b4cfc1461051357806346c64873146105415780634e71d92d146105995780635312ea8e146105a3576101fb565b80632e1a7d4d116101ce5780632e1a7d4d14610425578063308feec314610453578063310452261461047157806331a5dda1146104c9576101fb565b806305447d25146102005780630c9a0c78146103655780631cfa8021146103835780631f04461c146103cd575b600080fd5b6102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610a31565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561028557808201518184015260208101905061026a565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102c75780820151818401526020810190506102ac565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103095780820151818401526020810190506102ee565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561034b578082015181840152602081019050610330565b505050509050019850505050505050505060405180910390f35b61036d610d4a565b6040518082815260200191505060405180910390f35b61038b610d50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d76565b6040518082815260200191505060405180910390f35b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050610d8e565b005b61045b611145565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611156565b6040518082815260200191505060405180910390f35b6104d161123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053f6004803603602081101561052957600080fd5b8101908080359060200190929190505050611260565b005b6105836004803603602081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611461565b6040518082815260200191505060405180910390f35b6105a1611479565b005b6105cf600480360360208110156105b957600080fd5b8101908080359060200190929190505050611484565b005b610613600480360360208110156105e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c4565b6040518082815260200191505060405180910390f35b6106316118dc565b6040518082815260200191505060405180910390f35b61064f6118e2565b6040518082815260200191505060405180910390f35b61066d6118e8565b6040518082815260200191505060405180910390f35b61068b6118ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d5611913565b6040518082815260200191505060405180910390f35b6106f3611919565b6040518082815260200191505060405180910390f35b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b6040518082815260200191505060405180910390f35b610769611a66565b6040518082815260200191505060405180910390f35b610787611a6c565b6040518082815260200191505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611b24565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e52565b6040518082815260200191505060405180910390f35b61082b611e6a565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e70565b005b6108b761215c565b6040518082815260200191505060405180910390f35b6108d5612162565b6040518082815260200191505060405180910390f35b6108f3612168565b6040518082815260200191505060405180910390f35b6109756004803603606081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216e565b005b6109b96004803603602081101561098d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c5565b005b6109fd600480360360208110156109d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612516565b6040518082815260200191505060405180910390f35b610a1b61252e565b6040518082815260200191505060405180910390f35b606080606080848610610a4357600080fd5b6000610a58878761255090919063ffffffff16565b905060608167ffffffffffffffff81118015610a7357600080fd5b50604051908082528060200260200182016040528015610aa25781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610abe57600080fd5b50604051908082528060200260200182016040528015610aed5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610b0957600080fd5b50604051908082528060200260200182016040528015610b385781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610b5457600080fd5b50604051908082528060200260200182016040528015610b835781602001602082028036833780820191505090505b50905060008b90505b8a811015610d2f576000610baa82600b61256790919063ffffffff16565b90506000610bc18e8461255090919063ffffffff16565b905081878281518110610bd057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610c5657fe5b602002602001018181525050600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054858281518110610cae57fe5b602002602001018181525050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848281518110610d0657fe5b6020026020010181815250505050610d2860018261253490919063ffffffff16565b9050610b8c565b50838383839850985098509850505050505092959194509250565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915090505481565b60008111610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b610ec233612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b8101908080519060200190929190505050611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61106a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110c28160155461255090919063ffffffff16565b6015819055506110dc33600b61289f90919063ffffffff16565b801561112757506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156111425761114033600b6128cf90919063ffffffff16565b505b50565b6000611151600b6128ff565b905090565b6000806111628361191f565b9050600061116e611a6c565b90508060135410156111805760135490505b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114156111d95760009350505050611235565b600060155414156111f05760009350505050611235565b600061121960155461120b858561291490919063ffffffff16565b61294390919063ffffffff16565b905061122e818561253490919063ffffffff16565b9450505050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d60208110156113c057600080fd5b8101908080519060200190929190505050611443576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206164642062616c616e6365210000000000000000000000000081525060200191505060405180910390fd5b6114588160135461253490919063ffffffff16565b60138190555050565b600e6020528060005260406000206000915090505481565b61148233612581565b565b600081116114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6115b761295c565b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116ea57600080fd5b505af11580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b8101908080519060200190929190505050611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6117e981600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118418160155461255090919063ffffffff16565b60158190555061185b33600b61289f90919063ffffffff16565b80156118a657506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156118c1576118bf33600b6128cf90919063ffffffff16565b505b50565b60106020528060005260406000206000915090505481565b60125481565b60155481565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60045481565b600061193582600b61289f90919063ffffffff16565b6119425760009050611a61565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156119935760009050611a61565b60006119e9601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460145461255090919063ffffffff16565b90506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611a58601654611a4a858561291490919063ffffffff16565b61294390919063ffffffff16565b90508093505050505b919050565b60075481565b60008060004290506000611a8d60045460075461253490919063ffffffff16565b905080821115611a9b578091505b8160095410611aad5760009250611ac5565b611ac26009548361255090919063ffffffff16565b92505b6000611b18612710611b0a600454611afc88611aee60065460035461291490919063ffffffff16565b61291490919063ffffffff16565b61294390919063ffffffff16565b61294390919063ffffffff16565b90508094505050505090565b60008111611b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b611ba333612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506040513d6020811015611caa57600080fd5b8101908080519060200190929190505050611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611d7f81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd78160155461253490919063ffffffff16565b601581905550611df133600b61289f90919063ffffffff16565b611e4f57611e0933600b612a3490919063ffffffff16565b5042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600d6020528060005260406000206000915090505481565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611fce575060085442115b612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b8101908080519060200190929190505050612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f436f756c64206e6f74207472616e73666572206f757420746f6b656e7321000081525060200191505060405180910390fd5b505050565b600a5481565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806122cc575060085442115b612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f6020528060005260406000206000915090505481565b60035481565b60008082840190508381101561254657fe5b8091505092915050565b60008282111561255c57fe5b818303905092915050565b60006125768360000183612a64565b60001c905092915050565b61258961295c565b60006125948261191f565b9050600081111561281157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050506126f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61274781601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279f81600a5461253490919063ffffffff16565b600a819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006128c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ae7565b905092915050565b60006128f7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b0a565b905092915050565b600061290d82600001612bf2565b9050919050565b6000808284029050600084148061293357508284828161293057fe5b04145b61293957fe5b8091505092915050565b60008082848161294f57fe5b0490508091505092915050565b6000612966611a6c565b90508060135410156129785760135490505b600081148061298957506000601554145b156129945750612a32565b6129d16129c06015546129b26016548561291490919063ffffffff16565b61294390919063ffffffff16565b60145461253490919063ffffffff16565b6014819055507f497e6c34cb46390a801e970e8c72fd87aa7fded87c9b77cdac588f235904a825816040518082815260200191505060405180910390a1612a238160135461255090919063ffffffff16565b60138190555042600981905550505b565b6000612a5c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c03565b905092915050565b600081836000018054905011612ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c746022913960400191505060405180910390fd5b826000018281548110612ad457fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612be65760006001820390506000600186600001805490500390506000866000018281548110612b5557fe5b9060005260206000200154905080876000018481548110612b7257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612baa57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612bec565b60009150505b92915050565b600081600001805490509050919050565b6000612c0f8383612ae7565b612c68578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c6d565b600090505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647341646d696e2063616e6e6f74205472616e73666572206f75742052657761726420546f6b656e73205965742141646d696e2063616e6e6f74207472616e73666572206f7574206465706f73697420746f6b656e732066726f6d2074686973207661756c7421a264697066735822122024a68daf2bd2f81c7b1561da64318316e3b1fcb02425d508abfb7e07f29512d064736f6c634300060b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638da5cb5b1161011a578063ca7e0835116100ad578063e027c61f1161007c578063e027c61f146108eb578063ed3e917414610909578063f2fde38b14610977578063f3f91fa0146109bb578063fe547f7214610a13576101fb565b8063ca7e083514610823578063d493b9ac14610841578063d578ceab146108af578063d7130e14146108cd576101fb565b80639f54790d116100e95780639f54790d14610761578063ac51de8d1461077f578063b6b55f251461079d578063c326bf4f146107cb576101fb565b80638da5cb5b146106835780638e20a1d9146106cd5780638f5705be146106eb57806398896d1014610709576101fb565b8063452b4cfc116101925780636270cd18116101615780636270cd18146105d157806365ca78be146106295780637e1c0c09146106475780638b7afe2e14610665576101fb565b8063452b4cfc1461051357806346c64873146105415780634e71d92d146105995780635312ea8e146105a3576101fb565b80632e1a7d4d116101ce5780632e1a7d4d14610425578063308feec314610453578063310452261461047157806331a5dda1146104c9576101fb565b806305447d25146102005780630c9a0c78146103655780631cfa8021146103835780631f04461c146103cd575b600080fd5b6102366004803603604081101561021657600080fd5b810190808035906020019092919080359060200190929190505050610a31565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561028557808201518184015260208101905061026a565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102c75780820151818401526020810190506102ac565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156103095780820151818401526020810190506102ee565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561034b578082015181840152602081019050610330565b505050509050019850505050505050505060405180910390f35b61036d610d4a565b6040518082815260200191505060405180910390f35b61038b610d50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d76565b6040518082815260200191505060405180910390f35b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050610d8e565b005b61045b611145565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611156565b6040518082815260200191505060405180910390f35b6104d161123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053f6004803603602081101561052957600080fd5b8101908080359060200190929190505050611260565b005b6105836004803603602081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611461565b6040518082815260200191505060405180910390f35b6105a1611479565b005b6105cf600480360360208110156105b957600080fd5b8101908080359060200190929190505050611484565b005b610613600480360360208110156105e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c4565b6040518082815260200191505060405180910390f35b6106316118dc565b6040518082815260200191505060405180910390f35b61064f6118e2565b6040518082815260200191505060405180910390f35b61066d6118e8565b6040518082815260200191505060405180910390f35b61068b6118ee565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d5611913565b6040518082815260200191505060405180910390f35b6106f3611919565b6040518082815260200191505060405180910390f35b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191f565b6040518082815260200191505060405180910390f35b610769611a66565b6040518082815260200191505060405180910390f35b610787611a6c565b6040518082815260200191505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611b24565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e52565b6040518082815260200191505060405180910390f35b61082b611e6a565b6040518082815260200191505060405180910390f35b6108ad6004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e70565b005b6108b761215c565b6040518082815260200191505060405180910390f35b6108d5612162565b6040518082815260200191505060405180910390f35b6108f3612168565b6040518082815260200191505060405180910390f35b6109756004803603606081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216e565b005b6109b96004803603602081101561098d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123c5565b005b6109fd600480360360208110156109d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612516565b6040518082815260200191505060405180910390f35b610a1b61252e565b6040518082815260200191505060405180910390f35b606080606080848610610a4357600080fd5b6000610a58878761255090919063ffffffff16565b905060608167ffffffffffffffff81118015610a7357600080fd5b50604051908082528060200260200182016040528015610aa25781602001602082028036833780820191505090505b50905060608267ffffffffffffffff81118015610abe57600080fd5b50604051908082528060200260200182016040528015610aed5781602001602082028036833780820191505090505b50905060608367ffffffffffffffff81118015610b0957600080fd5b50604051908082528060200260200182016040528015610b385781602001602082028036833780820191505090505b50905060608467ffffffffffffffff81118015610b5457600080fd5b50604051908082528060200260200182016040528015610b835781602001602082028036833780820191505090505b50905060008b90505b8a811015610d2f576000610baa82600b61256790919063ffffffff16565b90506000610bc18e8461255090919063ffffffff16565b905081878281518110610bd057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054868281518110610c5657fe5b602002602001018181525050600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054858281518110610cae57fe5b602002602001018181525050600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848281518110610d0657fe5b6020026020010181815250505050610d2860018261253490919063ffffffff16565b9050610b8c565b50838383839850985098509850505050505092959194509250565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915090505481565b60008111610e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b610ec233612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b505050506040513d6020811015610f9557600080fd5b8101908080519060200190929190505050611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61106a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110c28160155461255090919063ffffffff16565b6015819055506110dc33600b61289f90919063ffffffff16565b801561112757506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156111425761114033600b6128cf90919063ffffffff16565b505b50565b6000611151600b6128ff565b905090565b6000806111628361191f565b9050600061116e611a6c565b90508060135410156111805760135490505b6000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114156111d95760009350505050611235565b600060155414156111f05760009350505050611235565b600061121960155461120b858561291490919063ffffffff16565b61294390919063ffffffff16565b905061122e818561253490919063ffffffff16565b9450505050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561139657600080fd5b505af11580156113aa573d6000803e3d6000fd5b505050506040513d60208110156113c057600080fd5b8101908080519060200190929190505050611443576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206164642062616c616e6365210000000000000000000000000081525060200191505060405180910390fd5b6114588160135461253490919063ffffffff16565b60138190555050565b600e6020528060005260406000206000915090505481565b61148233612581565b565b600081116114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43616e6e6f74207769746864726177203020546f6b656e73210000000000000081525060200191505060405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b6115b761295c565b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116ea57600080fd5b505af11580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b8101908080519060200190929190505050611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b6117e981600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255090919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118418160155461255090919063ffffffff16565b60158190555061185b33600b61289f90919063ffffffff16565b80156118a657506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156118c1576118bf33600b6128cf90919063ffffffff16565b505b50565b60106020528060005260406000206000915090505481565b60125481565b60155481565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60045481565b600061193582600b61289f90919063ffffffff16565b6119425760009050611a61565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156119935760009050611a61565b60006119e9601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460145461255090919063ffffffff16565b90506000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611a58601654611a4a858561291490919063ffffffff16565b61294390919063ffffffff16565b90508093505050505b919050565b60075481565b60008060004290506000611a8d60045460075461253490919063ffffffff16565b905080821115611a9b578091505b8160095410611aad5760009250611ac5565b611ac26009548361255090919063ffffffff16565b92505b6000611b18612710611b0a600454611afc88611aee60065460035461291490919063ffffffff16565b61291490919063ffffffff16565b61294390919063ffffffff16565b61294390919063ffffffff16565b90508094505050505090565b60008111611b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b611ba333612581565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506040513d6020811015611caa57600080fd5b8101908080519060200190929190505050611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b611d7f81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dd78160155461253490919063ffffffff16565b601581905550611df133600b61289f90919063ffffffff16565b611e4f57611e0933600b612a3490919063ffffffff16565b5042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600d6020528060005260406000206000915090505481565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580611fce575060085442115b612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120aa57600080fd5b505af11580156120be573d6000803e3d6000fd5b505050506040513d60208110156120d457600080fd5b8101908080519060200190929190505050612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f436f756c64206e6f74207472616e73666572206f757420746f6b656e7321000081525060200191505060405180910390fd5b505050565b600a5481565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612cc26039913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806122cc575060085442115b612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c96602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f6020528060005260406000206000915090505481565b60035481565b60008082840190508381101561254657fe5b8091505092915050565b60008282111561255c57fe5b818303905092915050565b60006125768360000183612a64565b60001c905092915050565b61258961295c565b60006125948261191f565b9050600081111561281157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050506126f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b61274781601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279f81600a5461253490919063ffffffff16565b600a819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601454601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006128c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ae7565b905092915050565b60006128f7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b0a565b905092915050565b600061290d82600001612bf2565b9050919050565b6000808284029050600084148061293357508284828161293057fe5b04145b61293957fe5b8091505092915050565b60008082848161294f57fe5b0490508091505092915050565b6000612966611a6c565b90508060135410156129785760135490505b600081148061298957506000601554145b156129945750612a32565b6129d16129c06015546129b26016548561291490919063ffffffff16565b61294390919063ffffffff16565b60145461253490919063ffffffff16565b6014819055507f497e6c34cb46390a801e970e8c72fd87aa7fded87c9b77cdac588f235904a825816040518082815260200191505060405180910390a1612a238160135461255090919063ffffffff16565b60138190555042600981905550505b565b6000612a5c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c03565b905092915050565b600081836000018054905011612ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c746022913960400191505060405180910390fd5b826000018281548110612ad457fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612be65760006001820390506000600186600001805490500390506000866000018281548110612b5557fe5b9060005260206000200154905080876000018481548110612b7257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612baa57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612bec565b60009150505b92915050565b600081600001805490509050919050565b6000612c0f8383612ae7565b612c68578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c6d565b600090505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647341646d696e2063616e6e6f74205472616e73666572206f75742052657761726420546f6b656e73205965742141646d696e2063616e6e6f74207472616e73666572206f7574206465706f73697420746f6b656e732066726f6d2074686973207661756c7421a264697066735822122024a68daf2bd2f81c7b1561da64318316e3b1fcb02425d508abfb7e07f29512d064736f6c634300060b0033
Deployed Bytecode Sourcemap
10178:10116:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17760:1131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11258:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10649:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11922:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14795:671;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14087:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13489:590;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10742:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12178:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11759:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16371:68;;;:::i;:::-;;15520:843;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11865:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11977:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12097:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12020:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9133:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12060:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10961:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13048:433;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11306:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17016:736;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14196:591;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11704:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11343:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18992:617;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11611:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11130:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11380:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19708:583;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9752:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11810:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10862:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17760:1131;17867:24;17906:31;17952:35;18002:26;18063:8;18050:10;:21;18041:31;;;;;;18085:11;18099:24;18112:10;18099:8;:12;;:24;;;;:::i;:::-;18085:38;;18134:25;18176:6;18162:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18134:49;;18194:32;18240:6;18229:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18194:53;;18258:36;18308:6;18297:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18258:57;;18326:27;18367:6;18356:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18326:48;;18392:6;18401:10;18392:19;;18387:408;18417:8;18413:1;:12;18387:408;;;18456:14;18473:13;18484:1;18473:7;:10;;:13;;;;:::i;:::-;18456:30;;18501:14;18518:17;18524:10;18518:1;:5;;:17;;;;:::i;:::-;18501:34;;18572:6;18550:8;18559:9;18550:19;;;;;;;;;;;;;:28;;;;;;;;;;;18625:11;:19;18637:6;18625:19;;;;;;;;;;;;;;;;18593:18;18612:9;18593:29;;;;;;;;;;;;;:51;;;;;18695:15;:23;18711:6;18695:23;;;;;;;;;;;;;;;;18659:22;18682:9;18659:33;;;;;;;;;;;;;:59;;;;;18760:15;:23;18776:6;18760:23;;;;;;;;;;;;;;;;18733:13;18747:9;18733:24;;;;;;;;;;;;;:50;;;;;18387:408;;18431:8;18437:1;18431;:5;;:8;;;;:::i;:::-;18427:12;;18387:408;;;;18815:8;18825:18;18845:22;18869:13;18807:76;;;;;;;;;;;;;17760:1131;;;;;;;:::o;11258:39::-;;;;:::o;10649:86::-;;;;;;;;;;;;;:::o;11922:46::-;;;;;;;;;;;;;;;;;:::o;14795:671::-;14881:1;14862:16;:20;14854:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14964:16;14933:15;:27;14949:10;14933:27;;;;;;;;;;;;;;;;:47;;14925:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15024:25;15038:10;15024:13;:25::i;:::-;15076:26;;;;;;;;;;;15070:42;;;15113:10;15125:16;15070:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15062:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15216:49;15248:16;15216:15;:27;15232:10;15216:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;15186:15;:27;15202:10;15186:27;;;;;;;;;;;;;;;:79;;;;15290:33;15306:16;15290:11;;:15;;:33;;;;:::i;:::-;15276:11;:47;;;;15340:28;15357:10;15340:7;:16;;:28;;;;:::i;:::-;:64;;;;;15403:1;15372:15;:27;15388:10;15372:27;;;;;;;;;;;;;;;;:32;15340:64;15336:123;;;15421:26;15436:10;15421:7;:14;;:26;;;;:::i;:::-;;15336:123;14795:671;:::o;14087:99::-;14138:4;14162:16;:7;:14;:16::i;:::-;14155:23;;14087:99;:::o;13489:590::-;13560:4;13577:16;13596:23;13611:7;13596:14;:23::i;:::-;13577:42;;13630:24;13657;:22;:24::i;:::-;13630:51;;13714:19;13696:15;;:37;13692:107;;;13772:15;;13750:37;;13692:107;13809:20;13832:15;:24;13848:7;13832:24;;;;;;;;;;;;;;;;13809:47;;13890:1;13871:15;:20;13867:34;;;13900:1;13893:8;;;;;;;13867:34;13931:1;13916:11;;:16;13912:30;;;13941:1;13934:8;;;;;;;13912:30;13955:12;13970:57;14015:11;;13970:40;13990:19;13970:15;:19;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;13955:72;;14047:24;14063:7;14047:11;:15;;:24;;;;:::i;:::-;14040:31;;;;;;13489:590;;;;:::o;10742:85::-;;;;;;;;;;;;;:::o;12178:245::-;9563:5;;;;;;;;;;;9549:19;;:10;:19;;;9541:28;;;;;;12261:25:::1;;;;;;;;;;;12255:45;;;12301:10;12321:4;12328:6;12255:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12247:112;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12388:27;12408:6;12388:15;;:19;;:27;;;;:::i;:::-;12370:15;:45;;;;12178:245:::0;:::o;11759:44::-;;;;;;;;;;;;;;;;;:::o;16371:68::-;16406:25;16420:10;16406:13;:25::i;:::-;16371:68::o;15520:843::-;15615:1;15596:16;:20;15588:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15698:16;15667:15;:27;15683:10;15667:27;;;;;;;;;;;;;;;;:47;;15659:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15833:16;:14;:16::i;:::-;15890:3;15860:15;:27;15876:10;15860:27;;;;;;;;;;;;;;;:33;;;;15932:14;;15904:13;:25;15918:10;15904:25;;;;;;;;;;;;;;;:42;;;;15973:26;;;;;;;;;;;15967:42;;;16010:10;16022:16;15967:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15959:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16113:49;16145:16;16113:15;:27;16129:10;16113:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;16083:15;:27;16099:10;16083:27;;;;;;;;;;;;;;;:79;;;;16187:33;16203:16;16187:11;;:15;;:33;;;;:::i;:::-;16173:11;:47;;;;16237:28;16254:10;16237:7;:16;;:28;;;;:::i;:::-;:64;;;;;16300:1;16269:15;:27;16285:10;16269:27;;;;;;;;;;;;;;;;:32;16237:64;16233:123;;;16318:26;16333:10;16318:7;:14;;:26;;;;:::i;:::-;;16233:123;15520:843;:::o;11865:50::-;;;;;;;;;;;;;;;;;:::o;11977:36::-;;;;:::o;12097:27::-;;;;:::o;12020:31::-;;;;:::o;9133:20::-;;;;;;;;;;;;;:::o;12060:30::-;;;;:::o;10961:39::-;;;;:::o;13048:433::-;13110:4;13132:25;13149:7;13132;:16;;:25;;;;:::i;:::-;13127:40;;13166:1;13159:8;;;;13127:40;13210:1;13182:15;:24;13198:7;13182:24;;;;;;;;;;;;;;;;:29;13178:43;;;13220:1;13213:8;;;;13178:43;13234:17;13254:42;13273:13;:22;13287:7;13273:22;;;;;;;;;;;;;;;;13254:14;;:18;;:42;;;;:::i;:::-;13234:62;;13309:20;13332:15;:24;13348:7;13332:24;;;;;;;;;;;;;;;;13309:47;;13369:16;13388:54;13426:15;;13388:33;13408:12;13388:15;:19;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;13369:73;;13462:11;13455:18;;;;;13048:433;;;;:::o;11306:30::-;;;;:::o;17016:736::-;17071:4;17088:13;17112:9;17124:3;17112:15;;17138:20;17161:40;17184:16;;17161:18;;:22;;:40;;;;:::i;:::-;17138:63;;17223:15;17216:4;:22;17212:77;;;17262:15;17255:22;;17212:77;17323:4;17303:16;;:24;17299:139;;17355:1;17344:12;;17299:139;;;17400:26;17409:16;;17400:4;:8;;:26;;;;:::i;:::-;17389:37;;17299:139;17450:20;17473:238;17705:5;17473:189;17645:16;;17473:129;17593:8;17473:77;17530:19;;17473:14;;:56;;:77;;;;:::i;:::-;:119;;:129;;;;:::i;:::-;:171;;:189;;;;:::i;:::-;:231;;:238;;;;:::i;:::-;17450:261;;17729:15;17722:22;;;;;;17016:736;:::o;14196:591::-;14279:1;14261:15;:19;14253:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14321:25;14335:10;14321:13;:25::i;:::-;14373:26;;;;;;;;;;;14367:46;;;14414:10;14434:4;14441:15;14367:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14359:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14533:48;14565:15;14533;:27;14549:10;14533:27;;;;;;;;;;;;;;;;:31;;:48;;;;:::i;:::-;14503:15;:27;14519:10;14503:27;;;;;;;;;;;;;;;:78;;;;14606:32;14622:15;14606:11;;:15;;:32;;;;:::i;:::-;14592:11;:46;;;;14656:28;14673:10;14656:7;:16;;:28;;;;:::i;:::-;14651:129;;14701:23;14713:10;14701:7;:11;;:23;;;;:::i;:::-;;14765:3;14739:11;:23;14751:10;14739:23;;;;;;;;;;;;;;;:29;;;;14651:129;14196:591;:::o;11704:48::-;;;;;;;;;;;;;;;;;:::o;11343:30::-;;;;:::o;18992:617::-;9563:5;;;;;;;;;;;9549:19;;:10;:19;;;9541:28;;;;;;19280:26:::1;;;;;;;;;;;19266:40;;:10;:40;;;;19258:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19402:25;;;;;;;;;;;19388:39;;:10;:39;;;;19387:71;;;;19439:18;;19433:3;:24;19387:71;19379:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19532:10;19526:26;;;19553:3;19558:7;19526:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;19518:83;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18992:617:::0;;;:::o;11611:35::-;;;;:::o;11130:41::-;;;;:::o;11380:28::-;;;;:::o;19708:583::-;9563:5;;;;;;;;;;;9549:19;;:10;:19;;;9541:28;;;;;;19999:26:::1;;;;;;;;;;;19985:40;;:10;:40;;;;19977:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20121:25;;;;;;;;;;;20107:39;;:10;:39;;;;20106:71;;;;20158:18;;20152:3;:24;20106:71;20098:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20249:10;20239:30;;;20270:3;20275:7;20239:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19708:583:::0;;;:::o;9752:178::-;9563:5;;;;;;;;;;;9549:19;;:10;:19;;;9541:28;;;;;;9849:1:::1;9829:22;;:8;:22;;;;9821:31;;;::::0;::::1;;9892:8;9864:37;;9885:5;::::0;::::1;;;;;;;;;9864:37;;;;;;;;;;;;9916:8;9908:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;9752:178:::0;:::o;11810:48::-;;;;;;;;;;;;;;;;;:::o;10862:36::-;;;;:::o;806:133::-;864:7;880:9;896:1;892;:5;880:17;;916:1;911;:6;;904:14;;;;932:1;925:8;;;806:133;;;;:::o;687:113::-;745:7;773:1;768;:6;;761:14;;;;793:1;789;:5;782:12;;687:113;;;;:::o;7153:149::-;7227:7;7270:22;7274:3;:10;;7286:5;7270:3;:22::i;:::-;7262:31;;7247:47;;7153:149;;;;:::o;12433:607::-;12492:16;:14;:16::i;:::-;12519;12538:23;12553:7;12538:14;:23::i;:::-;12519:42;;12590:1;12576:11;:15;12572:370;;;12622:25;;;;;;;;;;;12616:41;;;12658:7;12667:11;12616:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12608:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12754:43;12785:11;12754:17;:26;12772:7;12754:26;;;;;;;;;;;;;;;;:30;;:43;;;;:::i;:::-;12725:17;:26;12743:7;12725:26;;;;;;;;;;;;;;;:72;;;;12834:36;12858:11;12834:19;;:23;;:36;;;;:::i;:::-;12812:19;:58;;;;12890:40;12909:7;12918:11;12890:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;12572:370;12979:3;12952:15;:24;12968:7;12952:24;;;;;;;;;;;;;;;:30;;;;13018:14;;12993:13;:22;13007:7;12993:22;;;;;;;;;;;;;;;:39;;;;12433:607;;:::o;6448:158::-;6528:4;6552:46;6562:3;:10;;6590:5;6582:14;;6574:23;;6552:9;:46::i;:::-;6545:53;;6448:158;;;;:::o;6213:149::-;6286:4;6310:44;6318:3;:10;;6346:5;6338:14;;6330:23;;6310:7;:44::i;:::-;6303:51;;6213:149;;;;:::o;6692:117::-;6755:7;6782:19;6790:3;:10;;6782:7;:19::i;:::-;6775:26;;6692:117;;;:::o;258:147::-;316:7;332:9;348:1;344;:5;332:17;;368:1;363;:6;:20;;;;382:1;377;373;:5;;;;;;:10;363:20;356:28;;;;398:1;391:8;;;258:147;;;;:::o;411:270::-;469:7;560:9;576:1;572;:5;;;;;;560:17;;674:1;667:8;;;411:270;;;;:::o;16447:561::-;16492:11;16506:24;:22;:24::i;:::-;16492:38;;16661:6;16643:15;;:24;16639:81;;;16693:15;;16684:24;;16639:81;16744:1;16734:6;:11;:31;;;;16764:1;16749:11;;:16;16734:31;16730:44;;;16767:7;;;16730:44;16803:64;16822:44;16854:11;;16822:27;16833:15;;16822:6;:10;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16803:14;;:18;;:64;;;;:::i;:::-;16786:14;:81;;;;16883:24;16900:6;16883:24;;;;;;;;;;;;;;;;;;16938:27;16958:6;16938:15;;:19;;:27;;;;:::i;:::-;16920:15;:45;;;;16995:3;16976:16;:22;;;;16447:561;;:::o;5894:143::-;5964:4;5988:41;5993:3;:10;;6021:5;6013:14;;6005:23;;5988:4;:41::i;:::-;5981:48;;5894:143;;;;:::o;5436:204::-;5503:7;5552:5;5531:3;:11;;:18;;;;:26;5523:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5614:3;:11;;5626:5;5614:18;;;;;;;;;;;;;;;;5607:25;;5436:204;;;;:::o;4768:129::-;4841:4;4888:1;4865:3;:12;;:19;4878:5;4865:19;;;;;;;;;;;;:24;;4858:31;;4768:129;;;;:::o;3138:1544::-;3204:4;3322:18;3343:3;:12;;:19;3356:5;3343:19;;;;;;;;;;;;3322:40;;3393:1;3379:10;:15;3375:1300;;3741:21;3778:1;3765:10;:14;3741:38;;3794:17;3835:1;3814:3;:11;;:18;;;;:22;3794:42;;4081:17;4101:3;:11;;4113:9;4101:22;;;;;;;;;;;;;;;;4081:42;;4247:9;4218:3;:11;;4230:13;4218:26;;;;;;;;;;;;;;;:38;;;;4366:1;4350:13;:17;4324:3;:12;;:23;4337:9;4324:23;;;;;;;;;;;:43;;;;4476:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;4571:3;:12;;:19;4584:5;4571:19;;;;;;;;;;;4564:26;;;4614:4;4607:11;;;;;;;;3375:1300;4658:5;4651:12;;;3138:1544;;;;;:::o;4983:109::-;5039:7;5066:3;:11;;:18;;;;5059:25;;4983:109;;;:::o;2548:414::-;2611:4;2633:21;2643:3;2648:5;2633:9;:21::i;:::-;2628:327;;2671:3;:11;;2688:5;2671:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2854:3;:11;;:18;;;;2832:3;:12;;:19;2845:5;2832:19;;;;;;;;;;;:40;;;;2894:4;2887:11;;;;2628:327;2938:5;2931:12;;2548:414;;;;;:::o
Swarm Source
ipfs://24a68daf2bd2f81c7b1561da64318316e3b1fcb02425d508abfb7e07f29512d0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 33 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.