More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 8,051 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Send Ownership A... | 23274861 | 165 days ago | IN | 0 ETH | 0.00014241 | ||||
| Send Ownership A... | 19919093 | 634 days ago | IN | 0 ETH | 0.00698494 | ||||
| Send Ownership A... | 16044382 | 1178 days ago | IN | 0 ETH | 0.00157801 | ||||
| Send Ownership A... | 15863047 | 1203 days ago | IN | 0 ETH | 0.00092803 | ||||
| Send Ownership A... | 15670079 | 1230 days ago | IN | 0 ETH | 0.00169033 | ||||
| Send Ownership A... | 15579472 | 1242 days ago | IN | 0 ETH | 0.00057906 | ||||
| Send Ownership A... | 15001017 | 1334 days ago | IN | 0 ETH | 0.00153301 | ||||
| Send Ownership A... | 14664455 | 1389 days ago | IN | 0 ETH | 0.0038126 | ||||
| Send Ownership A... | 14624395 | 1396 days ago | IN | 0 ETH | 0.00745942 | ||||
| Send Ownership A... | 13998577 | 1493 days ago | IN | 0 ETH | 0.0208182 | ||||
| Send Ownership A... | 13972205 | 1497 days ago | IN | 0 ETH | 0.0167042 | ||||
| Send Ownership A... | 13942602 | 1502 days ago | IN | 0 ETH | 0.0100688 | ||||
| Send Ownership A... | 13931113 | 1503 days ago | IN | 0 ETH | 0.02204422 | ||||
| Send Ownership A... | 13804650 | 1523 days ago | IN | 0 ETH | 0.00903342 | ||||
| Send Ownership A... | 13787447 | 1526 days ago | IN | 0 ETH | 0.00530225 | ||||
| Send Ownership A... | 13668822 | 1544 days ago | IN | 0 ETH | 0.01473252 | ||||
| Send Ownership A... | 13505116 | 1570 days ago | IN | 0 ETH | 0.01367828 | ||||
| Send Ownership A... | 13480478 | 1574 days ago | IN | 0 ETH | 0.00742337 | ||||
| Send Ownership A... | 13429879 | 1582 days ago | IN | 0 ETH | 0.00987395 | ||||
| Send Ownership A... | 13282640 | 1605 days ago | IN | 0 ETH | 0.00561491 | ||||
| Send Ownership A... | 13209401 | 1616 days ago | IN | 0 ETH | 0.00428683 | ||||
| Send Ownership A... | 13202406 | 1617 days ago | IN | 0 ETH | 0.00716229 | ||||
| Transfer | 13202310 | 1617 days ago | IN | 0.0875636 ETH | 0.00227164 | ||||
| Send Ownership A... | 13180204 | 1621 days ago | IN | 0 ETH | 0.02055359 | ||||
| Send Ownership A... | 13038358 | 1643 days ago | IN | 0 ETH | 0.00721514 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PoolOwners
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-04-05
*/
/**
* @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, "Sender not authorised.");
_;
}
/**
* @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;
}
}
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @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;
}
}
/**
@title ItMap, a solidity iterable map
@dev Credit to: https://gist.github.com/ethers/7e6d443818cbc9ad2c38efa7c0f363d1
*/
library itmap {
struct entry {
// Equal to the index of the key of this item in keys, plus 1.
uint keyIndex;
uint value;
}
struct itmap {
mapping(uint => entry) data;
uint[] keys;
}
function insert(itmap storage self, uint key, uint value) internal returns (bool replaced) {
entry storage e = self.data[key];
e.value = value;
if (e.keyIndex > 0) {
return true;
} else {
e.keyIndex = ++self.keys.length;
self.keys[e.keyIndex - 1] = key;
return false;
}
}
function remove(itmap storage self, uint key) internal returns (bool success) {
entry storage e = self.data[key];
if (e.keyIndex == 0) {
return false;
}
if (e.keyIndex < self.keys.length) {
// Move an existing element into the vacated key slot.
self.data[self.keys[self.keys.length - 1]].keyIndex = e.keyIndex;
self.keys[e.keyIndex - 1] = self.keys[self.keys.length - 1];
}
self.keys.length -= 1;
delete self.data[key];
return true;
}
function contains(itmap storage self, uint key) internal constant returns (bool exists) {
return self.data[key].keyIndex > 0;
}
function size(itmap storage self) internal constant returns (uint) {
return self.keys.length;
}
function get(itmap storage self, uint key) internal constant returns (uint) {
return self.data[key].value;
}
function getKey(itmap storage self, uint idx) internal constant returns (uint) {
return self.keys[idx];
}
}
/**
@title OwnersReceiver
@dev PoolOwners supporting receiving contract
*/
contract OwnersReceiver {
function onOwnershipTransfer(address _sender, uint _value, bytes _data) public;
function onOwnershipStake(address _sender, uint _value, bytes _data) public;
function onOwnershipStakeRemoval(address _sender, uint _value, bytes _data) public;
}
/**
@title PoolOwners
@dev ERC20 token distribution to holders based on share ownership
*/
contract PoolOwners is Ownable {
using SafeMath for uint256;
using itmap for itmap.itmap;
itmap.itmap private ownerMap;
mapping(address => mapping(address => uint256)) public allowance;
mapping(address => mapping(address => uint256)) public stakes;
mapping(address => uint256) public stakeTotals;
mapping(address => bool) public tokenWhitelist;
mapping(address => bool) public whitelist;
mapping(address => uint256) public distributionMinimum;
uint256 public totalContributed = 0;
uint256 public precisionMinimum = 0.04 ether;
uint256 private valuation = 4000 ether;
uint256 private hardCap = 1000 ether;
uint256 private distribution = 1;
bool public distributionActive = false;
bool public locked = false;
bool private contributionStarted = false;
address public wallet;
address private dToken = address(0);
uint public constant totalSupply = 4000 ether;
string public constant name = "LinkPool Owners";
uint8 public constant decimals = 18;
string public constant symbol = "LP";
event Contribution(address indexed sender, uint256 share, uint256 amount);
event TokenDistributionActive(address indexed token, uint256 amount, uint256 amountOfOwners);
event TokenWithdrawal(address indexed token, address indexed owner, uint256 amount);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner, uint256 amount);
event TokenDistributionComplete(address indexed token, uint amount, uint256 amountOfOwners);
event OwnershipStaked(address indexed owner, address indexed receiver, uint256 amount);
event OwnershipStakeRemoved(address indexed owner, address indexed receiver, uint256 amount);
modifier onlyPoolOwner() {
require(ownerMap.get(uint(msg.sender)) != 0, "You are not authorised to call this function");
_;
}
modifier withinPrecision(uint256 _amount) {
require(_amount > 0, "Cannot use zero");
require(_amount % precisionMinimum == 0, "Your amount isn't divisible by the minimum precision amount");
_;
}
/**
@dev Constructor set set the wallet initally
@param _wallet Address of the ETH wallet
*/
constructor(address _wallet) public {
require(_wallet != address(0), "The ETH wallet address needs to be set");
wallet = _wallet;
tokenWhitelist[address(0)] = true; // 0x0 treated as ETH
}
/**
@dev Fallback function, redirects to contribution
@dev Transfers tokens to the wallet address
*/
function() public payable {
if (!locked) {
require(contributionStarted, "Contribution is not active");
require(whitelist[msg.sender], "You are not whitelisted");
contribute(msg.sender, msg.value);
wallet.transfer(msg.value);
}
}
/**
@dev Manually set a contribution, used by owners to increase owners amounts
@param _sender The address of the sender to set the contribution for you
@param _value The amount that the owner has sent
*/
function addContribution(address _sender, uint256 _value) public onlyOwner() { contribute(_sender, _value); }
/**
@dev Registers a new contribution, sets their share
@param _sender The address of the wallet contributing
@param _value The amount that the owner has sent
*/
function contribute(address _sender, uint256 _value) private withinPrecision(_value) {
require(_is128Bit(_value), "Contribution amount isn't 128bit or smaller");
require(!locked, "Crowdsale period over, contribution is locked");
require(!distributionActive, "Cannot contribute when distribution is active");
require(_value >= precisionMinimum, "Amount needs to be above the minimum contribution");
require(hardCap >= _value, "Your contribution is greater than the hard cap");
require(hardCap >= totalContributed.add(_value), "Your contribution would cause the total to exceed the hardcap");
totalContributed = totalContributed.add(_value);
uint256 share = percent(_value, valuation, 5);
uint owner = ownerMap.get(uint(_sender));
if (owner != 0) { // Existing owner
share += owner >> 128;
uint value = (owner << 128 >> 128).add(_value);
require(ownerMap.insert(uint(_sender), share << 128 | value), "Sender does not exist in the map");
} else { // New owner
require(!ownerMap.insert(uint(_sender), share << 128 | _value), "Map replacement detected");
}
emit Contribution(_sender, share, _value);
}
/**
@dev Whitelist a wallet address
@param _owner Wallet of the owner
*/
function whitelistWallet(address _owner) external onlyOwner() {
require(!locked, "Can't whitelist when the contract is locked");
require(_owner != address(0), "Blackhole address");
whitelist[_owner] = true;
}
/**
@dev Start the distribution phase
*/
function startContribution() external onlyOwner() {
require(!contributionStarted, "Contribution has started");
contributionStarted = true;
}
/**
@dev Manually set a share directly, used to set the LinkPool members as owners
@param _owner Wallet address of the owner
@param _value The equivalent contribution value
*/
function setOwnerShare(address _owner, uint256 _value) public onlyOwner() withinPrecision(_value) {
require(!locked, "Can't manually set shares, it's locked");
require(!distributionActive, "Cannot set owners share when distribution is active");
require(_is128Bit(_value), "Contribution value isn't 128bit or smaller");
uint owner = ownerMap.get(uint(_owner));
uint share;
if (owner == 0) {
share = percent(_value, valuation, 5);
require(!ownerMap.insert(uint(_owner), share << 128 | _value), "Map replacement detected");
} else {
share = (owner >> 128).add(percent(_value, valuation, 5));
uint value = (owner << 128 >> 128).add(_value);
require(ownerMap.insert(uint(_owner), share << 128 | value), "Sender does not exist in the map");
}
}
/**
@dev Transfer part or all of your ownership to another address
@param _receiver The address that you're sending to
@param _amount The amount of ownership to send, for your balance refer to `ownerShareTokens`
*/
function sendOwnership(address _receiver, uint256 _amount) public onlyPoolOwner() {
_sendOwnership(msg.sender, _receiver, _amount);
}
/**
@dev Transfer part or all of your ownership to another address and call the receiving contract
@param _receiver The address that you're sending to
@param _amount The amount of ownership to send, for your balance refer to `ownerShareTokens`
*/
function sendOwnershipAndCall(address _receiver, uint256 _amount, bytes _data) public onlyPoolOwner() {
_sendOwnership(msg.sender, _receiver, _amount);
if (_isContract(_receiver)) {
OwnersReceiver(_receiver).onOwnershipTransfer(msg.sender, _amount, _data);
}
}
/**
@dev Transfer part or all of your ownership to another address on behalf of an owner
@dev Same principle as approval in ERC20, to be used mostly by external contracts, eg DEX's
@param _owner The address of the owner who's having tokens sent on behalf of
@param _receiver The address that you're sending to
@param _amount The amount of ownership to send, for your balance refer to `ownerShareTokens`
*/
function sendOwnershipFrom(address _owner, address _receiver, uint256 _amount) public {
require(allowance[_owner][msg.sender] >= _amount, "Sender is not approved to send ownership of that amount");
allowance[_owner][msg.sender] = allowance[_owner][msg.sender].sub(_amount);
if (allowance[_owner][msg.sender] == 0) {
delete allowance[_owner][msg.sender];
}
_sendOwnership(_owner, _receiver, _amount);
}
/**
@dev Increase the allowance of a sender
@param _sender The address of the sender on behalf of the owner
@param _amount The amount to increase approval by
*/
function increaseAllowance(address _sender, uint256 _amount) public withinPrecision(_amount) {
uint o = ownerMap.get(uint(msg.sender));
require(o << 128 >> 128 >= _amount, "The amount to increase allowance by is higher than your balance");
allowance[msg.sender][_sender] = allowance[msg.sender][_sender].add(_amount);
}
/**
@dev Decrease the allowance of a sender
@param _sender The address of the sender on behalf of the owner
@param _amount The amount to decrease approval by
*/
function decreaseAllowance(address _sender, uint256 _amount) public withinPrecision(_amount) {
require(allowance[msg.sender][_sender] >= _amount, "The amount to decrease allowance by is higher than the current allowance");
allowance[msg.sender][_sender] = allowance[msg.sender][_sender].sub(_amount);
if (allowance[msg.sender][_sender] == 0) {
delete allowance[msg.sender][_sender];
}
}
/**
@dev Stakes ownership with a contract, locking it from being transferred
@dev Calls the `onOwnershipStake` implementation on the receiver
@param _receiver The contract address to receive the stake
@param _amount The amount to be staked
@param _data Subsequent data to be sent with the stake
*/
function stakeOwnership(address _receiver, uint256 _amount, bytes _data) public withinPrecision(_amount) {
uint o = ownerMap.get(uint(msg.sender));
require((o << 128 >> 128).sub(stakeTotals[msg.sender]) >= _amount, "The amount to be staked is higher than your balance");
stakeTotals[msg.sender] = stakeTotals[msg.sender].add(_amount);
stakes[msg.sender][_receiver] = stakes[msg.sender][_receiver].add(_amount);
OwnersReceiver(_receiver).onOwnershipStake(msg.sender, _amount, _data);
emit OwnershipStaked(msg.sender, _receiver, _amount);
}
/**
@dev Removes an ownership stake
@dev Calls the `onOwnershipStakeRemoval` implementation on the receiver
@param _receiver The contract address to remove the stake
@param _amount The amount of the stake to be removed
@param _data Subsequent data to be sent with the stake
*/
function removeOwnershipStake(address _receiver, uint256 _amount, bytes _data) public withinPrecision(_amount) {
require(stakeTotals[msg.sender] >= _amount, "The stake amount to remove is higher than what's staked");
require(stakes[msg.sender][_receiver] >= _amount, "The stake amount to remove is greater than what's staked with the receiver");
stakeTotals[msg.sender] = stakeTotals[msg.sender].sub(_amount);
stakes[msg.sender][_receiver] = stakes[msg.sender][_receiver].sub(_amount);
if (stakes[msg.sender][_receiver] == 0) {
delete stakes[msg.sender][_receiver];
}
if (stakeTotals[msg.sender] == 0) {
delete stakeTotals[msg.sender];
}
OwnersReceiver(_receiver).onOwnershipStakeRemoval(msg.sender, _amount, _data);
emit OwnershipStakeRemoved(msg.sender, _receiver, _amount);
}
/**
@dev Lock the contribution/shares methods
*/
function lockShares() public onlyOwner() {
require(!locked, "Shares already locked");
locked = true;
}
/**
@dev Start the distribution phase in the contract so owners can claim their tokens
@param _token The token address to start the distribution of
*/
function distributeTokens(address _token) public onlyPoolOwner() {
require(tokenWhitelist[_token], "Token is not whitelisted to be distributed");
require(!distributionActive, "Distribution is already active");
distributionActive = true;
uint256 currentBalance;
if (_token == address(0)) {
currentBalance = address(this).balance;
} else {
currentBalance = ERC20(_token).balanceOf(this);
}
if (!_is128Bit(currentBalance)) {
currentBalance = 1 << 128;
}
require(currentBalance > distributionMinimum[_token], "Amount in the contract isn't above the minimum distribution limit");
distribution = currentBalance << 128;
dToken = _token;
emit TokenDistributionActive(_token, currentBalance, ownerMap.size());
}
/**
@dev Batch claiming of tokens for owners
@param _count The amount of owners to claim tokens for
*/
function batchClaim(uint256 _count) public onlyPoolOwner() {
require(distributionActive, "Distribution isn't active");
uint claimed = distribution << 128 >> 128;
uint to = _count.add(claimed);
distribution = distribution >> 128 << 128 | to;
require(_count.add(claimed) <= ownerMap.size(), "To value is greater than the amount of owners");
if (to == ownerMap.size()) {
distributionActive = false;
emit TokenDistributionComplete(dToken, distribution >> 128, ownerMap.size());
}
for (uint256 i = claimed; i < to; i++) {
_claimTokens(i);
}
}
/**
@dev Whitelist a token so it can be distributed
@dev Token whitelist is due to the potential of minting tokens and constantly lock this contract in distribution
*/
function whitelistToken(address _token, uint256 _minimum) public onlyOwner() {
require(!tokenWhitelist[_token], "Token is already whitelisted");
tokenWhitelist[_token] = true;
distributionMinimum[_token] = _minimum;
}
/**
@dev Set the minimum amount to be of transfered in this contract to start distribution
@param _minimum The minimum amount
*/
function setDistributionMinimum(address _token, uint256 _minimum) public onlyOwner() {
distributionMinimum[_token] = _minimum;
}
/**
@dev ERC20 implementation of balances to allow for viewing in supported wallets
@param _owner The address of the owner
*/
function balanceOf(address _owner) public view returns (uint) {
return ownerMap.get(uint(_owner)) << 128 >> 128;
}
/**
@dev Get the amount of unclaimed owners in a distribution cycle
*/
function getClaimedOwners() public view returns (uint) {
return distribution << 128 >> 128;
}
/**
@dev Return an owners percentage
@param _owner The address of the owner
*/
function getOwnerPercentage(address _owner) public view returns (uint) {
return ownerMap.get(uint(_owner)) >> 128;
}
/**
@dev Return an owners share token amount
@param _owner The address of the owner
*/
function getOwnerTokens(address _owner) public view returns (uint) {
return ownerMap.get(uint(_owner)) << 128 >> 128;
}
/**
@dev Returns the current amount of active owners, ie share above 0
*/
function getCurrentOwners() public view returns (uint) {
return ownerMap.size();
}
/**
@dev Returns owner address based on the key
@param _i The index of the owner in the map
*/
function getOwnerAddress(uint _i) public view returns (address) {
require(_i < ownerMap.size(), "Index is greater than the map size");
return address(ownerMap.getKey(_i));
}
/**
@dev Returns the allowance amount for a sender address
@param _owner The address of the owner
@param _sender The address of the sender on an owners behalf
*/
function getAllowance(address _owner, address _sender) public view returns (uint256) {
return allowance[_owner][_sender];
}
/**
@dev Credit to Rob Hitchens: https://stackoverflow.com/a/42739843
*/
function percent(uint numerator, uint denominator, uint precision) private pure returns (uint quotient) {
uint _numerator = numerator * 10 ** (precision+1);
uint _quotient = ((_numerator / denominator) + 5) / 10;
return ( _quotient);
}
// Private Methods
/**
@dev Claim the tokens for the next owner in the map
*/
function _claimTokens(uint _i) private {
address owner = address(ownerMap.getKey(_i));
uint o = ownerMap.get(uint(owner));
uint256 tokenAmount = (distribution >> 128).mul(o >> 128).div(100000);
if (dToken == address(0) && !_isContract(owner)) {
owner.transfer(tokenAmount);
} else {
require(ERC20(dToken).transfer(owner, tokenAmount), "ERC20 transfer failed");
}
}
/**
@dev Transfers tokens to a different address
@dev Shared by all transfer implementations
*/
function _sendOwnership(address _owner, address _receiver, uint256 _amount) private withinPrecision(_amount) {
uint o = ownerMap.get(uint(_owner));
uint r = ownerMap.get(uint(_receiver));
uint oTokens = o << 128 >> 128;
uint rTokens = r << 128 >> 128;
require(_is128Bit(_amount), "Amount isn't 128bit or smaller");
require(_owner != _receiver, "You can't send to yourself");
require(_receiver != address(0), "Ownership cannot be blackholed");
require(oTokens > 0, "You don't have any ownership");
require(oTokens.sub(stakeTotals[_owner]) >= _amount, "The amount to send exceeds the addresses balance");
require(!distributionActive, "Distribution cannot be active when sending ownership");
require(_amount % precisionMinimum == 0, "Your amount isn't divisible by the minimum precision amount");
oTokens = oTokens.sub(_amount);
if (oTokens == 0) {
require(ownerMap.remove(uint(_owner)), "Address doesn't exist in the map");
} else {
uint oPercentage = percent(oTokens, valuation, 5);
require(ownerMap.insert(uint(_owner), oPercentage << 128 | oTokens), "Sender does not exist in the map");
}
uint rTNew = rTokens.add(_amount);
uint rPercentage = percent(rTNew, valuation, 5);
if (rTokens == 0) {
require(!ownerMap.insert(uint(_receiver), rPercentage << 128 | rTNew), "Map replacement detected");
} else {
require(ownerMap.insert(uint(_receiver), rPercentage << 128 | rTNew), "Sender does not exist in the map");
}
emit OwnershipTransferred(_owner, _receiver, _amount);
}
/**
@dev Check whether an address given is a contract
*/
function _isContract(address _addr) private view returns (bool hasCode) {
uint length;
assembly { length := extcodesize(_addr) }
return length > 0;
}
/**
@dev Strict type check for data packing
@param _val The value for checking
*/
function _is128Bit(uint _val) private pure returns (bool) {
return _val < 1 << 128;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"totalContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_minimum","type":"uint256"}],"name":"setDistributionMinimum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_sender","type":"address"}],"name":"getAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getOwnerPercentage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakeTotals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"increaseAllowance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_value","type":"uint256"}],"name":"addContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_count","type":"uint256"}],"name":"batchClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentOwners","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"removeOwnershipStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"whitelistWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"stakeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"distributionActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"stakes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"distributeTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"sendOwnershipAndCall","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lockShares","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_minimum","type":"uint256"}],"name":"whitelistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"precisionMinimum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getOwnerTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_value","type":"uint256"}],"name":"setOwnerShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_i","type":"uint256"}],"name":"getOwnerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"}],"name":"sendOwnershipFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"}],"name":"sendOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"distributionMinimum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getClaimedOwners","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"share","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Contribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"amountOfOwners","type":"uint256"}],"name":"TokenDistributionActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"amountOfOwners","type":"uint256"}],"name":"TokenDistributionComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnershipStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnershipStakeRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040526000600955668e1bc9bf040000600a5568d8d726b7177a800000600b55683635c9adc5dea00000600c556001600d55600e805462ffffff19169055600f8054600160a060020a031916905534801561005b57600080fd5b50604051602080613b08833981016040525160008054600160a060020a03191633179055600160a060020a038116151561011c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f546865204554482077616c6c65742061646472657373206e6565647320746f2060448201527f6265207365740000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e8054600160a060020a03909216630100000002630100000060b860020a03199092169190911790556000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805460ff1916600117905561397e8061018a6000396000f3006080604052600436106101d45763ffffffff60e060020a600035041663023f4147811461030057806303101f461461032757806306fdde031461034b5780630af4187d146103d557806317126586146103fc57806318160ddd1461041d5780632f6a2b5214610432578063313ce56714610453578063395093511461047e57806339ecacac146104a2578063521eb273146104c657806355aea767146104f757806363e8dd961461050f57806370a082311461052457806373c3f59b14610545578063753d7563146105ae578063787c23e0146105e35780637b9af5f014610604578063897463aa1461066d5780638da5cb5b1461068257806395d89b411461069757806399fb15d2146106ac5780639b19251a146106c1578063a457c2d7146106e2578063a4e47b6614610706578063b1d17c981461072d578063b4abda8b1461074e578063b75c2068146107b7578063c4e16b7d146107cc578063cf309012146107f0578063d131af3014610805578063d63d4af014610524578063dcac652e1461081a578063dd5509581461083e578063dd62ed3e14610856578063de995b901461087d578063e2d0d519146108a7578063ec4690de146108cb578063f2fde38b146108ec578063fbbb75c51461090d575b600e54610100900460ff1615156102fe57600e5462010000900460ff161515610247576040805160e560020a62461bcd02815260206004820152601a60248201527f436f6e747269627574696f6e206973206e6f7420616374697665000000000000604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615156102b0576040805160e560020a62461bcd02815260206004820152601760248201527f596f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b6102ba3334610922565b600e54604051600160a060020a03630100000090920491909116903480156108fc02916000818181858888f193505050501580156102fc573d6000803e3d6000fd5b505b005b34801561030c57600080fd5b50610315610e8b565b60408051918252519081900360200190f35b34801561033357600080fd5b506102fe600160a060020a0360043516602435610e91565b34801561035757600080fd5b50610360610efd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039a578181015183820152602001610382565b50505050905090810190601f1680156103c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e157600080fd5b50610315600160a060020a0360043581169060243516610f34565b34801561040857600080fd5b50610315600160a060020a0360043516610f5f565b34801561042957600080fd5b50610315610f8a565b34801561043e57600080fd5b50610315600160a060020a0360043516610f97565b34801561045f57600080fd5b50610468610fa9565b6040805160ff9092168252519081900360200190f35b34801561048a57600080fd5b506102fe600160a060020a0360043516602435610fae565b3480156104ae57600080fd5b506102fe600160a060020a0360043516602435611158565b3480156104d257600080fd5b506104db6111b6565b60408051600160a060020a039092168252519081900360200190f35b34801561050357600080fd5b506102fe6004356111cc565b34801561051b57600080fd5b506103156113f8565b34801561053057600080fd5b50610315600160a060020a036004351661140a565b34801561055157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061143b9650505050505050565b3480156105ba57600080fd5b506105cf600160a060020a036004351661183b565b604080519115158252519081900360200190f35b3480156105ef57600080fd5b506102fe600160a060020a0360043516611850565b34801561061057600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119aa9650505050505050565b34801561067957600080fd5b506102fe611cbc565b34801561068e57600080fd5b506104db611d80565b3480156106a357600080fd5b50610360611d8f565b3480156106b857600080fd5b506105cf611dc6565b3480156106cd57600080fd5b506105cf600160a060020a0360043516611dcf565b3480156106ee57600080fd5b506102fe600160a060020a0360043516602435611de4565b34801561071257600080fd5b50610315600160a060020a0360043581169060243516611fe1565b34801561073957600080fd5b506102fe600160a060020a0360043516611ffe565b34801561075a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061235f9650505050505050565b3480156107c357600080fd5b506102fe6124cb565b3480156107d857600080fd5b506102fe600160a060020a036004351660243561258c565b3480156107fc57600080fd5b506105cf61267e565b34801561081157600080fd5b5061031561268c565b34801561082657600080fd5b506102fe600160a060020a0360043516602435612692565b34801561084a57600080fd5b506104db600435612a7e565b34801561086257600080fd5b50610315600160a060020a0360043581169060243516612b1d565b34801561088957600080fd5b506102fe600160a060020a0360043581169060243516604435612b3a565b3480156108b357600080fd5b506102fe600160a060020a0360043516602435612c6b565b3480156108d757600080fd5b50610315600160a060020a0360043516612cdf565b3480156108f857600080fd5b506102fe600160a060020a0360043516612cf1565b34801561091957600080fd5b50610315612dbe565b600080808381811161096c576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561097957fe5b06156109d1576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b6109da85612dcd565b1515610a56576040805160e560020a62461bcd02815260206004820152602b60248201527f436f6e747269627574696f6e20616d6f756e742069736e27742031323862697460448201527f206f7220736d616c6c6572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e54610100900460ff1615610adc576040805160e560020a62461bcd02815260206004820152602d60248201527f43726f776473616c6520706572696f64206f7665722c20636f6e74726962757460448201527f696f6e206973206c6f636b656400000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615610b5d576040805160e560020a62461bcd02815260206004820152602d60248201527f43616e6e6f7420636f6e74726962757465207768656e2064697374726962757460448201527f696f6e2069732061637469766500000000000000000000000000000000000000606482015290519081900360840190fd5b600a54851015610bdd576040805160e560020a62461bcd02815260206004820152603160248201527f416d6f756e74206e6565647320746f2062652061626f766520746865206d696e60448201527f696d756d20636f6e747269627574696f6e000000000000000000000000000000606482015290519081900360840190fd5b600c54851115610c5d576040805160e560020a62461bcd02815260206004820152602e60248201527f596f757220636f6e747269627574696f6e20697320677265617465722074686160448201527f6e20746865206861726420636170000000000000000000000000000000000000606482015290519081900360840190fd5b600954610c70908663ffffffff612dd616565b600c541015610cef576040805160e560020a62461bcd02815260206004820152603d60248201527f596f757220636f6e747269627574696f6e20776f756c6420636175736520746860448201527f6520746f74616c20746f20657863656564207468652068617264636170000000606482015290519081900360840190fd5b600954610d02908663ffffffff612dd616565b600955600b54610d159086906005612df0565b9350610d316001600160a060020a03881663ffffffff612e2516565b92508215610dc857608060020a8084049490940193610d5a90808502048663ffffffff612dd616565b9150610d7f6001600160a060020a038816608060020a8702851763ffffffff612e3b16565b1515610dc3576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b610e40565b610deb6001600160a060020a038816608060020a8702881763ffffffff612e3b16565b15610e40576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b60408051858152602081018790528151600160a060020a038916927f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a45040928290030190a2505050505050565b60095481565b600054600160a060020a03163314610ee1576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a03909116600090815260086020526040902055565b60408051808201909152600f81527f4c696e6b506f6f6c204f776e6572730000000000000000000000000000000000602082015281565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b60006080610f7d6001600160a060020a03851663ffffffff612e2516565b9060020a90049050919050565b68d8d726b7177a80000081565b60056020526000908152604090205481565b601281565b600081818111610ff6576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561100357fe5b061561105b576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b61106c60013363ffffffff612e2516565b9150608060020a808302048311156110f4576040805160e560020a62461bcd02815260206004820152603f60248201527f54686520616d6f756e7420746f20696e63726561736520616c6c6f77616e636560448201527f20627920697320686967686572207468616e20796f75722062616c616e636500606482015290519081900360840190fd5b336000908152600360209081526040808320600160a060020a0388168452909152902054611128908463ffffffff612dd616565b336000908152600360209081526040808320600160a060020a039890981683529690529490942093909355505050565b600054600160a060020a031633146111a8576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b6111b28282610922565b5050565b600e5463010000009004600160a060020a031681565b600080806111e160013363ffffffff612e2516565b1515611239576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b600e5460ff161515611295576040805160e560020a62461bcd02815260206004820152601960248201527f446973747269627574696f6e2069736e27742061637469766500000000000000604482015290519081900360640190fd5b600d54608060020a9081020492506112b3848463ffffffff612dd616565b600d8054608060020a90819004028217905591506112d16001612eaa565b6112e1858563ffffffff612dd616565b111561135d576040805160e560020a62461bcd02815260206004820152602d60248201527f546f2076616c75652069732067726561746572207468616e2074686520616d6f60448201527f756e74206f66206f776e65727300000000000000000000000000000000000000606482015290519081900360840190fd5b6113676001612eaa565b8214156113d657600e805460ff19169055600f54600d54600160a060020a03909116907f3f1b49349800340b97132392d0b7f9be99025a47d4b5025999cd26da9668125090608060020a90046113bd6001612eaa565b6040805192835260208301919091528051918290030190a25b50815b818110156113f2576113ea81612eb1565b6001016113d9565b50505050565b60006114046001612eaa565b90505b90565b60006080806114296001600160a060020a03861663ffffffff612e2516565b9060020a029060020a90049050919050565b8160008111611482576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561148f57fe5b06156114e7576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b33600090815260056020526040902054831115611574576040805160e560020a62461bcd02815260206004820152603760248201527f546865207374616b6520616d6f756e7420746f2072656d6f766520697320686960448201527f67686572207468616e20776861742773207374616b6564000000000000000000606482015290519081900360840190fd5b336000908152600460209081526040808320600160a060020a038816845290915290205483111561163b576040805160e560020a62461bcd02815260206004820152604a60248201527f546865207374616b6520616d6f756e7420746f2072656d6f766520697320677260448201527f6561746572207468616e20776861742773207374616b6564207769746820746860648201527f6520726563656976657200000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3360009081526005602052604090205461165b908463ffffffff61306c16565b3360009081526005602090815260408083209390935560048152828220600160a060020a038816835290522054611698908463ffffffff61306c16565b336000908152600460209081526040808320600160a060020a0389168452909152902081905515156116e957336000908152600460209081526040808320600160a060020a03881684529091528120555b33600090815260056020526040902054151561171057336000908152600560205260408120555b83600160a060020a031663eccce6bf3385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561178f578181015183820152602001611777565b50505050905090810190601f1680156117bc5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156117dd57600080fd5b505af11580156117f1573d6000803e3d6000fd5b5050604080518681529051600160a060020a03881693503392507fba46c565cf8a26bc619b7a8c3575352c7423eabd65d1d5d1a105df085f56698e9181900360200190a350505050565b60066020526000908152604090205460ff1681565b600054600160a060020a031633146118a0576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e54610100900460ff1615611926576040805160e560020a62461bcd02815260206004820152602b60248201527f43616e27742077686974656c697374207768656e2074686520636f6e7472616360448201527f74206973206c6f636b6564000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0381161515611986576040805160e560020a62461bcd02815260206004820152601160248201527f426c61636b686f6c652061646472657373000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b6000828181116119f2576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a54818115156119ff57fe5b0615611a57576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b611a6860013363ffffffff612e2516565b336000908152600560205260409020549092508490611a9690608060020a808602049063ffffffff61306c16565b1015611b12576040805160e560020a62461bcd02815260206004820152603360248201527f54686520616d6f756e7420746f206265207374616b656420697320686967686560448201527f72207468616e20796f75722062616c616e636500000000000000000000000000606482015290519081900360840190fd5b33600090815260056020526040902054611b32908563ffffffff612dd616565b3360009081526005602090815260408083209390935560048152828220600160a060020a038916835290522054611b6f908563ffffffff612dd616565b336000818152600460208181526040808420600160a060020a038c1680865290835281852096909655517f89c9798f000000000000000000000000000000000000000000000000000000008152918201848152602483018a90526060604484019081528951606485015289516389c9798f96958c958c95608490910192908601918190849084905b83811015611c0f578181015183820152602001611bf7565b50505050905090810190601f168015611c3c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611c5d57600080fd5b505af1158015611c71573d6000803e3d6000fd5b5050604080518781529051600160a060020a03891693503392507fe9fee739d972ccf68b1391121e1e10551ce21bb33bd0073a980c0e02f44c84a99181900360200190a35050505050565b600054600160a060020a03163314611d0c576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e5462010000900460ff1615611d6d576040805160e560020a62461bcd02815260206004820152601860248201527f436f6e747269627574696f6e2068617320737461727465640000000000000000604482015290519081900360640190fd5b600e805462ff0000191662010000179055565b600054600160a060020a031681565b60408051808201909152600281527f4c50000000000000000000000000000000000000000000000000000000000000602082015281565b600e5460ff1681565b60076020526000908152604090205460ff1681565b8060008111611e2b576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a5481811515611e3857fe5b0615611e90576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054821115611f57576040805160e560020a62461bcd02815260206004820152604860248201527f54686520616d6f756e7420746f20646563726561736520616c6c6f77616e636560448201527f20627920697320686967686572207468616e207468652063757272656e74206160648201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054611f8b908363ffffffff61306c16565b336000908152600360209081526040808320600160a060020a038816845290915290208190551515611fdc57336000908152600360209081526040808320600160a060020a03871684529091528120555b505050565b600460209081526000928352604080842090915290825290205481565b600061201160013363ffffffff612e2516565b1515612069576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b600160a060020a03821660009081526006602052604090205460ff161515612101576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e206973206e6f742077686974656c697374656420746f206265206460448201527f6973747269627574656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff161561215c576040805160e560020a62461bcd02815260206004820152601e60248201527f446973747269627574696f6e20697320616c7265616479206163746976650000604482015290519081900360640190fd5b600e805460ff19166001179055600160a060020a038216151561218157503031612211565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156121e257600080fd5b505af11580156121f6573d6000803e3d6000fd5b505050506040513d602081101561220c57600080fd5b505190505b61221a81612dcd565b15156122275750608060020a5b600160a060020a03821660009081526008602052604090205481116122e2576040805160e560020a62461bcd02815260206004820152604160248201527f416d6f756e7420696e2074686520636f6e74726163742069736e27742061626f60448201527f766520746865206d696e696d756d20646973747269627574696f6e206c696d6960648201527f7400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b608060020a8102600d55600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091557feede959c6858c7a658800c9574366c74769c18e3e3095c31d9516c31b894f743826123436001612eaa565b6040805192835260208301919091528051918290030190a25050565b61237060013363ffffffff612e2516565b15156123c8576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b6123d333848461307e565b6123dc836136ef565b15611fdc5782600160a060020a0316635b4cc3203384846040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612460578181015183820152602001612448565b50505050905090810190601f16801561248d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156124ae57600080fd5b505af11580156124c2573d6000803e3d6000fd5b50505050505050565b600054600160a060020a0316331461251b576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e54610100900460ff161561257b576040805160e560020a62461bcd02815260206004820152601560248201527f53686172657320616c7265616479206c6f636b65640000000000000000000000604482015290519081900360640190fd5b600e805461ff001916610100179055565b600054600160a060020a031633146125dc576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526006602052604090205460ff161561264d576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e20697320616c72656164792077686974656c697374656400000000604482015290519081900360640190fd5b600160a060020a039091166000908152600660209081526040808320805460ff191660011790556008909152902055565b600e54610100900460ff1681565b600a5481565b6000805481908190600160a060020a031633146126e7576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b836000811161272e576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561273b57fe5b0615612793576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b600e54610100900460ff1615612819576040805160e560020a62461bcd02815260206004820152602660248201527f43616e2774206d616e75616c6c7920736574207368617265732c20697427732060448201527f6c6f636b65640000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff161561289a576040805160e560020a62461bcd02815260206004820152603360248201527f43616e6e6f7420736574206f776e657273207368617265207768656e2064697360448201527f747269627574696f6e2069732061637469766500000000000000000000000000606482015290519081900360840190fd5b6128a385612dcd565b151561291f576040805160e560020a62461bcd02815260206004820152602a60248201527f436f6e747269627574696f6e2076616c75652069736e2774203132386269742060448201527f6f7220736d616c6c657200000000000000000000000000000000000000000000606482015290519081900360840190fd5b6129396001600160a060020a03881663ffffffff612e2516565b93508315156129cf5761295085600b546005612df0565b92506129756001600160a060020a038816608060020a8602881763ffffffff612e3b16565b156129ca576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b612a76565b6129f36129e086600b546005612df0565b608060020a86049063ffffffff612dd616565b9250612a0d608060020a808602048663ffffffff612dd616565b9150612a326001600160a060020a038816608060020a8602851763ffffffff612e3b16565b1515612a76576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b505050505050565b6000612a8a6001612eaa565b8210612b06576040805160e560020a62461bcd02815260206004820152602260248201527f496e6465782069732067726561746572207468616e20746865206d617020736960448201527f7a65000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612b1760018363ffffffff6136f716565b92915050565b600360209081526000928352604080842090915290825290205481565b600160a060020a0383166000908152600360209081526040808320338452909152902054811115612bdb576040805160e560020a62461bcd02815260206004820152603760248201527f53656e646572206973206e6f7420617070726f76656420746f2073656e64206f60448201527f776e657273686970206f66207468617420616d6f756e74000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600360209081526040808320338452909152902054612c0f908263ffffffff61306c16565b600160a060020a038416600090815260036020908152604080832033845290915290208190551515612c6057600160a060020a03831660009081526003602090815260408083203384529091528120555b611fdc83838361307e565b612c7c60013363ffffffff612e2516565b1515612cd4576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b6111b233838361307e565b60086020526000908152604090205481565b600054600160a060020a03163314612d41576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a0381161515612d5657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d54608060020a9081020490565b608060020a1190565b600082820183811015612de557fe5b8091505b5092915050565b600080600083600101600a0a86029150600a8583811515612e0d57fe5b04600501811515612e1a57fe5b049695505050505050565b6000908152602091909152604090206001015490565b6000828152602084905260408120600181018390558054821015612e625760019150612ea2565b8460010180546001019081612e779190613835565b808255600186018054869260001901908110612e8f57fe5b9060005260206000200181905550600091505b509392505050565b6001015490565b60008080612ec660018563ffffffff6136f716565b9250612ee26001600160a060020a03851663ffffffff612e2516565b600d54909250612f1890620186a090612f0c90608060020a9081900490860463ffffffff61371d16565b9063ffffffff61374116565b600f54909150600160a060020a0316158015612f3a5750612f38836136ef565b155b15612f7b57604051600160a060020a0384169082156108fc029083906000818181858888f19350505050158015612f75573d6000803e3d6000fd5b506113f2565b600f54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d602081101561301457600080fd5b505115156113f2576040805160e560020a62461bcd02815260206004820152601560248201527f4552433230207472616e73666572206661696c65640000000000000000000000604482015290519081900360640190fd5b60008282111561307857fe5b50900390565b6000808080808080878181116130cc576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a54818115156130d957fe5b0615613131576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b61314b6001600160a060020a038d1663ffffffff612e2516565b97506131676001600160a060020a038c1663ffffffff612e2516565b9650608060020a808902819004965080880204945061318589612dcd565b15156131db576040805160e560020a62461bcd02815260206004820152601e60248201527f416d6f756e742069736e277420313238626974206f7220736d616c6c65720000604482015290519081900360640190fd5b600160a060020a038b8116908b16141561323f576040805160e560020a62461bcd02815260206004820152601a60248201527f596f752063616e27742073656e6420746f20796f757273656c66000000000000604482015290519081900360640190fd5b600160a060020a038a16151561329f576040805160e560020a62461bcd02815260206004820152601e60248201527f4f776e6572736869702063616e6e6f7420626520626c61636b686f6c65640000604482015290519081900360640190fd5b600086116132f7576040805160e560020a62461bcd02815260206004820152601c60248201527f596f7520646f6e2774206861766520616e79206f776e65727368697000000000604482015290519081900360640190fd5b600160a060020a038b16600090815260056020526040902054899061332390889063ffffffff61306c16565b101561339f576040805160e560020a62461bcd02815260206004820152603060248201527f54686520616d6f756e7420746f2073656e64206578636565647320746865206160448201527f64647265737365732062616c616e636500000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615613420576040805160e560020a62461bcd02815260206004820152603460248201527f446973747269627574696f6e2063616e6e6f742062652061637469766520776860448201527f656e2073656e64696e67206f776e657273686970000000000000000000000000606482015290519081900360840190fd5b600a548981151561342d57fe5b0615613485576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b613495868a63ffffffff61306c16565b9550851515613513576134b86001600160a060020a038d1663ffffffff61375816565b151561350e576040805160e560020a62461bcd02815260206004820181905260248201527f4164647265737320646f65736e277420657869737420696e20746865206d6170604482015290519081900360640190fd5b61358a565b61352186600b546005612df0565b93506135466001600160a060020a038d16608060020a8702891763ffffffff612e3b16565b151561358a576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b61359a858a63ffffffff612dd616565b92506135aa83600b546005612df0565b9150841515613630576135d66001600160a060020a038c16608060020a8502861763ffffffff612e3b16565b1561362b576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b613697565b6136536001600160a060020a038c16608060020a8502861763ffffffff612e3b16565b1515613697576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b89600160a060020a03168b600160a060020a03167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b8b6040518082815260200191505060405180910390a35050505050505050505050565b6000903b1190565b6000826001018281548110151561370a57fe5b9060005260206000200154905092915050565b6000828202831580613739575082848281151561373657fe5b04145b1515612de557fe5b600080828481151561374f57fe5b04949350505050565b6000818152602083905260408120805415156137775760009150612de9565b6001840154815410156137ff5780546001850180548691600091600019810190811061379f57fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106137cf57fe5b90600052602060002001548460010160018360000154038154811015156137f257fe5b6000918252602090912001555b60018401805460001901906138149082613835565b50505060009081526020919091526040812081815560019081019190915590565b815481835581811115611fdc57600083815260209020611fdc91810190830161140791905b8082111561386e576000815560010161385a565b5090560043616e6e6f7420757365207a65726f00000000000000000000000000000000006865206d696e696d756d20707265636973696f6e20616d6f756e7400000000006869732066756e6374696f6e000000000000000000000000000000000000000053656e64657220646f6573206e6f7420657869737420696e20746865206d617053656e646572206e6f7420617574686f72697365642e00000000000000000000596f7520617265206e6f7420617574686f726973656420746f2063616c6c2074596f757220616d6f756e742069736e277420646976697369626c652062792074a165627a7a72305820474bfe4f43e5e04bbf7fcc9ac4f64ff705c9bf0b4db879f784b5e530317f06a10029000000000000000000000000e2d06414b011d6dfff2d7181feb37e68e8322d61
Deployed Bytecode
0x6080604052600436106101d45763ffffffff60e060020a600035041663023f4147811461030057806303101f461461032757806306fdde031461034b5780630af4187d146103d557806317126586146103fc57806318160ddd1461041d5780632f6a2b5214610432578063313ce56714610453578063395093511461047e57806339ecacac146104a2578063521eb273146104c657806355aea767146104f757806363e8dd961461050f57806370a082311461052457806373c3f59b14610545578063753d7563146105ae578063787c23e0146105e35780637b9af5f014610604578063897463aa1461066d5780638da5cb5b1461068257806395d89b411461069757806399fb15d2146106ac5780639b19251a146106c1578063a457c2d7146106e2578063a4e47b6614610706578063b1d17c981461072d578063b4abda8b1461074e578063b75c2068146107b7578063c4e16b7d146107cc578063cf309012146107f0578063d131af3014610805578063d63d4af014610524578063dcac652e1461081a578063dd5509581461083e578063dd62ed3e14610856578063de995b901461087d578063e2d0d519146108a7578063ec4690de146108cb578063f2fde38b146108ec578063fbbb75c51461090d575b600e54610100900460ff1615156102fe57600e5462010000900460ff161515610247576040805160e560020a62461bcd02815260206004820152601a60248201527f436f6e747269627574696f6e206973206e6f7420616374697665000000000000604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615156102b0576040805160e560020a62461bcd02815260206004820152601760248201527f596f7520617265206e6f742077686974656c6973746564000000000000000000604482015290519081900360640190fd5b6102ba3334610922565b600e54604051600160a060020a03630100000090920491909116903480156108fc02916000818181858888f193505050501580156102fc573d6000803e3d6000fd5b505b005b34801561030c57600080fd5b50610315610e8b565b60408051918252519081900360200190f35b34801561033357600080fd5b506102fe600160a060020a0360043516602435610e91565b34801561035757600080fd5b50610360610efd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039a578181015183820152602001610382565b50505050905090810190601f1680156103c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103e157600080fd5b50610315600160a060020a0360043581169060243516610f34565b34801561040857600080fd5b50610315600160a060020a0360043516610f5f565b34801561042957600080fd5b50610315610f8a565b34801561043e57600080fd5b50610315600160a060020a0360043516610f97565b34801561045f57600080fd5b50610468610fa9565b6040805160ff9092168252519081900360200190f35b34801561048a57600080fd5b506102fe600160a060020a0360043516602435610fae565b3480156104ae57600080fd5b506102fe600160a060020a0360043516602435611158565b3480156104d257600080fd5b506104db6111b6565b60408051600160a060020a039092168252519081900360200190f35b34801561050357600080fd5b506102fe6004356111cc565b34801561051b57600080fd5b506103156113f8565b34801561053057600080fd5b50610315600160a060020a036004351661140a565b34801561055157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061143b9650505050505050565b3480156105ba57600080fd5b506105cf600160a060020a036004351661183b565b604080519115158252519081900360200190f35b3480156105ef57600080fd5b506102fe600160a060020a0360043516611850565b34801561061057600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119aa9650505050505050565b34801561067957600080fd5b506102fe611cbc565b34801561068e57600080fd5b506104db611d80565b3480156106a357600080fd5b50610360611d8f565b3480156106b857600080fd5b506105cf611dc6565b3480156106cd57600080fd5b506105cf600160a060020a0360043516611dcf565b3480156106ee57600080fd5b506102fe600160a060020a0360043516602435611de4565b34801561071257600080fd5b50610315600160a060020a0360043581169060243516611fe1565b34801561073957600080fd5b506102fe600160a060020a0360043516611ffe565b34801561075a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102fe948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061235f9650505050505050565b3480156107c357600080fd5b506102fe6124cb565b3480156107d857600080fd5b506102fe600160a060020a036004351660243561258c565b3480156107fc57600080fd5b506105cf61267e565b34801561081157600080fd5b5061031561268c565b34801561082657600080fd5b506102fe600160a060020a0360043516602435612692565b34801561084a57600080fd5b506104db600435612a7e565b34801561086257600080fd5b50610315600160a060020a0360043581169060243516612b1d565b34801561088957600080fd5b506102fe600160a060020a0360043581169060243516604435612b3a565b3480156108b357600080fd5b506102fe600160a060020a0360043516602435612c6b565b3480156108d757600080fd5b50610315600160a060020a0360043516612cdf565b3480156108f857600080fd5b506102fe600160a060020a0360043516612cf1565b34801561091957600080fd5b50610315612dbe565b600080808381811161096c576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561097957fe5b06156109d1576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b6109da85612dcd565b1515610a56576040805160e560020a62461bcd02815260206004820152602b60248201527f436f6e747269627574696f6e20616d6f756e742069736e27742031323862697460448201527f206f7220736d616c6c6572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e54610100900460ff1615610adc576040805160e560020a62461bcd02815260206004820152602d60248201527f43726f776473616c6520706572696f64206f7665722c20636f6e74726962757460448201527f696f6e206973206c6f636b656400000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615610b5d576040805160e560020a62461bcd02815260206004820152602d60248201527f43616e6e6f7420636f6e74726962757465207768656e2064697374726962757460448201527f696f6e2069732061637469766500000000000000000000000000000000000000606482015290519081900360840190fd5b600a54851015610bdd576040805160e560020a62461bcd02815260206004820152603160248201527f416d6f756e74206e6565647320746f2062652061626f766520746865206d696e60448201527f696d756d20636f6e747269627574696f6e000000000000000000000000000000606482015290519081900360840190fd5b600c54851115610c5d576040805160e560020a62461bcd02815260206004820152602e60248201527f596f757220636f6e747269627574696f6e20697320677265617465722074686160448201527f6e20746865206861726420636170000000000000000000000000000000000000606482015290519081900360840190fd5b600954610c70908663ffffffff612dd616565b600c541015610cef576040805160e560020a62461bcd02815260206004820152603d60248201527f596f757220636f6e747269627574696f6e20776f756c6420636175736520746860448201527f6520746f74616c20746f20657863656564207468652068617264636170000000606482015290519081900360840190fd5b600954610d02908663ffffffff612dd616565b600955600b54610d159086906005612df0565b9350610d316001600160a060020a03881663ffffffff612e2516565b92508215610dc857608060020a8084049490940193610d5a90808502048663ffffffff612dd616565b9150610d7f6001600160a060020a038816608060020a8702851763ffffffff612e3b16565b1515610dc3576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b610e40565b610deb6001600160a060020a038816608060020a8702881763ffffffff612e3b16565b15610e40576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b60408051858152602081018790528151600160a060020a038916927f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a45040928290030190a2505050505050565b60095481565b600054600160a060020a03163314610ee1576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a03909116600090815260086020526040902055565b60408051808201909152600f81527f4c696e6b506f6f6c204f776e6572730000000000000000000000000000000000602082015281565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b60006080610f7d6001600160a060020a03851663ffffffff612e2516565b9060020a90049050919050565b68d8d726b7177a80000081565b60056020526000908152604090205481565b601281565b600081818111610ff6576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561100357fe5b061561105b576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b61106c60013363ffffffff612e2516565b9150608060020a808302048311156110f4576040805160e560020a62461bcd02815260206004820152603f60248201527f54686520616d6f756e7420746f20696e63726561736520616c6c6f77616e636560448201527f20627920697320686967686572207468616e20796f75722062616c616e636500606482015290519081900360840190fd5b336000908152600360209081526040808320600160a060020a0388168452909152902054611128908463ffffffff612dd616565b336000908152600360209081526040808320600160a060020a039890981683529690529490942093909355505050565b600054600160a060020a031633146111a8576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b6111b28282610922565b5050565b600e5463010000009004600160a060020a031681565b600080806111e160013363ffffffff612e2516565b1515611239576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b600e5460ff161515611295576040805160e560020a62461bcd02815260206004820152601960248201527f446973747269627574696f6e2069736e27742061637469766500000000000000604482015290519081900360640190fd5b600d54608060020a9081020492506112b3848463ffffffff612dd616565b600d8054608060020a90819004028217905591506112d16001612eaa565b6112e1858563ffffffff612dd616565b111561135d576040805160e560020a62461bcd02815260206004820152602d60248201527f546f2076616c75652069732067726561746572207468616e2074686520616d6f60448201527f756e74206f66206f776e65727300000000000000000000000000000000000000606482015290519081900360840190fd5b6113676001612eaa565b8214156113d657600e805460ff19169055600f54600d54600160a060020a03909116907f3f1b49349800340b97132392d0b7f9be99025a47d4b5025999cd26da9668125090608060020a90046113bd6001612eaa565b6040805192835260208301919091528051918290030190a25b50815b818110156113f2576113ea81612eb1565b6001016113d9565b50505050565b60006114046001612eaa565b90505b90565b60006080806114296001600160a060020a03861663ffffffff612e2516565b9060020a029060020a90049050919050565b8160008111611482576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561148f57fe5b06156114e7576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b33600090815260056020526040902054831115611574576040805160e560020a62461bcd02815260206004820152603760248201527f546865207374616b6520616d6f756e7420746f2072656d6f766520697320686960448201527f67686572207468616e20776861742773207374616b6564000000000000000000606482015290519081900360840190fd5b336000908152600460209081526040808320600160a060020a038816845290915290205483111561163b576040805160e560020a62461bcd02815260206004820152604a60248201527f546865207374616b6520616d6f756e7420746f2072656d6f766520697320677260448201527f6561746572207468616e20776861742773207374616b6564207769746820746860648201527f6520726563656976657200000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3360009081526005602052604090205461165b908463ffffffff61306c16565b3360009081526005602090815260408083209390935560048152828220600160a060020a038816835290522054611698908463ffffffff61306c16565b336000908152600460209081526040808320600160a060020a0389168452909152902081905515156116e957336000908152600460209081526040808320600160a060020a03881684529091528120555b33600090815260056020526040902054151561171057336000908152600560205260408120555b83600160a060020a031663eccce6bf3385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561178f578181015183820152602001611777565b50505050905090810190601f1680156117bc5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156117dd57600080fd5b505af11580156117f1573d6000803e3d6000fd5b5050604080518681529051600160a060020a03881693503392507fba46c565cf8a26bc619b7a8c3575352c7423eabd65d1d5d1a105df085f56698e9181900360200190a350505050565b60066020526000908152604090205460ff1681565b600054600160a060020a031633146118a0576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e54610100900460ff1615611926576040805160e560020a62461bcd02815260206004820152602b60248201527f43616e27742077686974656c697374207768656e2074686520636f6e7472616360448201527f74206973206c6f636b6564000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0381161515611986576040805160e560020a62461bcd02815260206004820152601160248201527f426c61636b686f6c652061646472657373000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b6000828181116119f2576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a54818115156119ff57fe5b0615611a57576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b611a6860013363ffffffff612e2516565b336000908152600560205260409020549092508490611a9690608060020a808602049063ffffffff61306c16565b1015611b12576040805160e560020a62461bcd02815260206004820152603360248201527f54686520616d6f756e7420746f206265207374616b656420697320686967686560448201527f72207468616e20796f75722062616c616e636500000000000000000000000000606482015290519081900360840190fd5b33600090815260056020526040902054611b32908563ffffffff612dd616565b3360009081526005602090815260408083209390935560048152828220600160a060020a038916835290522054611b6f908563ffffffff612dd616565b336000818152600460208181526040808420600160a060020a038c1680865290835281852096909655517f89c9798f000000000000000000000000000000000000000000000000000000008152918201848152602483018a90526060604484019081528951606485015289516389c9798f96958c958c95608490910192908601918190849084905b83811015611c0f578181015183820152602001611bf7565b50505050905090810190601f168015611c3c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611c5d57600080fd5b505af1158015611c71573d6000803e3d6000fd5b5050604080518781529051600160a060020a03891693503392507fe9fee739d972ccf68b1391121e1e10551ce21bb33bd0073a980c0e02f44c84a99181900360200190a35050505050565b600054600160a060020a03163314611d0c576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e5462010000900460ff1615611d6d576040805160e560020a62461bcd02815260206004820152601860248201527f436f6e747269627574696f6e2068617320737461727465640000000000000000604482015290519081900360640190fd5b600e805462ff0000191662010000179055565b600054600160a060020a031681565b60408051808201909152600281527f4c50000000000000000000000000000000000000000000000000000000000000602082015281565b600e5460ff1681565b60076020526000908152604090205460ff1681565b8060008111611e2b576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a5481811515611e3857fe5b0615611e90576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054821115611f57576040805160e560020a62461bcd02815260206004820152604860248201527f54686520616d6f756e7420746f20646563726561736520616c6c6f77616e636560448201527f20627920697320686967686572207468616e207468652063757272656e74206160648201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054611f8b908363ffffffff61306c16565b336000908152600360209081526040808320600160a060020a038816845290915290208190551515611fdc57336000908152600360209081526040808320600160a060020a03871684529091528120555b505050565b600460209081526000928352604080842090915290825290205481565b600061201160013363ffffffff612e2516565b1515612069576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b600160a060020a03821660009081526006602052604090205460ff161515612101576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e206973206e6f742077686974656c697374656420746f206265206460448201527f6973747269627574656400000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff161561215c576040805160e560020a62461bcd02815260206004820152601e60248201527f446973747269627574696f6e20697320616c7265616479206163746976650000604482015290519081900360640190fd5b600e805460ff19166001179055600160a060020a038216151561218157503031612211565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156121e257600080fd5b505af11580156121f6573d6000803e3d6000fd5b505050506040513d602081101561220c57600080fd5b505190505b61221a81612dcd565b15156122275750608060020a5b600160a060020a03821660009081526008602052604090205481116122e2576040805160e560020a62461bcd02815260206004820152604160248201527f416d6f756e7420696e2074686520636f6e74726163742069736e27742061626f60448201527f766520746865206d696e696d756d20646973747269627574696f6e206c696d6960648201527f7400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b608060020a8102600d55600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091557feede959c6858c7a658800c9574366c74769c18e3e3095c31d9516c31b894f743826123436001612eaa565b6040805192835260208301919091528051918290030190a25050565b61237060013363ffffffff612e2516565b15156123c8576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b6123d333848461307e565b6123dc836136ef565b15611fdc5782600160a060020a0316635b4cc3203384846040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612460578181015183820152602001612448565b50505050905090810190601f16801561248d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156124ae57600080fd5b505af11580156124c2573d6000803e3d6000fd5b50505050505050565b600054600160a060020a0316331461251b576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600e54610100900460ff161561257b576040805160e560020a62461bcd02815260206004820152601560248201527f53686172657320616c7265616479206c6f636b65640000000000000000000000604482015290519081900360640190fd5b600e805461ff001916610100179055565b600054600160a060020a031633146125dc576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526006602052604090205460ff161561264d576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e20697320616c72656164792077686974656c697374656400000000604482015290519081900360640190fd5b600160a060020a039091166000908152600660209081526040808320805460ff191660011790556008909152902055565b600e54610100900460ff1681565b600a5481565b6000805481908190600160a060020a031633146126e7576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b836000811161272e576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a548181151561273b57fe5b0615612793576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b600e54610100900460ff1615612819576040805160e560020a62461bcd02815260206004820152602660248201527f43616e2774206d616e75616c6c7920736574207368617265732c20697427732060448201527f6c6f636b65640000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff161561289a576040805160e560020a62461bcd02815260206004820152603360248201527f43616e6e6f7420736574206f776e657273207368617265207768656e2064697360448201527f747269627574696f6e2069732061637469766500000000000000000000000000606482015290519081900360840190fd5b6128a385612dcd565b151561291f576040805160e560020a62461bcd02815260206004820152602a60248201527f436f6e747269627574696f6e2076616c75652069736e2774203132386269742060448201527f6f7220736d616c6c657200000000000000000000000000000000000000000000606482015290519081900360840190fd5b6129396001600160a060020a03881663ffffffff612e2516565b93508315156129cf5761295085600b546005612df0565b92506129756001600160a060020a038816608060020a8602881763ffffffff612e3b16565b156129ca576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b612a76565b6129f36129e086600b546005612df0565b608060020a86049063ffffffff612dd616565b9250612a0d608060020a808602048663ffffffff612dd616565b9150612a326001600160a060020a038816608060020a8602851763ffffffff612e3b16565b1515612a76576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b505050505050565b6000612a8a6001612eaa565b8210612b06576040805160e560020a62461bcd02815260206004820152602260248201527f496e6465782069732067726561746572207468616e20746865206d617020736960448201527f7a65000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612b1760018363ffffffff6136f716565b92915050565b600360209081526000928352604080842090915290825290205481565b600160a060020a0383166000908152600360209081526040808320338452909152902054811115612bdb576040805160e560020a62461bcd02815260206004820152603760248201527f53656e646572206973206e6f7420617070726f76656420746f2073656e64206f60448201527f776e657273686970206f66207468617420616d6f756e74000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600360209081526040808320338452909152902054612c0f908263ffffffff61306c16565b600160a060020a038416600090815260036020908152604080832033845290915290208190551515612c6057600160a060020a03831660009081526003602090815260408083203384529091528120555b611fdc83838361307e565b612c7c60013363ffffffff612e2516565b1515612cd4576040805160e560020a62461bcd02815260206004820152602c602482015260008051602061391383398151915260448201526000805160206138b3833981519152606482015290519081900360840190fd5b6111b233838361307e565b60086020526000908152604090205481565b600054600160a060020a03163314612d41576040805160e560020a62461bcd02815260206004820152601660248201526000805160206138f3833981519152604482015290519081900360640190fd5b600160a060020a0381161515612d5657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d54608060020a9081020490565b608060020a1190565b600082820183811015612de557fe5b8091505b5092915050565b600080600083600101600a0a86029150600a8583811515612e0d57fe5b04600501811515612e1a57fe5b049695505050505050565b6000908152602091909152604090206001015490565b6000828152602084905260408120600181018390558054821015612e625760019150612ea2565b8460010180546001019081612e779190613835565b808255600186018054869260001901908110612e8f57fe5b9060005260206000200181905550600091505b509392505050565b6001015490565b60008080612ec660018563ffffffff6136f716565b9250612ee26001600160a060020a03851663ffffffff612e2516565b600d54909250612f1890620186a090612f0c90608060020a9081900490860463ffffffff61371d16565b9063ffffffff61374116565b600f54909150600160a060020a0316158015612f3a5750612f38836136ef565b155b15612f7b57604051600160a060020a0384169082156108fc029083906000818181858888f19350505050158015612f75573d6000803e3d6000fd5b506113f2565b600f54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d602081101561301457600080fd5b505115156113f2576040805160e560020a62461bcd02815260206004820152601560248201527f4552433230207472616e73666572206661696c65640000000000000000000000604482015290519081900360640190fd5b60008282111561307857fe5b50900390565b6000808080808080878181116130cc576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020613873833981519152604482015290519081900360640190fd5b600a54818115156130d957fe5b0615613131576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b61314b6001600160a060020a038d1663ffffffff612e2516565b97506131676001600160a060020a038c1663ffffffff612e2516565b9650608060020a808902819004965080880204945061318589612dcd565b15156131db576040805160e560020a62461bcd02815260206004820152601e60248201527f416d6f756e742069736e277420313238626974206f7220736d616c6c65720000604482015290519081900360640190fd5b600160a060020a038b8116908b16141561323f576040805160e560020a62461bcd02815260206004820152601a60248201527f596f752063616e27742073656e6420746f20796f757273656c66000000000000604482015290519081900360640190fd5b600160a060020a038a16151561329f576040805160e560020a62461bcd02815260206004820152601e60248201527f4f776e6572736869702063616e6e6f7420626520626c61636b686f6c65640000604482015290519081900360640190fd5b600086116132f7576040805160e560020a62461bcd02815260206004820152601c60248201527f596f7520646f6e2774206861766520616e79206f776e65727368697000000000604482015290519081900360640190fd5b600160a060020a038b16600090815260056020526040902054899061332390889063ffffffff61306c16565b101561339f576040805160e560020a62461bcd02815260206004820152603060248201527f54686520616d6f756e7420746f2073656e64206578636565647320746865206160448201527f64647265737365732062616c616e636500000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615613420576040805160e560020a62461bcd02815260206004820152603460248201527f446973747269627574696f6e2063616e6e6f742062652061637469766520776860448201527f656e2073656e64696e67206f776e657273686970000000000000000000000000606482015290519081900360840190fd5b600a548981151561342d57fe5b0615613485576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206139338339815191526044820152600080516020613893833981519152606482015290519081900360840190fd5b613495868a63ffffffff61306c16565b9550851515613513576134b86001600160a060020a038d1663ffffffff61375816565b151561350e576040805160e560020a62461bcd02815260206004820181905260248201527f4164647265737320646f65736e277420657869737420696e20746865206d6170604482015290519081900360640190fd5b61358a565b61352186600b546005612df0565b93506135466001600160a060020a038d16608060020a8702891763ffffffff612e3b16565b151561358a576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b61359a858a63ffffffff612dd616565b92506135aa83600b546005612df0565b9150841515613630576135d66001600160a060020a038c16608060020a8502861763ffffffff612e3b16565b1561362b576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b613697565b6136536001600160a060020a038c16608060020a8502861763ffffffff612e3b16565b1515613697576040805160e560020a62461bcd02815260206004820181905260248201526000805160206138d3833981519152604482015290519081900360640190fd5b89600160a060020a03168b600160a060020a03167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b8b6040518082815260200191505060405180910390a35050505050505050505050565b6000903b1190565b6000826001018281548110151561370a57fe5b9060005260206000200154905092915050565b6000828202831580613739575082848281151561373657fe5b04145b1515612de557fe5b600080828481151561374f57fe5b04949350505050565b6000818152602083905260408120805415156137775760009150612de9565b6001840154815410156137ff5780546001850180548691600091600019810190811061379f57fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106137cf57fe5b90600052602060002001548460010160018360000154038154811015156137f257fe5b6000918252602090912001555b60018401805460001901906138149082613835565b50505060009081526020919091526040812081815560019081019190915590565b815481835581811115611fdc57600083815260209020611fdc91810190830161140791905b8082111561386e576000815560010161385a565b5090560043616e6e6f7420757365207a65726f00000000000000000000000000000000006865206d696e696d756d20707265636973696f6e20616d6f756e7400000000006869732066756e6374696f6e000000000000000000000000000000000000000053656e64657220646f6573206e6f7420657869737420696e20746865206d617053656e646572206e6f7420617574686f72697365642e00000000000000000000596f7520617265206e6f7420617574686f726973656420746f2063616c6c2074596f757220616d6f756e742069736e277420646976697369626c652062792074a165627a7a72305820474bfe4f43e5e04bbf7fcc9ac4f64ff705c9bf0b4db879f784b5e530317f06a10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e2d06414b011d6dfff2d7181feb37e68e8322d61
-----Decoded View---------------
Arg [0] : _wallet (address): 0xE2D06414b011D6DFff2D7181FEB37e68e8322D61
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e2d06414b011d6dfff2d7181feb37e68e8322d61
Swarm Source
bzzr://474bfe4f43e5e04bbf7fcc9ac4f64ff705c9bf0b4db879f784b5e530317f06a1
Loading...
Loading
Loading...
Loading
Net Worth in USD
$599.11
Net Worth in ETH
0.287564
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,083.41 | 0.2876 | $599.11 |
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.