Token migration announcement. Adshares token contract has migrated to a new address.
ERC-20
Source Code
Overview
Max Total Supply
19,379,103 ADST
Holders
830 (0.00%)
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
AdsharesToken
Compiler Version
v0.4.11+commit.68ef5810
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-07-04
*/
pragma solidity ^0.4.11;
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20Basic {
uint public totalSupply;
function balanceOf(address who) constant returns (uint);
function transfer(address to, uint value);
event Transfer(address indexed from, address indexed to, uint value);
}
/**
* Math operations with safety checks
*/
library SafeMath {
function mul(uint a, uint b) internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint a, uint b) internal returns (uint) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint a, uint b) internal returns (uint) {
assert(b <= a);
return a - b;
}
function add(uint a, uint b) internal returns (uint) {
uint c = a + b;
assert(c >= a);
return c;
}
function max64(uint64 a, uint64 b) internal constant returns (uint64) {
return a >= b ? a : b;
}
function min64(uint64 a, uint64 b) internal constant returns (uint64) {
return a < b ? a : b;
}
function max256(uint256 a, uint256 b) internal constant returns (uint256) {
return a >= b ? a : b;
}
function min256(uint256 a, uint256 b) internal constant returns (uint256) {
return a < b ? a : b;
}
/**
* Based on http://www.codecodex.com/wiki/Calculate_an_integer_square_root
*/
function sqrt(uint num) internal returns (uint) {
if (0 == num) { // Avoid zero divide
return 0;
}
uint n = (num / 2) + 1; // Initial estimate, never low
uint n1 = (n + (num / n)) / 2;
while (n1 < n) {
n = n1;
n1 = (n + (num / n)) / 2;
}
return n;
}
function assert(bool assertion) internal {
if (!assertion) {
throw;
}
}
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
*/
contract BasicToken is ERC20Basic {
using SafeMath for uint;
mapping(address => uint) balances;
/**
* @dev Fix for the ERC20 short address attack.
*/
modifier onlyPayloadSize(uint size) {
if(msg.data.length < size + 4) {
throw;
}
_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint representing the amount owned by the passed address.
*/
function balanceOf(address _owner) constant returns (uint balance) {
return balances[_owner];
}
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) constant returns (uint);
function transferFrom(address from, address to, uint value);
function approve(address spender, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
/**
* @title Standard ERC20 token
*
* @dev Implemantation of the basic standart token.
* @dev https://github.com/ethereum/EIPs/issues/20
* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract StandardToken is BasicToken, ERC20 {
mapping (address => mapping (address => uint)) allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint the amout of tokens to be transfered
*/
function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
var _allowance = allowed[_from][msg.sender];
// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
// if (_value > _allowance) throw;
balances[_to] = balances[_to].add(_value);
balances[_from] = balances[_from].sub(_value);
allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value);
}
/**
* @dev Aprove the passed address to spend the specified amount of tokens on beahlf of msg.sender.
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint _value) {
// To change the approve amount you first have to reduce the addresses`
// allowance to zero by calling `approve(_spender, 0)` if it is not
// already 0 to mitigate the race condition described here:
// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
}
/**
* @dev Function to check the amount of tokens than an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint specifing the amount of tokens still avaible for the spender.
*/
function allowance(address _owner, address _spender) constant returns (uint remaining) {
return allowed[_owner][_spender];
}
}
/**
* @title Adshares ICO token
*
* see https://github.com/adshares/ico
*
*/
contract AdsharesToken is StandardToken {
using SafeMath for uint;
// metadata
string public constant name = "Adshares Token";
string public constant symbol = "ADST";
uint public constant decimals = 0;
// crowdsale parameters
uint public constant tokenCreationMin = 10000000;
uint public constant tokenPriceMin = 0.0004 ether;
uint public constant tradeSpreadInvert = 50; // 2%
uint public constant crowdsaleEndLockTime = 1 weeks;
uint public constant fundingUnlockPeriod = 1 weeks;
uint public constant fundingUnlockFractionInvert = 100; // 1 %
// contructor parameters
uint public crowdsaleStartBlock;
address public owner1;
address public owner2;
address public withdrawAddress; // multi-sig wallet that will receive ether
// contract state
bool public minFundingReached;
uint public crowdsaleEndDeclarationTime = 0;
uint public fundingUnlockTime = 0;
uint public unlockedBalance = 0;
uint public withdrawnBalance = 0;
bool public isHalted = false;
// events
event LogBuy(address indexed who, uint tokens, uint purchaseValue, uint supplyAfter);
event LogSell(address indexed who, uint tokens, uint saleValue, uint supplyAfter);
event LogWithdraw(uint amount);
event LogCrowdsaleEnd(bool completed);
/**
* @dev Checks if funding is active
*/
modifier fundingActive() {
// Not yet started
if (block.number < crowdsaleStartBlock) {
throw;
}
// Already ended
if (crowdsaleEndDeclarationTime > 0 && block.timestamp > crowdsaleEndDeclarationTime + crowdsaleEndLockTime) {
throw;
}
_;
}
/**
* @dev Throws if called by any account other than one of the owners.
*/
modifier onlyOwner() {
if (msg.sender != owner1 && msg.sender != owner2) {
throw;
}
_;
}
// constructor
function AdsharesToken (address _owner1, address _owner2, address _withdrawAddress, uint _crowdsaleStartBlock)
{
owner1 = _owner1;
owner2 = _owner2;
withdrawAddress = _withdrawAddress;
crowdsaleStartBlock = _crowdsaleStartBlock;
}
/**
* Returns not yet unlocked balance
*/
function getLockedBalance() private constant returns (uint lockedBalance) {
return this.balance.sub(unlockedBalance);
}
/**
* @dev Calculates how many tokens one can buy for specified value
* @return Amount of tokens one will receive and purchase value without remainder.
*/
function getBuyPrice(uint _bidValue) constant returns (uint tokenCount, uint purchaseValue) {
// Token price formula is twofold. We have flat pricing below tokenCreationMin,
// and above that price linarly increases with supply.
uint flatTokenCount;
uint startSupply;
uint linearBidValue;
if(totalSupply < tokenCreationMin) {
uint maxFlatTokenCount = _bidValue.div(tokenPriceMin);
// entire purchase in flat pricing
if(totalSupply.add(maxFlatTokenCount) <= tokenCreationMin) {
return (maxFlatTokenCount, maxFlatTokenCount.mul(tokenPriceMin));
}
flatTokenCount = tokenCreationMin.sub(totalSupply);
linearBidValue = _bidValue.sub(flatTokenCount.mul(tokenPriceMin));
startSupply = tokenCreationMin;
} else {
flatTokenCount = 0;
linearBidValue = _bidValue;
startSupply = totalSupply;
}
// Solves quadratic equation to calculate maximum token count that can be purchased
uint currentPrice = tokenPriceMin.mul(startSupply).div(tokenCreationMin);
uint delta = (2 * startSupply).mul(2 * startSupply).add(linearBidValue.mul(4 * 1 * 2 * startSupply).div(currentPrice));
uint linearTokenCount = delta.sqrt().sub(2 * startSupply).div(2);
uint linearAvgPrice = currentPrice.add((startSupply+linearTokenCount+1).mul(tokenPriceMin).div(tokenCreationMin)).div(2);
// double check to eliminate rounding errors
linearTokenCount = linearBidValue / linearAvgPrice;
linearAvgPrice = currentPrice.add((startSupply+linearTokenCount+1).mul(tokenPriceMin).div(tokenCreationMin)).div(2);
purchaseValue = linearTokenCount.mul(linearAvgPrice).add(flatTokenCount.mul(tokenPriceMin));
return (
flatTokenCount + linearTokenCount,
purchaseValue
);
}
/**
* @dev Calculates average token price for sale of specified token count
* @return Total value received for given sale size.
*/
function getSellPrice(uint _askSizeTokens) constant returns (uint saleValue) {
uint flatTokenCount;
uint linearTokenMin;
if(totalSupply <= tokenCreationMin) {
return tokenPriceMin * _askSizeTokens;
}
if(totalSupply.sub(_askSizeTokens) < tokenCreationMin) {
flatTokenCount = tokenCreationMin - totalSupply.sub(_askSizeTokens);
linearTokenMin = tokenCreationMin;
} else {
flatTokenCount = 0;
linearTokenMin = totalSupply.sub(_askSizeTokens);
}
uint linearTokenCount = _askSizeTokens - flatTokenCount;
uint minPrice = (linearTokenMin).mul(tokenPriceMin).div(tokenCreationMin);
uint maxPrice = (totalSupply+1).mul(tokenPriceMin).div(tokenCreationMin);
uint linearAveragePrice = minPrice.add(maxPrice).div(2);
return linearAveragePrice.mul(linearTokenCount).add(flatTokenCount.mul(tokenPriceMin));
}
/**
* Default function called by sending Ether to this address with no arguments.
* @dev Buy tokens with market order
*/
function() payable fundingActive
{
buyLimit(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
}
/**
* @dev Buy tokens without price limit
*/
function buy() payable external fundingActive {
buyLimit(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
}
/**
* @dev Buy tokens with limit maximum average price
* @param _maxPrice Maximum price user want to pay for one token
*/
function buyLimit(uint _maxPrice) payable public fundingActive {
require(msg.value >= tokenPriceMin);
assert(!isHalted);
uint boughtTokens;
uint averagePrice;
uint purchaseValue;
(boughtTokens, purchaseValue) = getBuyPrice(msg.value);
if(boughtTokens == 0) {
// bid to small, return ether and abort
msg.sender.transfer(msg.value);
return;
}
averagePrice = purchaseValue.div(boughtTokens);
if(averagePrice > _maxPrice) {
// price too high, return ether and abort
msg.sender.transfer(msg.value);
return;
}
assert(averagePrice >= tokenPriceMin);
assert(purchaseValue <= msg.value);
totalSupply = totalSupply.add(boughtTokens);
balances[msg.sender] = balances[msg.sender].add(boughtTokens);
if(!minFundingReached && totalSupply >= tokenCreationMin) {
minFundingReached = true;
fundingUnlockTime = block.timestamp;
// this.balance contains ether sent in this message
unlockedBalance += this.balance.sub(msg.value).div(tradeSpreadInvert);
}
if(minFundingReached) {
unlockedBalance += purchaseValue.div(tradeSpreadInvert);
}
LogBuy(msg.sender, boughtTokens, purchaseValue, totalSupply);
if(msg.value > purchaseValue) {
msg.sender.transfer(msg.value.sub(purchaseValue));
}
}
/**
* @dev Sell tokens without limit on price
* @param _tokenCount Amount of tokens user wants to sell
*/
function sell(uint _tokenCount) external fundingActive {
sellLimit(_tokenCount, 0);
}
/**
* @dev Sell tokens with limit on minimum average priceprice
* @param _tokenCount Amount of tokens user wants to sell
* @param _minPrice Minimum price user wants to receive for one token
*/
function sellLimit(uint _tokenCount, uint _minPrice) public fundingActive {
require(_tokenCount > 0);
assert(balances[msg.sender] >= _tokenCount);
uint saleValue = getSellPrice(_tokenCount);
uint averagePrice = saleValue.div(_tokenCount);
assert(averagePrice >= tokenPriceMin);
if(minFundingReached) {
averagePrice -= averagePrice.div(tradeSpreadInvert);
saleValue -= saleValue.div(tradeSpreadInvert);
}
if(averagePrice < _minPrice) {
// price too high, abort
return;
}
// not enough ether for buyback
assert(saleValue <= this.balance);
totalSupply = totalSupply.sub(_tokenCount);
balances[msg.sender] = balances[msg.sender].sub(_tokenCount);
LogSell(msg.sender, _tokenCount, saleValue, totalSupply);
msg.sender.transfer(saleValue);
}
/**
* @dev Unlock funds for withdrawal. Only 1% can be unlocked weekly.
*/
function unlockFunds() external onlyOwner fundingActive {
assert(minFundingReached);
assert(block.timestamp >= fundingUnlockTime);
uint unlockedAmount = getLockedBalance().div(fundingUnlockFractionInvert);
unlockedBalance += unlockedAmount;
assert(getLockedBalance() > 0);
fundingUnlockTime += fundingUnlockPeriod;
}
/**
* @dev Withdraw funds. Only unlocked funds can be withdrawn.
*/
function withdrawFunds(uint _value) external onlyOwner fundingActive onlyPayloadSize(32) {
require(_value <= unlockedBalance);
assert(minFundingReached);
unlockedBalance -= _value;
withdrawnBalance += _value;
LogWithdraw(_value);
withdrawAddress.transfer(_value);
}
/**
* @dev Declares that crowdsale is about to end. Users have one week to decide if the want to keep token or sell them to contract.
*/
function declareCrowdsaleEnd() external onlyOwner fundingActive {
assert(minFundingReached);
assert(crowdsaleEndDeclarationTime == 0);
crowdsaleEndDeclarationTime = block.timestamp;
LogCrowdsaleEnd(false);
}
/**
* @dev Can be called one week after initial declaration. Withdraws ether and stops trading. Tokens remain in circulation.
*/
function confirmCrowdsaleEnd() external onlyOwner {
assert(crowdsaleEndDeclarationTime > 0 && block.timestamp > crowdsaleEndDeclarationTime + crowdsaleEndLockTime);
LogCrowdsaleEnd(true);
withdrawAddress.transfer(this.balance);
}
/**
* @dev Halts crowdsale. Can only be called before minimumFunding is reached.
* @dev When contract is halted no one can buy new tokens, but can sell them back to contract.
* @dev Function will be called if minimum funding target isn't reached for extended period of time
*/
function haltCrowdsale() external onlyOwner fundingActive {
assert(!minFundingReached);
isHalted = !isHalted;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_bidValue","type":"uint256"}],"name":"getBuyPrice","outputs":[{"name":"tokenCount","type":"uint256"},{"name":"purchaseValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"withdrawnBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"withdrawAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tradeSpreadInvert","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndDeclarationTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner2","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingUnlockFractionInvert","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"haltCrowdsale","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner1","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"confirmCrowdsaleEnd","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_maxPrice","type":"uint256"}],"name":"buyLimit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"fundingUnlockPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"unlockedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unlockFunds","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_askSizeTokens","type":"uint256"}],"name":"getSellPrice","outputs":[{"name":"saleValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"declareCrowdsaleEnd","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingUnlockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isHalted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenCount","type":"uint256"},{"name":"_minPrice","type":"uint256"}],"name":"sellLimit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minFundingReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndLockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenCount","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_owner1","type":"address"},{"name":"_owner2","type":"address"},{"name":"_withdrawAddress","type":"address"},{"name":"_crowdsaleStartBlock","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"purchaseValue","type":"uint256"},{"indexed":false,"name":"supplyAfter","type":"uint256"}],"name":"LogBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"saleValue","type":"uint256"},{"indexed":false,"name":"supplyAfter","type":"uint256"}],"name":"LogSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"completed","type":"bool"}],"name":"LogCrowdsaleEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]Contract Creation Code
60606040526000600781905560088190556009819055600a55600b805460ff19169055341561002a57fe5b604051608080611a1983398101604090815281516020830151918301516060909301519092905b60048054600160a060020a03808716600160a060020a03199283161790925560058054868416908316179055600680549285169290911691909117905560038190555b505050505b611971806100a86000396000f300606060405236156101bf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461020757806308d4db1414610297578063095ea7b3146102c3578063154e8152146102e4578063155dd5ee146103065780631581b6001461031b57806318160ddd1461034757806323b872dd14610369578063313ce567146103905780633724fb24146103b25780633985a4ab146103d457806352709725146103f65780635949e525146104225780635d51b5501461044457806370a082311461045657806373688914146104845780638b322791146104b057806395d89b41146104c25780639b7edbdb146105525780639ea03ccb1461055f578063a6f2ae3a14610581578063a9059cbb1461058b578063ab6ad452146105ac578063b4c2aaee146105ce578063b4d1c485146105f0578063ba730e5314610602578063bd95758514610627578063c039daf614610639578063c12736761461065b578063c7ff15841461067d578063cab9c32a146106a1578063cdd3574a146106b9578063d34b1537146106db578063dd62ed3e146106ff578063deb83bcc1461055f578063e4849b3214610755575b6102055b6003544310156101d35760006000fd5b60006007541180156101eb575062093a806007540142115b156101f65760006000fd5b61020160001961076a565b5b5b565b005b341561020f57fe5b610217610a12565b60408051602080825283518183015283519192839290830191850190808383821561025d575b80518252602083111561025d57601f19909201916020918201910161023d565b505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029f57fe5b6102aa600435610a49565b6040805192835260208301919091528051918290030190f35b34156102cb57fe5b610205600160a060020a0360043516602435610cb7565b005b34156102ec57fe5b6102f4610d57565b60408051918252519081900360200190f35b341561030e57fe5b610205600435610d5d565b005b341561032357fe5b61032b610e7c565b60408051600160a060020a039092168252519081900360200190f35b341561034f57fe5b6102f4610e8b565b60408051918252519081900360200190f35b341561037157fe5b610205600160a060020a0360043581169060243516604435610e91565b005b341561039857fe5b6102f4610fb5565b60408051918252519081900360200190f35b34156103ba57fe5b6102f4610fba565b60408051918252519081900360200190f35b34156103dc57fe5b6102f4610fbf565b60408051918252519081900360200190f35b34156103fe57fe5b61032b610fc5565b60408051600160a060020a039092168252519081900360200190f35b341561042a57fe5b6102f4610fd4565b60408051918252519081900360200190f35b341561044c57fe5b610205610fd9565b005b341561045e57fe5b6102f4600160a060020a0360043516611070565b60408051918252519081900360200190f35b341561048c57fe5b61032b61108f565b60408051600160a060020a039092168252519081900360200190f35b34156104b857fe5b61020561109e565b005b34156104ca57fe5b610217611161565b60408051602080825283518183015283519192839290830191850190808383821561025d575b80518252602083111561025d57601f19909201916020918201910161023d565b505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020560043561076a565b005b341561056757fe5b6102f4611198565b60408051918252519081900360200190f35b6102056101c3565b005b341561059357fe5b610205600160a060020a03600435166024356111e1565b005b34156105b457fe5b6102f46112af565b60408051918252519081900360200190f35b34156105d657fe5b6102f46112b5565b60408051918252519081900360200190f35b34156105f857fe5b6102056112c0565b005b341561060a57fe5b6102f4600435611395565b60408051918252519081900360200190f35b341561062f57fe5b6102056114eb565b005b341561064157fe5b6102f46115b3565b60408051918252519081900360200190f35b341561066357fe5b6102f46115ba565b60408051918252519081900360200190f35b341561068557fe5b61068d6115c0565b604080519115158252519081900360200190f35b34156106a957fe5b6102056004356024356115c9565b005b34156106c157fe5b6102f461178d565b60408051918252519081900360200190f35b34156106e357fe5b61068d611793565b604080519115158252519081900360200190f35b341561070757fe5b6102f4600160a060020a03600435811690602435166117a3565b60408051918252519081900360200190f35b341561056757fe5b6102f4611198565b60408051918252519081900360200190f35b341561075d57fe5b6102056004356117d7565b005b6000600060006003544310156107805760006000fd5b6000600754118015610798575062093a806007540142115b156107a35760006000fd5b66016bcc41e900003410156107b85760006000fd5b600b5460ff16156107c557fe5b6107ce34610a49565b909350905082151561080b57604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561080657fe5b610a09565b61081b818463ffffffff61181a16565b91508382111561085657604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561080657fe5b610a09565b66016bcc41e9000082101561086757fe5b3481111561087157fe5b600054610884908463ffffffff61183716565b6000908155600160a060020a0333168152600160205260409020546108af908463ffffffff61183716565b33600160a060020a031660009081526001602052604090205560065460a060020a900460ff161580156108e757506298968060005410155b15610949576006805474ff0000000000000000000000000000000000000000191660a060020a1790554260085561093f6032610933600160a060020a033016313463ffffffff61185316565b9063ffffffff61181a16565b6009805490910190555b60065460a060020a900460ff16156109765761096c81603263ffffffff61181a16565b6009805490910190555b60005460408051858152602081018490528082019290925251600160a060020a033316917fc5620ded95cbb91682a998bc6df1a310612e51388b47c88b6dfb3f00d8248ddb919081900360600190a280341115610a0957600160a060020a0333166108fc6109ea348463ffffffff61185316565b6040518115909202916000818181858888f193505050501515610a0957fe5b5b5b5b50505050565b60408051808201909152600e81527f416473686172657320546f6b656e000000000000000000000000000000000000602082015281565b6000600060006000600060006000600060006000629896806000541015610b0f57610a818b66016bcc41e9000063ffffffff61181a16565b945062989680610a9c8660005461183790919063ffffffff16565b11610ac25784610ab98166016bcc41e9000063ffffffff61186c16565b99509950610caa565b600054610ad990629896809063ffffffff61185316565b9750610b02610af58966016bcc41e9000063ffffffff61186c16565b8c9063ffffffff61185316565b9550629896809650610b1c565b600097508a955060005496505b610b466298968061093366016bcc41e900008a63ffffffff61186c16565b9063ffffffff61181a16565b9350610b8d610b6e856109338960088c0263ffffffff61186c16565b9063ffffffff61181a16565b610b8160028a028063ffffffff61186c16565b9063ffffffff61183716565b9250610bbc600261093389600202610ba48761189b565b9063ffffffff61185316565b9063ffffffff61181a16565b9150610c0c6002610933610bf3629896808260018d89010166016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b879063ffffffff61183716565b9063ffffffff61181a16565b90508086811515610c1957fe5b049150610c6a6002610933610bf3629896808260018d89010166016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b879063ffffffff61183716565b9063ffffffff61181a16565b9050610ca2610c868966016bcc41e9000063ffffffff61186c16565b610b81848463ffffffff61186c16565b9063ffffffff61183716565b8883019a5098505b5050505050505050915091565b8015801590610cea5750600160a060020a0333811660009081526002602090815260408083209386168352929052205415155b15610cf55760006000fd5b600160a060020a03338116600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5050565b600a5481565b60045433600160a060020a03908116911614801590610d8b575060055433600160a060020a03908116911614155b15610d965760006000fd5b600354431015610da65760006000fd5b6000600754118015610dbe575062093a806007540142115b15610dc95760006000fd5b60206024361015610dda5760006000fd5b600954821115610dea5760006000fd5b60065460a060020a900460ff161515610dff57fe5b600980548390039055600a8054830190556040805183815290517f879a83fc17750905b8aef4ef85e6701b84a50e15d4463dc3c2e7fb0f9dbcf75d9181900360200190a1600654604051600160a060020a039091169083156108fc029084906000818181858888f193505050501515610d5357fe5b5b5b505b5b50565b600654600160a060020a031681565b60005481565b600060606064361015610ea45760006000fd5b600160a060020a038086166000908152600260209081526040808320338516845282528083205493881683526001909152902054909250610eeb908463ffffffff61183716565b600160a060020a038086166000908152600160205260408082209390935590871681522054610f20908463ffffffff61185316565b600160a060020a038616600090815260016020526040902055610f49828463ffffffff61185316565b600160a060020a038087166000818152600260209081526040808320338616845282529182902094909455805187815290519288169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35b5b5050505050565b600081565b603281565b60075481565b600554600160a060020a031681565b606481565b60045433600160a060020a03908116911614801590611007575060055433600160a060020a03908116911614155b156110125760006000fd5b6003544310156110225760006000fd5b600060075411801561103a575062093a806007540142115b156110455760006000fd5b60065460a060020a900460ff161561105957fe5b600b805460ff19811660ff909116151790555b5b5b565b600160a060020a0381166000908152600160205260409020545b919050565b600454600160a060020a031681565b60045433600160a060020a039081169116148015906110cc575060055433600160a060020a03908116911614155b156110d75760006000fd5b60006007541180156110ef575062093a806007540142115b15156110f757fe5b604080516001815290517fba57225df0fc3a1a33e9e3d3b2c5393bb165aecc4a9e348fb7e8c5b0f45dd99b9181900360200190a1600654604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050151561020157fe5b5b5b565b60408051808201909152600481527f4144535400000000000000000000000000000000000000000000000000000000602082015281565b62093a8081565b6003544310156101d35760006000fd5b60006007541180156101eb575062093a806007540142115b156101f65760006000fd5b61020160001961076a565b5b5b565b604060443610156111f25760006000fd5b600160a060020a03331660009081526001602052604090205461121b908363ffffffff61185316565b600160a060020a033381166000908152600160205260408082209390935590851681522054611250908363ffffffff61183716565b600160a060020a038085166000818152600160209081526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5b505050565b60095481565b66016bcc41e9000081565b60045460009033600160a060020a039081169116148015906112f1575060055433600160a060020a03908116911614155b156112fc5760006000fd5b60035443101561130c5760006000fd5b6000600754118015611324575062093a806007540142115b1561132f5760006000fd5b60065460a060020a900460ff16151561134457fe5b60085442101561135057fe5b611369606461093361190d565b9063ffffffff61181a16565b60098054820190559050600061137d61190d565b1161138457fe5b6008805462093a800190555b5b5b50565b6000600060006000600060006000629896806000541115156113c2578766016bcc41e900000296506114e0565b60005462989680906113da908a63ffffffff61185316565b1015611405576000546113f3908963ffffffff61185316565b6298968003955062989680945061141f565b6000805490965061141c908963ffffffff61185316565b94505b858803935061144e629896806109338766016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b92506114826298968061093366016bcc41e9000060005460010161186c90919063ffffffff16565b9063ffffffff61181a16565b91506114a56002610933858563ffffffff61183716565b9063ffffffff61181a16565b90506114dd6114c18766016bcc41e9000063ffffffff61186c16565b610b81838763ffffffff61186c16565b9063ffffffff61183716565b96505b505050505050919050565b60045433600160a060020a03908116911614801590611519575060055433600160a060020a03908116911614155b156115245760006000fd5b6003544310156115345760006000fd5b600060075411801561154c575062093a806007540142115b156115575760006000fd5b60065460a060020a900460ff16151561156c57fe5b6007541561157657fe5b42600755604080516000815290517fba57225df0fc3a1a33e9e3d3b2c5393bb165aecc4a9e348fb7e8c5b0f45dd99b9181900360200190a15b5b5b565b6298968081565b60085481565b600b5460ff1681565b600060006003544310156115dd5760006000fd5b60006007541180156115f5575062093a806007540142115b156116005760006000fd5b6000841161160e5760006000fd5b600160a060020a0333166000908152600160205260409020548490101561163157fe5b61163a84611395565b915061164c828563ffffffff61181a16565b905066016bcc41e9000081101561165f57fe5b60065460a060020a900460ff161561169a5761168281603263ffffffff61181a16565b900361169582603263ffffffff61181a16565b820391505b828110156116a757610a09565b600160a060020a033016318211156116bb57fe5b6000546116ce908563ffffffff61185316565b6000908155600160a060020a0333168152600160205260409020546116f9908563ffffffff61185316565b600160a060020a0333166000818152600160209081526040808320949094559054835188815291820186905281840152915190917f3871b69498aaad3449bcd3d955642c834792b1e823c5e12a8de3130f139937ff919081900360600190a2604051600160a060020a0333169083156108fc029084906000818181858888f193505050501515610a0957fe5b5b5b50505050565b60035481565b60065460a060020a900460ff1681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b62093a8081565b6003544310156117e75760006000fd5b60006007541180156117ff575062093a806007540142115b1561180a5760006000fd5b610e788160006115c9565b5b5b50565b60006000828481151561182957fe5b0490508091505b5092915050565b600082820161184884821015611934565b8091505b5092915050565b600061186183831115611934565b508082035b92915050565b600082820261184884158061188b575083858381151561188857fe5b04145b611934565b8091505b5092915050565b600080808315156118af5760009250611906565b6002845b046001019150600282858115156118c657fe5b0483018115156118d257fe5b0490505b8181101561190257809150600282858115156118ee57fe5b0483018115156118fa57fe5b0490506118d6565b8192505b5050919050565b600061192e60095430600160a060020a03163161185390919063ffffffff16565b90505b90565b801515610e785760006000fd5b5b505600a165627a7a72305820af9623b560cc5be9532279843d39a290d62fb8422ed5d6f9eba3d7a8909bc8bf00290000000000000000000000004ffadb8bc4d364af060a46d041592bc98acb1c15000000000000000000000000dbc78ef6d1b3e8ef8567b3b773c276dc225f42b5000000000000000000000000ef82b51cd11b2cd198e7d9f7c75a486dd072194c00000000000000000000000000000000000000000000000000000000003cd700
Deployed Bytecode
0x606060405236156101bf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461020757806308d4db1414610297578063095ea7b3146102c3578063154e8152146102e4578063155dd5ee146103065780631581b6001461031b57806318160ddd1461034757806323b872dd14610369578063313ce567146103905780633724fb24146103b25780633985a4ab146103d457806352709725146103f65780635949e525146104225780635d51b5501461044457806370a082311461045657806373688914146104845780638b322791146104b057806395d89b41146104c25780639b7edbdb146105525780639ea03ccb1461055f578063a6f2ae3a14610581578063a9059cbb1461058b578063ab6ad452146105ac578063b4c2aaee146105ce578063b4d1c485146105f0578063ba730e5314610602578063bd95758514610627578063c039daf614610639578063c12736761461065b578063c7ff15841461067d578063cab9c32a146106a1578063cdd3574a146106b9578063d34b1537146106db578063dd62ed3e146106ff578063deb83bcc1461055f578063e4849b3214610755575b6102055b6003544310156101d35760006000fd5b60006007541180156101eb575062093a806007540142115b156101f65760006000fd5b61020160001961076a565b5b5b565b005b341561020f57fe5b610217610a12565b60408051602080825283518183015283519192839290830191850190808383821561025d575b80518252602083111561025d57601f19909201916020918201910161023d565b505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029f57fe5b6102aa600435610a49565b6040805192835260208301919091528051918290030190f35b34156102cb57fe5b610205600160a060020a0360043516602435610cb7565b005b34156102ec57fe5b6102f4610d57565b60408051918252519081900360200190f35b341561030e57fe5b610205600435610d5d565b005b341561032357fe5b61032b610e7c565b60408051600160a060020a039092168252519081900360200190f35b341561034f57fe5b6102f4610e8b565b60408051918252519081900360200190f35b341561037157fe5b610205600160a060020a0360043581169060243516604435610e91565b005b341561039857fe5b6102f4610fb5565b60408051918252519081900360200190f35b34156103ba57fe5b6102f4610fba565b60408051918252519081900360200190f35b34156103dc57fe5b6102f4610fbf565b60408051918252519081900360200190f35b34156103fe57fe5b61032b610fc5565b60408051600160a060020a039092168252519081900360200190f35b341561042a57fe5b6102f4610fd4565b60408051918252519081900360200190f35b341561044c57fe5b610205610fd9565b005b341561045e57fe5b6102f4600160a060020a0360043516611070565b60408051918252519081900360200190f35b341561048c57fe5b61032b61108f565b60408051600160a060020a039092168252519081900360200190f35b34156104b857fe5b61020561109e565b005b34156104ca57fe5b610217611161565b60408051602080825283518183015283519192839290830191850190808383821561025d575b80518252602083111561025d57601f19909201916020918201910161023d565b505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020560043561076a565b005b341561056757fe5b6102f4611198565b60408051918252519081900360200190f35b6102056101c3565b005b341561059357fe5b610205600160a060020a03600435166024356111e1565b005b34156105b457fe5b6102f46112af565b60408051918252519081900360200190f35b34156105d657fe5b6102f46112b5565b60408051918252519081900360200190f35b34156105f857fe5b6102056112c0565b005b341561060a57fe5b6102f4600435611395565b60408051918252519081900360200190f35b341561062f57fe5b6102056114eb565b005b341561064157fe5b6102f46115b3565b60408051918252519081900360200190f35b341561066357fe5b6102f46115ba565b60408051918252519081900360200190f35b341561068557fe5b61068d6115c0565b604080519115158252519081900360200190f35b34156106a957fe5b6102056004356024356115c9565b005b34156106c157fe5b6102f461178d565b60408051918252519081900360200190f35b34156106e357fe5b61068d611793565b604080519115158252519081900360200190f35b341561070757fe5b6102f4600160a060020a03600435811690602435166117a3565b60408051918252519081900360200190f35b341561056757fe5b6102f4611198565b60408051918252519081900360200190f35b341561075d57fe5b6102056004356117d7565b005b6000600060006003544310156107805760006000fd5b6000600754118015610798575062093a806007540142115b156107a35760006000fd5b66016bcc41e900003410156107b85760006000fd5b600b5460ff16156107c557fe5b6107ce34610a49565b909350905082151561080b57604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561080657fe5b610a09565b61081b818463ffffffff61181a16565b91508382111561085657604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561080657fe5b610a09565b66016bcc41e9000082101561086757fe5b3481111561087157fe5b600054610884908463ffffffff61183716565b6000908155600160a060020a0333168152600160205260409020546108af908463ffffffff61183716565b33600160a060020a031660009081526001602052604090205560065460a060020a900460ff161580156108e757506298968060005410155b15610949576006805474ff0000000000000000000000000000000000000000191660a060020a1790554260085561093f6032610933600160a060020a033016313463ffffffff61185316565b9063ffffffff61181a16565b6009805490910190555b60065460a060020a900460ff16156109765761096c81603263ffffffff61181a16565b6009805490910190555b60005460408051858152602081018490528082019290925251600160a060020a033316917fc5620ded95cbb91682a998bc6df1a310612e51388b47c88b6dfb3f00d8248ddb919081900360600190a280341115610a0957600160a060020a0333166108fc6109ea348463ffffffff61185316565b6040518115909202916000818181858888f193505050501515610a0957fe5b5b5b5b50505050565b60408051808201909152600e81527f416473686172657320546f6b656e000000000000000000000000000000000000602082015281565b6000600060006000600060006000600060006000629896806000541015610b0f57610a818b66016bcc41e9000063ffffffff61181a16565b945062989680610a9c8660005461183790919063ffffffff16565b11610ac25784610ab98166016bcc41e9000063ffffffff61186c16565b99509950610caa565b600054610ad990629896809063ffffffff61185316565b9750610b02610af58966016bcc41e9000063ffffffff61186c16565b8c9063ffffffff61185316565b9550629896809650610b1c565b600097508a955060005496505b610b466298968061093366016bcc41e900008a63ffffffff61186c16565b9063ffffffff61181a16565b9350610b8d610b6e856109338960088c0263ffffffff61186c16565b9063ffffffff61181a16565b610b8160028a028063ffffffff61186c16565b9063ffffffff61183716565b9250610bbc600261093389600202610ba48761189b565b9063ffffffff61185316565b9063ffffffff61181a16565b9150610c0c6002610933610bf3629896808260018d89010166016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b879063ffffffff61183716565b9063ffffffff61181a16565b90508086811515610c1957fe5b049150610c6a6002610933610bf3629896808260018d89010166016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b879063ffffffff61183716565b9063ffffffff61181a16565b9050610ca2610c868966016bcc41e9000063ffffffff61186c16565b610b81848463ffffffff61186c16565b9063ffffffff61183716565b8883019a5098505b5050505050505050915091565b8015801590610cea5750600160a060020a0333811660009081526002602090815260408083209386168352929052205415155b15610cf55760006000fd5b600160a060020a03338116600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5050565b600a5481565b60045433600160a060020a03908116911614801590610d8b575060055433600160a060020a03908116911614155b15610d965760006000fd5b600354431015610da65760006000fd5b6000600754118015610dbe575062093a806007540142115b15610dc95760006000fd5b60206024361015610dda5760006000fd5b600954821115610dea5760006000fd5b60065460a060020a900460ff161515610dff57fe5b600980548390039055600a8054830190556040805183815290517f879a83fc17750905b8aef4ef85e6701b84a50e15d4463dc3c2e7fb0f9dbcf75d9181900360200190a1600654604051600160a060020a039091169083156108fc029084906000818181858888f193505050501515610d5357fe5b5b5b505b5b50565b600654600160a060020a031681565b60005481565b600060606064361015610ea45760006000fd5b600160a060020a038086166000908152600260209081526040808320338516845282528083205493881683526001909152902054909250610eeb908463ffffffff61183716565b600160a060020a038086166000908152600160205260408082209390935590871681522054610f20908463ffffffff61185316565b600160a060020a038616600090815260016020526040902055610f49828463ffffffff61185316565b600160a060020a038087166000818152600260209081526040808320338616845282529182902094909455805187815290519288169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35b5b5050505050565b600081565b603281565b60075481565b600554600160a060020a031681565b606481565b60045433600160a060020a03908116911614801590611007575060055433600160a060020a03908116911614155b156110125760006000fd5b6003544310156110225760006000fd5b600060075411801561103a575062093a806007540142115b156110455760006000fd5b60065460a060020a900460ff161561105957fe5b600b805460ff19811660ff909116151790555b5b5b565b600160a060020a0381166000908152600160205260409020545b919050565b600454600160a060020a031681565b60045433600160a060020a039081169116148015906110cc575060055433600160a060020a03908116911614155b156110d75760006000fd5b60006007541180156110ef575062093a806007540142115b15156110f757fe5b604080516001815290517fba57225df0fc3a1a33e9e3d3b2c5393bb165aecc4a9e348fb7e8c5b0f45dd99b9181900360200190a1600654604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050151561020157fe5b5b5b565b60408051808201909152600481527f4144535400000000000000000000000000000000000000000000000000000000602082015281565b62093a8081565b6003544310156101d35760006000fd5b60006007541180156101eb575062093a806007540142115b156101f65760006000fd5b61020160001961076a565b5b5b565b604060443610156111f25760006000fd5b600160a060020a03331660009081526001602052604090205461121b908363ffffffff61185316565b600160a060020a033381166000908152600160205260408082209390935590851681522054611250908363ffffffff61183716565b600160a060020a038085166000818152600160209081526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5b505050565b60095481565b66016bcc41e9000081565b60045460009033600160a060020a039081169116148015906112f1575060055433600160a060020a03908116911614155b156112fc5760006000fd5b60035443101561130c5760006000fd5b6000600754118015611324575062093a806007540142115b1561132f5760006000fd5b60065460a060020a900460ff16151561134457fe5b60085442101561135057fe5b611369606461093361190d565b9063ffffffff61181a16565b60098054820190559050600061137d61190d565b1161138457fe5b6008805462093a800190555b5b5b50565b6000600060006000600060006000629896806000541115156113c2578766016bcc41e900000296506114e0565b60005462989680906113da908a63ffffffff61185316565b1015611405576000546113f3908963ffffffff61185316565b6298968003955062989680945061141f565b6000805490965061141c908963ffffffff61185316565b94505b858803935061144e629896806109338766016bcc41e9000063ffffffff61186c16565b9063ffffffff61181a16565b92506114826298968061093366016bcc41e9000060005460010161186c90919063ffffffff16565b9063ffffffff61181a16565b91506114a56002610933858563ffffffff61183716565b9063ffffffff61181a16565b90506114dd6114c18766016bcc41e9000063ffffffff61186c16565b610b81838763ffffffff61186c16565b9063ffffffff61183716565b96505b505050505050919050565b60045433600160a060020a03908116911614801590611519575060055433600160a060020a03908116911614155b156115245760006000fd5b6003544310156115345760006000fd5b600060075411801561154c575062093a806007540142115b156115575760006000fd5b60065460a060020a900460ff16151561156c57fe5b6007541561157657fe5b42600755604080516000815290517fba57225df0fc3a1a33e9e3d3b2c5393bb165aecc4a9e348fb7e8c5b0f45dd99b9181900360200190a15b5b5b565b6298968081565b60085481565b600b5460ff1681565b600060006003544310156115dd5760006000fd5b60006007541180156115f5575062093a806007540142115b156116005760006000fd5b6000841161160e5760006000fd5b600160a060020a0333166000908152600160205260409020548490101561163157fe5b61163a84611395565b915061164c828563ffffffff61181a16565b905066016bcc41e9000081101561165f57fe5b60065460a060020a900460ff161561169a5761168281603263ffffffff61181a16565b900361169582603263ffffffff61181a16565b820391505b828110156116a757610a09565b600160a060020a033016318211156116bb57fe5b6000546116ce908563ffffffff61185316565b6000908155600160a060020a0333168152600160205260409020546116f9908563ffffffff61185316565b600160a060020a0333166000818152600160209081526040808320949094559054835188815291820186905281840152915190917f3871b69498aaad3449bcd3d955642c834792b1e823c5e12a8de3130f139937ff919081900360600190a2604051600160a060020a0333169083156108fc029084906000818181858888f193505050501515610a0957fe5b5b5b50505050565b60035481565b60065460a060020a900460ff1681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b62093a8081565b6003544310156117e75760006000fd5b60006007541180156117ff575062093a806007540142115b1561180a5760006000fd5b610e788160006115c9565b5b5b50565b60006000828481151561182957fe5b0490508091505b5092915050565b600082820161184884821015611934565b8091505b5092915050565b600061186183831115611934565b508082035b92915050565b600082820261184884158061188b575083858381151561188857fe5b04145b611934565b8091505b5092915050565b600080808315156118af5760009250611906565b6002845b046001019150600282858115156118c657fe5b0483018115156118d257fe5b0490505b8181101561190257809150600282858115156118ee57fe5b0483018115156118fa57fe5b0490506118d6565b8192505b5050919050565b600061192e60095430600160a060020a03163161185390919063ffffffff16565b90505b90565b801515610e785760006000fd5b5b505600a165627a7a72305820af9623b560cc5be9532279843d39a290d62fb8422ed5d6f9eba3d7a8909bc8bf0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004ffadb8bc4d364af060a46d041592bc98acb1c15000000000000000000000000dbc78ef6d1b3e8ef8567b3b773c276dc225f42b5000000000000000000000000ef82b51cd11b2cd198e7d9f7c75a486dd072194c00000000000000000000000000000000000000000000000000000000003cd700
-----Decoded View---------------
Arg [0] : _owner1 (address): 0x4FfAdb8BC4d364Af060a46d041592bC98acb1C15
Arg [1] : _owner2 (address): 0xdbC78ef6D1b3e8EF8567B3B773C276Dc225f42b5
Arg [2] : _withdrawAddress (address): 0xeF82b51cd11b2Cd198E7D9F7C75a486Dd072194C
Arg [3] : _crowdsaleStartBlock (uint256): 3987200
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ffadb8bc4d364af060a46d041592bc98acb1c15
Arg [1] : 000000000000000000000000dbc78ef6d1b3e8ef8567b3b773c276dc225f42b5
Arg [2] : 000000000000000000000000ef82b51cd11b2cd198e7d9f7c75a486dd072194c
Arg [3] : 00000000000000000000000000000000000000000000000000000000003cd700
Swarm Source
bzzr://af9623b560cc5be9532279843d39a290d62fb8422ed5d6f9eba3d7a8909bc8bf
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)