More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,401 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 5244524 | 2443 days ago | IN | 1.1 ETH | 0.0000252 | ||||
Transfer | 5109101 | 2467 days ago | IN | 10.78 ETH | 0.0197864 | ||||
Transfer | 5104669 | 2467 days ago | IN | 6.5 ETH | 0.00134015 | ||||
Transfer | 5104669 | 2467 days ago | IN | 6.5 ETH | 0.0000536 | ||||
Transfer | 5104668 | 2467 days ago | IN | 1.09 ETH | 0.0000268 | ||||
Transfer | 5104668 | 2467 days ago | IN | 6 ETH | 0.0000268 | ||||
Transfer | 5104591 | 2467 days ago | IN | 1.2 ETH | 0.0000268 | ||||
Transfer | 5104434 | 2467 days ago | IN | 4 ETH | 0.00265349 | ||||
Transfer | 5104417 | 2467 days ago | IN | 4 ETH | 0.002079 | ||||
Transfer | 5104393 | 2467 days ago | IN | 4 ETH | 0.000924 | ||||
Transfer | 5103601 | 2467 days ago | IN | 5.7 ETH | 0.0000268 | ||||
Transfer | 5103425 | 2467 days ago | IN | 1.09 ETH | 0.00002948 | ||||
Transfer | 5103225 | 2467 days ago | IN | 10 ETH | 0.00214424 | ||||
Transfer | 5103189 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103187 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103185 | 2467 days ago | IN | 2.3 ETH | 0.0000268 | ||||
Transfer | 5103178 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103176 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103170 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103169 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103163 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103159 | 2467 days ago | IN | 1.2 ETH | 0.00058966 | ||||
Transfer | 5103157 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103137 | 2467 days ago | IN | 10.78865033 ETH | 0.00056286 | ||||
Transfer | 5103135 | 2467 days ago | IN | 1.1 ETH | 0.00058966 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5102996 | 2468 days ago | 1.1 ETH | ||||
5102996 | 2468 days ago | 3 ETH | ||||
5102996 | 2468 days ago | 1.2 ETH | ||||
5102996 | 2468 days ago | 2 ETH | ||||
5102996 | 2468 days ago | 3.2 ETH | ||||
5102996 | 2468 days ago | 2 ETH | ||||
5102996 | 2468 days ago | 1.5 ETH | ||||
5102996 | 2468 days ago | 8 ETH | ||||
5102996 | 2468 days ago | 1.13360703 ETH | ||||
5102996 | 2468 days ago | 3 ETH | ||||
5102996 | 2468 days ago | 10.788 ETH | ||||
5102995 | 2468 days ago | 2.7 ETH | ||||
5102995 | 2468 days ago | 1.2 ETH | ||||
5102995 | 2468 days ago | 3.41 ETH | ||||
5102995 | 2468 days ago | 5 ETH | ||||
5102995 | 2468 days ago | 5 ETH | ||||
5102995 | 2468 days ago | 4.402 ETH | ||||
5102995 | 2468 days ago | 2 ETH | ||||
5102995 | 2468 days ago | 1.1 ETH | ||||
5102995 | 2468 days ago | 1.5 ETH | ||||
5102995 | 2468 days ago | 10 ETH | ||||
5102995 | 2468 days ago | 2 ETH | ||||
5102995 | 2468 days ago | 1.1 ETH | ||||
5102995 | 2468 days ago | 3.2365951 ETH | ||||
5102995 | 2468 days ago | 10 ETH |
Loading...
Loading
Contract Name:
BftCrowdsale
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-15 */ pragma solidity ^0.4.18; /** * @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); } contract DetailedERC20 is ERC20 { string public name; string public symbol; uint8 public decimals; function DetailedERC20(string _name, string _symbol, uint8 _decimals) public { name = _name; symbol = _symbol; decimals = _decimals; } } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @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, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard 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 ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal 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 uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that 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 uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @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. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; Unpause(); } } /** * @title Mintable token * @dev Simple ERC20 Token example, with mintable token creation * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol */ contract MintableToken is StandardToken, Ownable { event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(address(0), _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() onlyOwner canMint public returns (bool) { mintingFinished = true; MintFinished(); return true; } } /** * @title Capped token * @dev Mintable token with a token cap. */ contract CappedToken is MintableToken { uint256 public cap; function CappedToken(uint256 _cap) public { require(_cap > 0); cap = _cap; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { require(totalSupply.add(_amount) <= cap); return super.mint(_to, _amount); } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { require(_value <= balances[msg.sender]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply = totalSupply.sub(_value); Burn(burner, _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) { if (a == 0) { return 0; } uint256 c = a * b; assert(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 Crowdsale * @dev Crowdsale is a base contract for managing a token crowdsale. * Crowdsales have a start and end timestamps, where investors can make * token purchases and the crowdsale will assign them tokens based * on a token per ETH rate. Funds collected are forwarded to a wallet * as they arrive. */ contract Crowdsale { using SafeMath for uint256; // The token being sold MintableToken public token; // start and end timestamps where investments are allowed (both inclusive) uint256 public startTime; uint256 public endTime; // address where funds are collected address public wallet; // how many token units a buyer gets per wei uint256 public rate; // amount of raised money in wei uint256 public weiRaised; /** * event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public { require(_startTime >= now); require(_endTime >= _startTime); require(_rate > 0); require(_wallet != address(0)); token = createTokenContract(); startTime = _startTime; endTime = _endTime; rate = _rate; wallet = _wallet; } // creates the token to be sold. // override this method to have crowdsale of a specific mintable token. function createTokenContract() internal returns (MintableToken) { return new MintableToken(); } // fallback function can be used to buy tokens function () external payable { buyTokens(msg.sender); } // low level token purchase function function buyTokens(address beneficiary) public payable { require(beneficiary != address(0)); require(validPurchase()); uint256 weiAmount = msg.value; // calculate token amount to be created uint256 tokens = weiAmount.mul(rate); // update state weiRaised = weiRaised.add(weiAmount); token.mint(beneficiary, tokens); TokenPurchase(msg.sender, beneficiary, weiAmount, tokens); forwardFunds(); } // send ether to the fund collection wallet // override to create custom fund forwarding mechanisms function forwardFunds() internal { wallet.transfer(msg.value); } // @return true if the transaction can buy tokens function validPurchase() internal view returns (bool) { bool withinPeriod = now >= startTime && now <= endTime; bool nonZeroPurchase = msg.value != 0; return withinPeriod && nonZeroPurchase; } // @return true if crowdsale event has ended function hasEnded() public view returns (bool) { return now > endTime; } } /** * @title CappedCrowdsale * @dev Extension of Crowdsale with a max amount of funds raised */ contract CappedCrowdsale is Crowdsale { using SafeMath for uint256; uint256 public cap; function CappedCrowdsale(uint256 _cap) public { require(_cap > 0); cap = _cap; } // overriding Crowdsale#validPurchase to add extra cap logic // @return true if investors can buy at the moment function validPurchase() internal view returns (bool) { bool withinCap = weiRaised.add(msg.value) <= cap; return super.validPurchase() && withinCap; } // overriding Crowdsale#hasEnded to add cap logic // @return true if crowdsale event has ended function hasEnded() public view returns (bool) { bool capReached = weiRaised >= cap; return super.hasEnded() || capReached; } } /** * @title Pausable token * * @dev StandardToken modified with pausable transfers. **/ contract PausableToken is StandardToken, Pausable { function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) { return super.transferFrom(_from, _to, _value); } function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) { return super.approve(_spender, _value); } function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) { return super.increaseApproval(_spender, _addedValue); } function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) { return super.decreaseApproval(_spender, _subtractedValue); } } contract BftToken is DetailedERC20, CappedToken, BurnableToken, PausableToken { CappedCrowdsale public crowdsale; function BftToken( uint256 _tokenCap, uint8 _decimals, CappedCrowdsale _crowdsale ) DetailedERC20("BF Token", "BFT", _decimals) CappedToken(_tokenCap) public { crowdsale = _crowdsale; } // ---------------------------------------------------------------------------------------------------------------- // the following is the functionality to upgrade this token smart contract to a new one MintableToken public newToken = MintableToken(0x0); event LogRedeem(address beneficiary, uint256 amount); modifier hasUpgrade() { require(newToken != MintableToken(0x0)); _; } function upgrade(MintableToken _newToken) onlyOwner public { newToken = _newToken; } // overriding BurnableToken#burn to make disable it for public use function burn(uint256 _value) public { revert(); _value = _value; // to silence compiler warning } function redeem() hasUpgrade public { var balance = balanceOf(msg.sender); // burn the tokens in this token smart contract super.burn(balance); // mint tokens in the new token smart contract require(newToken.mint(msg.sender, balance)); LogRedeem(msg.sender, balance); } // ---------------------------------------------------------------------------------------------------------------- // we override the token transfer functions to block transfers before startTransfersDate timestamp modifier canDoTransfers() { require(hasCrowdsaleFinished()); _; } function hasCrowdsaleFinished() view public returns(bool) { return crowdsale.hasEnded(); } function transfer(address _to, uint256 _value) public canDoTransfers returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public canDoTransfers returns (bool) { return super.transferFrom(_from, _to, _value); } function approve(address _spender, uint256 _value) public canDoTransfers returns (bool) { return super.approve(_spender, _value); } function increaseApproval(address _spender, uint _addedValue) public canDoTransfers returns (bool success) { return super.increaseApproval(_spender, _addedValue); } function decreaseApproval(address _spender, uint _subtractedValue) public canDoTransfers returns (bool success) { return super.decreaseApproval(_spender, _subtractedValue); } // ---------------------------------------------------------------------------------------------------------------- // functionality to change the token ticker - in case of conflict function changeSymbol(string _symbol) onlyOwner public { symbol = _symbol; } function changeName(string _name) onlyOwner public { name = _name; } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { function safeTransfer(ERC20Basic token, address to, uint256 value) internal { assert(token.transfer(to, value)); } function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal { assert(token.transferFrom(from, to, value)); } function safeApprove(ERC20 token, address spender, uint256 value) internal { assert(token.approve(spender, value)); } } /** * @title TokenTimelock * @dev TokenTimelock is a token holder contract that will allow a * beneficiary to extract the tokens after a given release time */ contract TokenTimelock { using SafeERC20 for ERC20Basic; // ERC20 basic token contract being held ERC20Basic public token; // beneficiary of tokens after they are released address public beneficiary; // timestamp when token release is enabled uint256 public releaseTime; function TokenTimelock(ERC20Basic _token, address _beneficiary, uint256 _releaseTime) public { require(_releaseTime > now); token = _token; beneficiary = _beneficiary; releaseTime = _releaseTime; } /** * @notice Transfers tokens held by timelock to beneficiary. */ function release() public { require(now >= releaseTime); uint256 amount = token.balanceOf(this); require(amount > 0); token.safeTransfer(beneficiary, amount); } } contract BftCrowdsale is CappedCrowdsale, Pausable { uint8 public constant tokenDecimals = 18; uint256 public constant etherInWei = 10**uint256(tokenDecimals); uint256 public constant tokenCap = 1000000000 * etherInWei; uint256 public SALE_CAP_USD; uint256 public BUYER_CAP_LOW_USD; uint256 public BUYER_CAP_HIGH_USD; uint256 public constant PRICE_MULTIPLIER = 100; uint256 public constant TOKENS_PER_USD = 10; uint256 public etherPrice = PRICE_MULTIPLIER; uint256 public buyerCapLowEther = etherInWei; uint256 public buyerCapHighEther = etherInWei; uint256 public saleHardCapEther = etherInWei; uint256 public mintRate = TOKENS_PER_USD; address public preSaleBfPlatform; address public company; address public rewardPool; address public shareholders; address public tokenSaleCosts; // smart contracts that will lock tokens for a pre-defined time TokenTimelock public companyHolding2y; TokenTimelock public shareholdersHolding1y; // address permissioned to whitelist public sale addresses mapping(address => bool) whitelist; mapping(address => bool) operators; event LogOperatorAdd(address newOperator); event LogOperatorRem(address newOperator); modifier onlyOperator() { require(operators[msg.sender]); _; } modifier onlyWhitelisted(address _address) { require(whitelist[_address]); _; } function BftCrowdsale( uint256 _startTime, uint256 _endTime, uint256 _etherPrice, address _wallet, // addresses with pre-minted tokens address _preSaleBfPlatform, address _company, address _rewardPool, address _shareholders, address _tokenSaleCosts, // owner of the whitelist function address _operator, address _admin, uint256 _saleCapUsd, uint256 _buyerCapLowUsd, uint256 _buyerCapHighUsd ) CappedCrowdsale(saleHardCapEther) Crowdsale(_startTime, _endTime, mintRate, _wallet) public { require(_preSaleBfPlatform != address(0x0)); require(_company != address(0x0)); require(_rewardPool != address(0x0)); require(_shareholders != address(0x0)); require(_tokenSaleCosts != address(0x0)); require(_operator != address(0x0)); SALE_CAP_USD = _saleCapUsd; BUYER_CAP_LOW_USD = _buyerCapLowUsd; BUYER_CAP_HIGH_USD = _buyerCapHighUsd; preSaleBfPlatform = _preSaleBfPlatform; company = _company; rewardPool = _rewardPool; shareholders = _shareholders; tokenSaleCosts = _tokenSaleCosts; addOperator(_operator); updateEtherPrice(_etherPrice); createHoldings(); preMintTokens(); // transfer ownership the the admin multi-sig transferOwnership(_admin); } function updateEtherPrice(uint256 _price) onlyOwner public { require(_price > 0); require(now < startTime); etherPrice = _price; buyerCapLowEther = BUYER_CAP_LOW_USD.mul(etherInWei).mul(PRICE_MULTIPLIER).div(etherPrice); buyerCapHighEther = BUYER_CAP_HIGH_USD.mul(etherInWei).mul(PRICE_MULTIPLIER).div(etherPrice); saleHardCapEther = SALE_CAP_USD.mul(etherInWei).mul(PRICE_MULTIPLIER).div(etherPrice); mintRate = TOKENS_PER_USD.mul(etherPrice).div(PRICE_MULTIPLIER); // update vars on parent contracts cap = saleHardCapEther; rate = mintRate; } function createHoldings() internal { companyHolding2y = new TokenTimelock(token, company, startTime+2 years); shareholdersHolding1y = new TokenTimelock(token, shareholders, startTime+1 years); } function preMintTokens() internal { token.mint(preSaleBfPlatform, 300000000 * etherInWei); token.mint(companyHolding2y, 300000000 * etherInWei); token.mint(rewardPool, 200000000 * etherInWei); token.mint(shareholdersHolding1y, 100000000 * etherInWei); token.mint(tokenSaleCosts, 70000000 * etherInWei); } function checkSaleEnded() internal { // if no further purchases are possible due to lower buyer cap if(saleHardCapEther.sub(weiRaised) < buyerCapLowEther) { token.mint(rewardPool, tokenCap.sub(token.totalSupply())); } } // overriding CappedCrowdsale#validPurchase to add extra low/high limits logic // @return true if investors can buy at the moment function validPurchase() whenNotPaused internal view returns (bool) { bool aboveLowBuyerCap = (msg.value >= buyerCapLowEther); bool underMaxBuyerCap = (msg.value <= buyerCapHighEther); return super.validPurchase() && aboveLowBuyerCap && underMaxBuyerCap; } // overriding Crowdsale#hasEnded to add token cap logic // @return true if crowdsale event has ended function hasEnded() public view returns (bool) { bool tokenCapReached = token.totalSupply() == tokenCap; return super.hasEnded() || tokenCapReached; } function buyTokens(address beneficiary) onlyWhitelisted(beneficiary) whenNotPaused public payable { require(token.balanceOf(beneficiary)==0); super.buyTokens(beneficiary); checkSaleEnded(); } // creates the token to be sold. // override this method to have crowdsale of a specific mintable token. function createTokenContract() internal returns (MintableToken) { return new BftToken(tokenCap, tokenDecimals, this); } function addWhitelist(address[] beneficiaries) onlyOperator public { for (uint i = 0; i < beneficiaries.length; i++) { whitelist[beneficiaries[i]] = true; } } function remWhitelist(address[] beneficiaries) onlyOperator public { for (uint i = 0; i < beneficiaries.length; i++) { whitelist[beneficiaries[i]] = false; } } function isWhitelisted(address beneficiary) view public returns(bool) { return whitelist[beneficiary]; } function addOperator(address _operator) onlyOwner public { operators[_operator] = true; LogOperatorAdd(_operator); } function remOperator(address _operator) onlyOwner public { operators[_operator] = false; LogOperatorAdd(_operator); } function isOperator(address _operator) view public returns(bool) { return operators[_operator]; } function transferTokenOwnership(address _newOwner) onlyOwner public { // only allow transfer at the end of the sale require(hasEnded()); // stop the minting process on the token as we only allow the crowdsale to mint token.finishMinting(); token.transferOwnership(_newOwner); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_price","type":"uint256"}],"name":"updateEtherPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_MULTIPLIER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"companyHolding2y","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiaries","type":"address[]"}],"name":"remWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"shareholders","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SALE_CAP_USD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"beneficiary","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPool","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"company","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleHardCapEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyerCapLowEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"remOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BUYER_CAP_LOW_USD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BUYER_CAP_HIGH_USD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleCosts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyerCapHighEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_PER_USD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSaleBfPlatform","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"shareholdersHolding1y","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiaries","type":"address[]"}],"name":"addWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_etherPrice","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_preSaleBfPlatform","type":"address"},{"name":"_company","type":"address"},{"name":"_rewardPool","type":"address"},{"name":"_shareholders","type":"address"},{"name":"_tokenSaleCosts","type":"address"},{"name":"_operator","type":"address"},{"name":"_admin","type":"address"},{"name":"_saleCapUsd","type":"uint256"},{"name":"_buyerCapLowUsd","type":"uint256"},{"name":"_buyerCapHighUsd","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"}],"name":"LogOperatorAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"}],"name":"LogOperatorRem","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]
Contract Creation Code
60606040526007805460a060020a60ff02191690556064600b55670de0b6b3a7640000600c819055600d819055600e55600a600f5534156200004057600080fd5b6040516101c080620053c68339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051600e54600f5491935091508f908f908e42841015620000ce57600080fd5b83831015620000dc57600080fd5b60008211620000ea57600080fd5b600160a060020a03811615156200010057600080fd5b620001186401000000006200134b620002f582021704565b60008054600160a060020a0319908116600160a060020a039384161782556001969096556002949094556004929092556003805490941691161790915581116200016157600080fd5b60065560078054600160a060020a03191633600160a060020a03908116919091179091558a1615156200019357600080fd5b600160a060020a0389161515620001a957600080fd5b600160a060020a0388161515620001bf57600080fd5b600160a060020a0387161515620001d557600080fd5b600160a060020a0386161515620001eb57600080fd5b600160a060020a03851615156200020157600080fd5b60088390556009829055600a81905560108054600160a060020a0319908116600160a060020a038d8116919091179092556011805482168c84161790556012805482168b84161790556013805482168a8416179055601480549091169188169190911790556200027f8564010000000062000350810262000cb91704565b620002988c640100000000620007b7620003d082021704565b620002b0640100000000620013a66200051982021704565b620002c8640100000000620014b66200060f82021704565b620002e18464010000000062000eba6200096382021704565b505050505050505050505050505062000a67565b60006b033b2e3c9fd0803ce80000006012306200031162000a45565b92835260ff9091166020830152600160a060020a031660408083019190915260609091019051809103906000f08015156200034b57600080fd5b905090565b60075433600160a060020a039081169116146200036c57600080fd5b600160a060020a03811660009081526018602052604090819020805460ff191660011790557e3958e2aa90784f5a5cdb7acb904d5dd9810fb33835111ce7196584bbc9a63b90829051600160a060020a03909116815260200160405180910390a150565b60075433600160a060020a03908116911614620003ec57600080fd5b60008111620003fa57600080fd5b60015442106200040957600080fd5b600b8190556009546200046c90829062000457906064906200044290670de0b6b3a7640000640100000000620011c8620009f382021704565b90640100000000620011c8620009f382021704565b906401000000006200120262000a2d82021704565b600c55600b54600a54620004a5919062000457906064906200044290670de0b6b3a7640000640100000000620011c8620009f382021704565b600d55600b54600854620004de919062000457906064906200044290670de0b6b3a7640000640100000000620011c8620009f382021704565b600e55600b5462000508906064906200045790600a90640100000000620011c8620009f382021704565b600f819055600e5460065560045550565b600054601154600154600160a060020a0392831692909116906303c26700016200054262000a56565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f08015156200057a57600080fd5b60158054600160a060020a031916600160a060020a039283161790556000546013546001549183169216906301e1338001620005b562000a56565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f0801515620005ed57600080fd5b60168054600160a060020a031916600160a060020a0392909216919091179055565b60008054601054600160a060020a03918216926340c10f1992909116906af8277896582678ac00000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200069d57600080fd5b6102c65a03f11515620006af57600080fd5b5050506040518051505060008054601554600160a060020a03918216926340c10f1992909116906af8277896582678ac00000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200074757600080fd5b6102c65a03f115156200075957600080fd5b5050506040518051505060008054601254600160a060020a03918216926340c10f1992909116906aa56fa5b99019a5c800000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620007f157600080fd5b6102c65a03f115156200080357600080fd5b5050506040518051505060008054601654600160a060020a03918216926340c10f1992909116906a52b7d2dcc80cd2e400000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200089b57600080fd5b6102c65a03f11515620008ad57600080fd5b5050506040518051505060008054601454600160a060020a03918216926340c10f1992909116906a39e7139a8c08fa0600000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200094557600080fd5b6102c65a03f115156200095757600080fd5b50505060405180515050565b60075433600160a060020a039081169116146200097f57600080fd5b600160a060020a03811615156200099557600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360078054600160a060020a031916600160a060020a0392909216919091179055565b60008083151562000a08576000915062000a26565b5082820282848281151562000a1957fe5b041462000a2257fe5b8091505b5092915050565b600080828481151562000a3c57fe5b04949350505050565b6040516115ee8062003afd83390190565b6040516102db80620050eb83390190565b6130868062000a776000396000f300606060405260043610620002155763ffffffff60e060020a6000350416630dcec63d811462000222578063113990b8146200023b578063130d04d014620002635780631dd49cae146200029557806321e6b53d14620002e75780632c4e722e14620003095780633197cbb6146200031f578063355274ea14620003355780633723bc0e146200034b5780633994bce414620003615780633af32abf14620003775780633b97e85614620003ad5780633f4ba83a14620003d95780634042b66f14620003ef578063521eb27314620004055780635c975abb146200041b57806366666aa914620004315780636904c94d14620004475780636d70f7ae146200045d57806372a7019c146200047f578063732fe2ff146200049557806378e9792514620004ab5780638456cb5914620004c15780638da5cb5b14620004d75780638e78f0f214620004ed5780639870d7fe146200050f5780639a5eb28f14620005315780639e3079551462000547578063a24c9737146200055d578063ada06dac1462000573578063be25d0ce1462000589578063ca0dcf16146200059f578063d5356b7d14620005b5578063d73ff0db14620005cb578063d7815ba414620005e1578063dd54291b14620005f7578063e18c8cf9146200060d578063ec8ac4d81462000623578063ecb70fb71462000639578063edac985b146200064f578063f2fde38b14620006a1578063fc0c546a14620006c3575b6200022033620006d9565b005b34156200022e57600080fd5b62000220600435620007b7565b34156200024757600080fd5b62000251620008d0565b60405190815260200160405180910390f35b34156200026f57600080fd5b62000279620008d5565b604051600160a060020a03909116815260200160405180910390f35b3415620002a157600080fd5b620002206004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650620008e495505050505050565b3415620002f357600080fd5b62000220600160a060020a036004351662000968565b34156200031557600080fd5b6200025162000a69565b34156200032b57600080fd5b6200025162000a6f565b34156200034157600080fd5b6200025162000a75565b34156200035757600080fd5b6200027962000a7b565b34156200036d57600080fd5b6200025162000a8a565b34156200038357600080fd5b62000399600160a060020a036004351662000a90565b604051901515815260200160405180910390f35b3415620003b957600080fd5b620003c362000aae565b60405160ff909116815260200160405180910390f35b3415620003e557600080fd5b6200022062000ab3565b3415620003fb57600080fd5b6200025162000b34565b34156200041157600080fd5b6200027962000b3a565b34156200042757600080fd5b6200039962000b49565b34156200043d57600080fd5b6200027962000b59565b34156200045357600080fd5b6200027962000b68565b34156200046957600080fd5b62000399600160a060020a036004351662000b77565b34156200048b57600080fd5b6200025162000b95565b3415620004a157600080fd5b6200025162000b9b565b3415620004b757600080fd5b6200025162000ba1565b3415620004cd57600080fd5b6200022062000ba7565b3415620004e357600080fd5b6200027962000c2d565b3415620004f957600080fd5b62000220600160a060020a036004351662000c3c565b34156200051b57600080fd5b62000220600160a060020a036004351662000cb9565b34156200053d57600080fd5b6200025162000d39565b34156200055357600080fd5b6200025162000d3f565b34156200056957600080fd5b6200025162000d45565b34156200057f57600080fd5b6200027962000d4b565b34156200059557600080fd5b6200025162000d5a565b3415620005ab57600080fd5b6200025162000d60565b3415620005c157600080fd5b6200025162000d66565b3415620005d757600080fd5b6200027962000d6b565b3415620005ed57600080fd5b6200027962000d7a565b34156200060357600080fd5b6200025162000d89565b34156200061957600080fd5b6200025162000d99565b62000220600160a060020a0360043516620006d9565b34156200064557600080fd5b6200039962000da5565b34156200065b57600080fd5b62000220600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965062000e3695505050505050565b3415620006ad57600080fd5b62000220600160a060020a036004351662000eba565b3415620006cf57600080fd5b6200027962000f57565b600160a060020a038116600090815260176020526040902054819060ff1615156200070357600080fd5b60075460a060020a900460ff16156200071b57600080fd5b60008054600160a060020a0316906370a082319084906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156200077757600080fd5b6102c65a03f115156200078957600080fd5b50505060405180511590506200079e57600080fd5b620007a98262000f66565b620007b3620010a6565b5050565b60075433600160a060020a03908116911614620007d357600080fd5b60008111620007e157600080fd5b6001544210620007f057600080fd5b600b8190556009546200083b9082906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b9063ffffffff620011c816565b9063ffffffff6200120216565b600c55600b54600a546200086c91906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b600d55600b546008546200089d91906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b600e55600b54620008bf906064906200082e90600a9063ffffffff620011c816565b600f819055600e5460065560045550565b606481565b601554600160a060020a031681565b600160a060020a03331660009081526018602052604081205460ff1615156200090c57600080fd5b5060005b8151811015620007b3576000601760008484815181106200092d57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010162000910565b60075433600160a060020a039081169116146200098457600080fd5b6200098e62000da5565b15156200099a57600080fd5b60008054600160a060020a031690637d64bcb490604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620009e457600080fd5b6102c65a03f11515620009f657600080fd5b50505060405180515050600054600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151562000a5157600080fd5b6102c65a03f1151562000a6357600080fd5b50505050565b60045481565b60025481565b60065481565b601354600160a060020a031681565b60085481565b600160a060020a031660009081526017602052604090205460ff1690565b601281565b60075433600160a060020a0390811691161462000acf57600080fd5b60075460a060020a900460ff16151562000ae857600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b600354600160a060020a031681565b60075460a060020a900460ff1681565b601254600160a060020a031681565b601154600160a060020a031681565b600160a060020a031660009081526018602052604090205460ff1690565b600e5481565b600c5481565b60015481565b60075433600160a060020a0390811691161462000bc357600080fd5b60075460a060020a900460ff161562000bdb57600080fd5b6007805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600754600160a060020a031681565b60075433600160a060020a0390811691161462000c5857600080fd5b600160a060020a03811660009081526018602052604090819020805460ff191690557e3958e2aa90784f5a5cdb7acb904d5dd9810fb33835111ce7196584bbc9a63b90829051600160a060020a03909116815260200160405180910390a150565b60075433600160a060020a0390811691161462000cd557600080fd5b600160a060020a03811660009081526018602052604090819020805460ff191660011790557e3958e2aa90784f5a5cdb7acb904d5dd9810fb33835111ce7196584bbc9a63b90829051600160a060020a03909116815260200160405180910390a150565b60095481565b600b5481565b600a5481565b601454600160a060020a031681565b600d5481565b600f5481565b600a81565b601054600160a060020a031681565b601654600160a060020a031681565b6b033b2e3c9fd0803ce800000081565b670de0b6b3a764000081565b6000805481906b033b2e3c9fd0803ce800000090600160a060020a03166318160ddd83604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562000dfe57600080fd5b6102c65a03f1151562000e1057600080fd5b5050506040518051905014905062000e276200121a565b8062000e305750805b91505090565b600160a060020a03331660009081526018602052604081205460ff16151562000e5e57600080fd5b5060005b8151811015620007b35760016017600084848151811062000e7f57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010162000e62565b60075433600160a060020a0390811691161462000ed657600080fd5b600160a060020a038116151562000eec57600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080600160a060020a038316151562000f7f57600080fd5b62000f8962001230565b151562000f9557600080fd5b60045434925062000fae90839063ffffffff620011c816565b60055490915062000fc6908363ffffffff6200128416565b60055560008054600160a060020a0316906340c10f1990859084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200102c57600080fd5b6102c65a03f115156200103e57600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3620010a162001294565b505050565b600c54600554600e54620010c09163ffffffff620012c916565b1015620011c65760008054601254600160a060020a03918216926340c10f1992909116906200115c9084906318160ddd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200112757600080fd5b6102c65a03f115156200113957600080fd5b50505060405180516b033b2e3c9fd0803ce8000000915063ffffffff620012c916565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620011a957600080fd5b6102c65a03f11515620011bb57600080fd5b505050604051805150505b565b600080831515620011dd5760009150620011fb565b50828202828482811515620011ee57fe5b0414620011f757fe5b8091505b5092915050565b60008082848115156200121157fe5b04949350505050565b60065460055460009190101562000e27620012dc565b6007546000908190819060a060020a900460ff16156200124f57600080fd5b600c543410159150600d54341115905062001269620012e4565b8015620012735750815b80156200127d5750805b9250505090565b600082820183811015620011f757fe5b600354600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515620011c657600080fd5b600082821115620012d657fe5b50900390565b600254421190565b60008060065462001301346005546200128490919063ffffffff16565b111590506200130f6200131c565b801562000e305750919050565b600080600060015442101580156200133657506002544211155b9150503415158180156200127d575092915050565b60006b033b2e3c9fd0803ce8000000601230620013676200176f565b92835260ff9091166020830152600160a060020a031660408083019190915260609091019051809103906000f0801515620013a157600080fd5b905090565b600054601154600154600160a060020a0392831692909116906303c2670001620013cf62001780565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f08015156200140757600080fd5b6015805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039283161790556000546013546001549183169216906301e13380016200144f62001780565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f08015156200148757600080fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054601054600160a060020a03918216926340c10f1992909116906af8277896582678ac000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200152b57600080fd5b6102c65a03f115156200153d57600080fd5b5050506040518051505060008054601554600160a060020a03918216926340c10f1992909116906af8277896582678ac000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620015bc57600080fd5b6102c65a03f11515620015ce57600080fd5b5050506040518051505060008054601254600160a060020a03918216926340c10f1992909116906aa56fa5b99019a5c8000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200164d57600080fd5b6102c65a03f115156200165f57600080fd5b5050506040518051505060008054601654600160a060020a03918216926340c10f1992909116906a52b7d2dcc80cd2e4000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620016de57600080fd5b6102c65a03f11515620016f057600080fd5b5050506040518051505060008054601454600160a060020a03918216926340c10f1992909116906a39e7139a8c08fa06000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620011a957600080fd5b6040516115ee806200179283390190565b6040516102db8062002d8083390190560060606040526006805460a060020a60ff02191690556008805460ff1916905560098054600160a060020a031916905534156200003a57600080fd5b604051606080620015ee8339810160405280805191906020018051919060200180519150839050604080519081016040908152600882527f424620546f6b656e00000000000000000000000000000000000000000000000060208301528051908101604052600381527f42465400000000000000000000000000000000000000000000000000000000006020820152846001838051620000df92916020019062000167565b506002828051620000f592916020019062000167565b506003805460ff191660ff92909216919091179055505060068054600160a060020a03191633600160a060020a0316179055600081116200013557600080fd5b60075560088054600160a060020a039092166101000261010060a860020a0319909216919091179055506200020c9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001aa57805160ff1916838001178555620001da565b82800160010185558215620001da579182015b82811115620001da578251825591602001919060010190620001bd565b50620001e8929150620001ec565b5090565b6200020991905b80821115620001e85760008155600101620001f3565b90565b6113d2806200021c6000396000f3006060604052600436106101505763ffffffff60e060020a60003504166305d2035b811461015557806306fdde031461017c5780630900f01014610206578063095ea7b31461022757806318160ddd1461024957806323b872dd1461026e578063313ce56714610296578063355274ea146102bf5780633f4ba83a146102d257806340c10f19146102e557806342966c68146103075780635353a2d81461031d5780635c975abb1461036e578063661884631461038157806370a08231146103a35780637d64bcb4146103c25780638456cb59146103d55780638da5cb5b146103e857806395d89b41146104175780639c1e03a01461042a578063a3895fff1461043d578063a9059cbb1461048e578063be040fb0146104b0578063c42bd05a146104c3578063d02d08b2146104d6578063d73dd623146104e9578063dd62ed3e1461050b578063f2fde38b14610530575b600080fd5b341561016057600080fd5b61016861054f565b604051901515815260200160405180910390f35b341561018757600080fd5b61018f61055f565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101cb5780820151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021157600080fd5b610225600160a060020a03600435166105fd565b005b341561023257600080fd5b610168600160a060020a0360043516602435610647565b341561025457600080fd5b61025c61066d565b60405190815260200160405180910390f35b341561027957600080fd5b610168600160a060020a0360043581169060243516604435610673565b34156102a157600080fd5b6102a961069b565b60405160ff909116815260200160405180910390f35b34156102ca57600080fd5b61025c6106a4565b34156102dd57600080fd5b6102256106aa565b34156102f057600080fd5b610168600160a060020a036004351660243561070e565b341561031257600080fd5b610225600435610150565b341561032857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061076e95505050505050565b341561037957600080fd5b6101686107a0565b341561038c57600080fd5b610168600160a060020a03600435166024356107a9565b34156103ae57600080fd5b61025c600160a060020a03600435166107c8565b34156103cd57600080fd5b6101686107e3565b34156103e057600080fd5b61022561086f565b34156103f357600080fd5b6103fb6108d5565b604051600160a060020a03909116815260200160405180910390f35b341561042257600080fd5b61018f6108e4565b341561043557600080fd5b6103fb61094f565b341561044857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061096395505050505050565b341561049957600080fd5b610168600160a060020a0360043516602435610991565b34156104bb57600080fd5b6102256109b0565b34156104ce57600080fd5b6103fb610aaa565b34156104e157600080fd5b610168610ab9565b34156104f457600080fd5b610168600160a060020a0360043516602435610b27565b341561051657600080fd5b61025c600160a060020a0360043581169060243516610b46565b341561053b57600080fd5b610225600160a060020a0360043516610b71565b60065460a060020a900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b505050505081565b60065433600160a060020a0390811691161461061857600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610651610ab9565b151561065c57600080fd5b6106668383610c0c565b9392505050565b60005481565b600061067d610ab9565b151561068857600080fd5b610693848484610c29565b949350505050565b60035460ff1681565b60075481565b60065433600160a060020a039081169116146106c557600080fd5b60085460ff1615156106d657600080fd5b6008805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60065460009033600160a060020a0390811691161461072c57600080fd5b60065460a060020a900460ff161561074357600080fd5b600754600054610759908463ffffffff610c4716565b111561076457600080fd5b6106668383610c56565b60065433600160a060020a0390811691161461078957600080fd5b600181805161079c92916020019061130e565b5050565b60085460ff1681565b60006107b3610ab9565b15156107be57600080fd5b6106668383610d63565b600160a060020a031660009081526004602052604090205490565b60065460009033600160a060020a0390811691161461080157600080fd5b60065460a060020a900460ff161561081857600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b90565b60065433600160a060020a0390811691161461088a57600080fd5b60085460ff161561089a57600080fd5b6008805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600654600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b6008546101009004600160a060020a031681565b60065433600160a060020a0390811691161461097e57600080fd5b600281805161079c92916020019061130e565b600061099b610ab9565b15156109a657600080fd5b6106668383610d80565b600954600090600160a060020a031615156109ca57600080fd5b6109d3336107c8565b90506109de81610d9d565b600954600160a060020a03166340c10f19338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a3d57600080fd5b6102c65a03f11515610a4e57600080fd5b505050604051805190501515610a6357600080fd5b7f8d15a2189c94a743df2a17c8f4cdd87250b7caa8560e57efa74a59352fcee9d23382604051600160a060020a03909216825260208201526040908101905180910390a150565b600954600160a060020a031681565b6008546000906101009004600160a060020a031663ecb70fb782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b0857600080fd5b6102c65a03f11515610b1957600080fd5b505050604051805191505090565b6000610b31610ab9565b1515610b3c57600080fd5b6106668383610e58565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60065433600160a060020a03908116911614610b8c57600080fd5b600160a060020a0381161515610ba157600080fd5b600654600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615610c1f57600080fd5b6106668383610e75565b60085460009060ff1615610c3c57600080fd5b610693848484610ee1565b60008282018381101561066657fe5b60065460009033600160a060020a03908116911614610c7457600080fd5b60065460a060020a900460ff1615610c8b57600080fd5b600054610c9e908363ffffffff610c4716565b6000908155600160a060020a038416815260046020526040902054610cc9908363ffffffff610c4716565b600160a060020a0384166000818152600460205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60085460009060ff1615610d7657600080fd5b6106668383611063565b60085460009060ff1615610d9357600080fd5b610666838361115d565b600160a060020a033316600090815260046020526040812054821115610dc257600080fd5b5033600160a060020a038116600090815260046020526040902054610de79083611258565b600160a060020a03821660009081526004602052604081209190915554610e14908363ffffffff61125816565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25050565b60085460009060ff1615610e6b57600080fd5b610666838361126a565b600160a060020a03338116600081815260056020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6000600160a060020a0383161515610ef857600080fd5b600160a060020a038416600090815260046020526040902054821115610f1d57600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054821115610f5057600080fd5b600160a060020a038416600090815260046020526040902054610f79908363ffffffff61125816565b600160a060020a038086166000908152600460205260408082209390935590851681522054610fae908363ffffffff610c4716565b600160a060020a03808516600090815260046020908152604080832094909455878316825260058152838220339093168252919091522054610ff6908363ffffffff61125816565b600160a060020a03808616600081815260056020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a033381166000908152600560209081526040808320938616835292905290812054808311156110c057600160a060020a0333811660009081526005602090815260408083209388168352929052908120556110f7565b6110d0818463ffffffff61125816565b600160a060020a033381166000908152600560209081526040808320938916835292905220555b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b6000600160a060020a038316151561117457600080fd5b600160a060020a03331660009081526004602052604090205482111561119957600080fd5b600160a060020a0333166000908152600460205260409020546111c2908363ffffffff61125816565b600160a060020a0333811660009081526004602052604080822093909355908516815220546111f7908363ffffffff610c4716565b600160a060020a0380851660008181526004602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60008282111561126457fe5b50900390565b600160a060020a0333811660009081526005602090815260408083209386168352929052908120546112a2908363ffffffff610c4716565b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134f57805160ff191683800117855561137c565b8280016001018555821561137c579182015b8281111561137c578251825591602001919060010190611361565b5061138892915061138c565b5090565b61086c91905b8082111561138857600081556001016113925600a165627a7a72305820656060475e112dce48cb3838c4edeab68282c16b24fe745eec1e6996aaf051ab00296060604052341561000f57600080fd5b6040516060806102db83398101604052808051919060200180519190602001805191505042811161003f57600080fd5b60008054600160a060020a03948516600160a060020a031991821617909155600180549390941692169190911790915560025561025a806100816000396000f3006060604052600436106100485763ffffffff60e060020a60003504166338af3eed811461004d57806386d1a69f1461007c578063b91d400114610091578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b604051600160a060020a03909116815260200160405180910390f35b341561008757600080fd5b61008f6100d8565b005b341561009c57600080fd5b6100a4610194565b60405190815260200160405180910390f35b34156100c157600080fd5b61006061019a565b600154600160a060020a031681565b6002546000904210156100ea57600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561014557600080fd5b6102c65a03f1151561015657600080fd5b50505060405180519150506000811161016e57600080fd5b60015460005461019191600160a060020a0391821691168363ffffffff6101a916565b50565b60025481565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020657600080fd5b6102c65a03f1151561021757600080fd5b50505060405180519050151561022957fe5b5050505600a165627a7a7230582042212e087512d46abd8a41e77bffcdca88dc5c13d94177a08b67de6b91d0cca90029a165627a7a723058209ef08164c4c7e8e4a9740d5827d791b57f29d8433c9e7938111ea2d70aaf6280002960606040526006805460a060020a60ff02191690556008805460ff1916905560098054600160a060020a031916905534156200003a57600080fd5b604051606080620015ee8339810160405280805191906020018051919060200180519150839050604080519081016040908152600882527f424620546f6b656e00000000000000000000000000000000000000000000000060208301528051908101604052600381527f42465400000000000000000000000000000000000000000000000000000000006020820152846001838051620000df92916020019062000167565b506002828051620000f592916020019062000167565b506003805460ff191660ff92909216919091179055505060068054600160a060020a03191633600160a060020a0316179055600081116200013557600080fd5b60075560088054600160a060020a039092166101000261010060a860020a0319909216919091179055506200020c9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001aa57805160ff1916838001178555620001da565b82800160010185558215620001da579182015b82811115620001da578251825591602001919060010190620001bd565b50620001e8929150620001ec565b5090565b6200020991905b80821115620001e85760008155600101620001f3565b90565b6113d2806200021c6000396000f3006060604052600436106101505763ffffffff60e060020a60003504166305d2035b811461015557806306fdde031461017c5780630900f01014610206578063095ea7b31461022757806318160ddd1461024957806323b872dd1461026e578063313ce56714610296578063355274ea146102bf5780633f4ba83a146102d257806340c10f19146102e557806342966c68146103075780635353a2d81461031d5780635c975abb1461036e578063661884631461038157806370a08231146103a35780637d64bcb4146103c25780638456cb59146103d55780638da5cb5b146103e857806395d89b41146104175780639c1e03a01461042a578063a3895fff1461043d578063a9059cbb1461048e578063be040fb0146104b0578063c42bd05a146104c3578063d02d08b2146104d6578063d73dd623146104e9578063dd62ed3e1461050b578063f2fde38b14610530575b600080fd5b341561016057600080fd5b61016861054f565b604051901515815260200160405180910390f35b341561018757600080fd5b61018f61055f565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101cb5780820151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021157600080fd5b610225600160a060020a03600435166105fd565b005b341561023257600080fd5b610168600160a060020a0360043516602435610647565b341561025457600080fd5b61025c61066d565b60405190815260200160405180910390f35b341561027957600080fd5b610168600160a060020a0360043581169060243516604435610673565b34156102a157600080fd5b6102a961069b565b60405160ff909116815260200160405180910390f35b34156102ca57600080fd5b61025c6106a4565b34156102dd57600080fd5b6102256106aa565b34156102f057600080fd5b610168600160a060020a036004351660243561070e565b341561031257600080fd5b610225600435610150565b341561032857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061076e95505050505050565b341561037957600080fd5b6101686107a0565b341561038c57600080fd5b610168600160a060020a03600435166024356107a9565b34156103ae57600080fd5b61025c600160a060020a03600435166107c8565b34156103cd57600080fd5b6101686107e3565b34156103e057600080fd5b61022561086f565b34156103f357600080fd5b6103fb6108d5565b604051600160a060020a03909116815260200160405180910390f35b341561042257600080fd5b61018f6108e4565b341561043557600080fd5b6103fb61094f565b341561044857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061096395505050505050565b341561049957600080fd5b610168600160a060020a0360043516602435610991565b34156104bb57600080fd5b6102256109b0565b34156104ce57600080fd5b6103fb610aaa565b34156104e157600080fd5b610168610ab9565b34156104f457600080fd5b610168600160a060020a0360043516602435610b27565b341561051657600080fd5b61025c600160a060020a0360043581169060243516610b46565b341561053b57600080fd5b610225600160a060020a0360043516610b71565b60065460a060020a900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b505050505081565b60065433600160a060020a0390811691161461061857600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610651610ab9565b151561065c57600080fd5b6106668383610c0c565b9392505050565b60005481565b600061067d610ab9565b151561068857600080fd5b610693848484610c29565b949350505050565b60035460ff1681565b60075481565b60065433600160a060020a039081169116146106c557600080fd5b60085460ff1615156106d657600080fd5b6008805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60065460009033600160a060020a0390811691161461072c57600080fd5b60065460a060020a900460ff161561074357600080fd5b600754600054610759908463ffffffff610c4716565b111561076457600080fd5b6106668383610c56565b60065433600160a060020a0390811691161461078957600080fd5b600181805161079c92916020019061130e565b5050565b60085460ff1681565b60006107b3610ab9565b15156107be57600080fd5b6106668383610d63565b600160a060020a031660009081526004602052604090205490565b60065460009033600160a060020a0390811691161461080157600080fd5b60065460a060020a900460ff161561081857600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b90565b60065433600160a060020a0390811691161461088a57600080fd5b60085460ff161561089a57600080fd5b6008805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600654600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b6008546101009004600160a060020a031681565b60065433600160a060020a0390811691161461097e57600080fd5b600281805161079c92916020019061130e565b600061099b610ab9565b15156109a657600080fd5b6106668383610d80565b600954600090600160a060020a031615156109ca57600080fd5b6109d3336107c8565b90506109de81610d9d565b600954600160a060020a03166340c10f19338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a3d57600080fd5b6102c65a03f11515610a4e57600080fd5b505050604051805190501515610a6357600080fd5b7f8d15a2189c94a743df2a17c8f4cdd87250b7caa8560e57efa74a59352fcee9d23382604051600160a060020a03909216825260208201526040908101905180910390a150565b600954600160a060020a031681565b6008546000906101009004600160a060020a031663ecb70fb782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b0857600080fd5b6102c65a03f11515610b1957600080fd5b505050604051805191505090565b6000610b31610ab9565b1515610b3c57600080fd5b6106668383610e58565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60065433600160a060020a03908116911614610b8c57600080fd5b600160a060020a0381161515610ba157600080fd5b600654600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615610c1f57600080fd5b6106668383610e75565b60085460009060ff1615610c3c57600080fd5b610693848484610ee1565b60008282018381101561066657fe5b60065460009033600160a060020a03908116911614610c7457600080fd5b60065460a060020a900460ff1615610c8b57600080fd5b600054610c9e908363ffffffff610c4716565b6000908155600160a060020a038416815260046020526040902054610cc9908363ffffffff610c4716565b600160a060020a0384166000818152600460205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60085460009060ff1615610d7657600080fd5b6106668383611063565b60085460009060ff1615610d9357600080fd5b610666838361115d565b600160a060020a033316600090815260046020526040812054821115610dc257600080fd5b5033600160a060020a038116600090815260046020526040902054610de79083611258565b600160a060020a03821660009081526004602052604081209190915554610e14908363ffffffff61125816565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25050565b60085460009060ff1615610e6b57600080fd5b610666838361126a565b600160a060020a03338116600081815260056020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6000600160a060020a0383161515610ef857600080fd5b600160a060020a038416600090815260046020526040902054821115610f1d57600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054821115610f5057600080fd5b600160a060020a038416600090815260046020526040902054610f79908363ffffffff61125816565b600160a060020a038086166000908152600460205260408082209390935590851681522054610fae908363ffffffff610c4716565b600160a060020a03808516600090815260046020908152604080832094909455878316825260058152838220339093168252919091522054610ff6908363ffffffff61125816565b600160a060020a03808616600081815260056020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a033381166000908152600560209081526040808320938616835292905290812054808311156110c057600160a060020a0333811660009081526005602090815260408083209388168352929052908120556110f7565b6110d0818463ffffffff61125816565b600160a060020a033381166000908152600560209081526040808320938916835292905220555b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b6000600160a060020a038316151561117457600080fd5b600160a060020a03331660009081526004602052604090205482111561119957600080fd5b600160a060020a0333166000908152600460205260409020546111c2908363ffffffff61125816565b600160a060020a0333811660009081526004602052604080822093909355908516815220546111f7908363ffffffff610c4716565b600160a060020a0380851660008181526004602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60008282111561126457fe5b50900390565b600160a060020a0333811660009081526005602090815260408083209386168352929052908120546112a2908363ffffffff610c4716565b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134f57805160ff191683800117855561137c565b8280016001018555821561137c579182015b8281111561137c578251825591602001919060010190611361565b5061138892915061138c565b5090565b61086c91905b8082111561138857600081556001016113925600a165627a7a72305820656060475e112dce48cb3838c4edeab68282c16b24fe745eec1e6996aaf051ab00296060604052341561000f57600080fd5b6040516060806102db83398101604052808051919060200180519190602001805191505042811161003f57600080fd5b60008054600160a060020a03948516600160a060020a031991821617909155600180549390941692169190911790915560025561025a806100816000396000f3006060604052600436106100485763ffffffff60e060020a60003504166338af3eed811461004d57806386d1a69f1461007c578063b91d400114610091578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b604051600160a060020a03909116815260200160405180910390f35b341561008757600080fd5b61008f6100d8565b005b341561009c57600080fd5b6100a4610194565b60405190815260200160405180910390f35b34156100c157600080fd5b61006061019a565b600154600160a060020a031681565b6002546000904210156100ea57600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561014557600080fd5b6102c65a03f1151561015657600080fd5b50505060405180519150506000811161016e57600080fd5b60015460005461019191600160a060020a0391821691168363ffffffff6101a916565b50565b60025481565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020657600080fd5b6102c65a03f1151561021757600080fd5b50505060405180519050151561022957fe5b5050505600a165627a7a7230582042212e087512d46abd8a41e77bffcdca88dc5c13d94177a08b67de6b91d0cca90029000000000000000000000000000000000000000000000000000000005a875460000000000000000000000000000000000000000000000000000000005a9f0f60000000000000000000000000000000000000000000000000000000000001117000000000000000000000000087a9678952b5d7a7bd450e4695d691e574e26a89000000000000000000000000b8e6935650f490d06c7a203848f2b2118ae23e9600000000000000000000000008017a8f4e946149dc58b9153767c0481f4b4d68000000000000000000000000278407078c667153b60259e9dcaca018e741f7bc00000000000000000000000045ffeae330cfe7a9033decc30b3989e6f72ea36e000000000000000000000000cdd2204320fc58298e5c428bc4ed1bab83813efe0000000000000000000000006a08f5093bb7aaf77f06bb5ffc409c45599a442400000000000000000000000097a63ef2e255d567aa4c412e80e63b97a1b7db5900000000000000000000000000000000000000000000000000000000002dc6c000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000002710
Deployed Bytecode
0x606060405260043610620002155763ffffffff60e060020a6000350416630dcec63d811462000222578063113990b8146200023b578063130d04d014620002635780631dd49cae146200029557806321e6b53d14620002e75780632c4e722e14620003095780633197cbb6146200031f578063355274ea14620003355780633723bc0e146200034b5780633994bce414620003615780633af32abf14620003775780633b97e85614620003ad5780633f4ba83a14620003d95780634042b66f14620003ef578063521eb27314620004055780635c975abb146200041b57806366666aa914620004315780636904c94d14620004475780636d70f7ae146200045d57806372a7019c146200047f578063732fe2ff146200049557806378e9792514620004ab5780638456cb5914620004c15780638da5cb5b14620004d75780638e78f0f214620004ed5780639870d7fe146200050f5780639a5eb28f14620005315780639e3079551462000547578063a24c9737146200055d578063ada06dac1462000573578063be25d0ce1462000589578063ca0dcf16146200059f578063d5356b7d14620005b5578063d73ff0db14620005cb578063d7815ba414620005e1578063dd54291b14620005f7578063e18c8cf9146200060d578063ec8ac4d81462000623578063ecb70fb71462000639578063edac985b146200064f578063f2fde38b14620006a1578063fc0c546a14620006c3575b6200022033620006d9565b005b34156200022e57600080fd5b62000220600435620007b7565b34156200024757600080fd5b62000251620008d0565b60405190815260200160405180910390f35b34156200026f57600080fd5b62000279620008d5565b604051600160a060020a03909116815260200160405180910390f35b3415620002a157600080fd5b620002206004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650620008e495505050505050565b3415620002f357600080fd5b62000220600160a060020a036004351662000968565b34156200031557600080fd5b6200025162000a69565b34156200032b57600080fd5b6200025162000a6f565b34156200034157600080fd5b6200025162000a75565b34156200035757600080fd5b6200027962000a7b565b34156200036d57600080fd5b6200025162000a8a565b34156200038357600080fd5b62000399600160a060020a036004351662000a90565b604051901515815260200160405180910390f35b3415620003b957600080fd5b620003c362000aae565b60405160ff909116815260200160405180910390f35b3415620003e557600080fd5b6200022062000ab3565b3415620003fb57600080fd5b6200025162000b34565b34156200041157600080fd5b6200027962000b3a565b34156200042757600080fd5b6200039962000b49565b34156200043d57600080fd5b6200027962000b59565b34156200045357600080fd5b6200027962000b68565b34156200046957600080fd5b62000399600160a060020a036004351662000b77565b34156200048b57600080fd5b6200025162000b95565b3415620004a157600080fd5b6200025162000b9b565b3415620004b757600080fd5b6200025162000ba1565b3415620004cd57600080fd5b6200022062000ba7565b3415620004e357600080fd5b6200027962000c2d565b3415620004f957600080fd5b62000220600160a060020a036004351662000c3c565b34156200051b57600080fd5b62000220600160a060020a036004351662000cb9565b34156200053d57600080fd5b6200025162000d39565b34156200055357600080fd5b6200025162000d3f565b34156200056957600080fd5b6200025162000d45565b34156200057f57600080fd5b6200027962000d4b565b34156200059557600080fd5b6200025162000d5a565b3415620005ab57600080fd5b6200025162000d60565b3415620005c157600080fd5b6200025162000d66565b3415620005d757600080fd5b6200027962000d6b565b3415620005ed57600080fd5b6200027962000d7a565b34156200060357600080fd5b6200025162000d89565b34156200061957600080fd5b6200025162000d99565b62000220600160a060020a0360043516620006d9565b34156200064557600080fd5b6200039962000da5565b34156200065b57600080fd5b62000220600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965062000e3695505050505050565b3415620006ad57600080fd5b62000220600160a060020a036004351662000eba565b3415620006cf57600080fd5b6200027962000f57565b600160a060020a038116600090815260176020526040902054819060ff1615156200070357600080fd5b60075460a060020a900460ff16156200071b57600080fd5b60008054600160a060020a0316906370a082319084906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156200077757600080fd5b6102c65a03f115156200078957600080fd5b50505060405180511590506200079e57600080fd5b620007a98262000f66565b620007b3620010a6565b5050565b60075433600160a060020a03908116911614620007d357600080fd5b60008111620007e157600080fd5b6001544210620007f057600080fd5b600b8190556009546200083b9082906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b9063ffffffff620011c816565b9063ffffffff6200120216565b600c55600b54600a546200086c91906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b600d55600b546008546200089d91906200082e906064906200082190670de0b6b3a764000063ffffffff620011c816565b600e55600b54620008bf906064906200082e90600a9063ffffffff620011c816565b600f819055600e5460065560045550565b606481565b601554600160a060020a031681565b600160a060020a03331660009081526018602052604081205460ff1615156200090c57600080fd5b5060005b8151811015620007b3576000601760008484815181106200092d57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010162000910565b60075433600160a060020a039081169116146200098457600080fd5b6200098e62000da5565b15156200099a57600080fd5b60008054600160a060020a031690637d64bcb490604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515620009e457600080fd5b6102c65a03f11515620009f657600080fd5b50505060405180515050600054600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151562000a5157600080fd5b6102c65a03f1151562000a6357600080fd5b50505050565b60045481565b60025481565b60065481565b601354600160a060020a031681565b60085481565b600160a060020a031660009081526017602052604090205460ff1690565b601281565b60075433600160a060020a0390811691161462000acf57600080fd5b60075460a060020a900460ff16151562000ae857600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60055481565b600354600160a060020a031681565b60075460a060020a900460ff1681565b601254600160a060020a031681565b601154600160a060020a031681565b600160a060020a031660009081526018602052604090205460ff1690565b600e5481565b600c5481565b60015481565b60075433600160a060020a0390811691161462000bc357600080fd5b60075460a060020a900460ff161562000bdb57600080fd5b6007805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600754600160a060020a031681565b60075433600160a060020a0390811691161462000c5857600080fd5b600160a060020a03811660009081526018602052604090819020805460ff191690557e3958e2aa90784f5a5cdb7acb904d5dd9810fb33835111ce7196584bbc9a63b90829051600160a060020a03909116815260200160405180910390a150565b60075433600160a060020a0390811691161462000cd557600080fd5b600160a060020a03811660009081526018602052604090819020805460ff191660011790557e3958e2aa90784f5a5cdb7acb904d5dd9810fb33835111ce7196584bbc9a63b90829051600160a060020a03909116815260200160405180910390a150565b60095481565b600b5481565b600a5481565b601454600160a060020a031681565b600d5481565b600f5481565b600a81565b601054600160a060020a031681565b601654600160a060020a031681565b6b033b2e3c9fd0803ce800000081565b670de0b6b3a764000081565b6000805481906b033b2e3c9fd0803ce800000090600160a060020a03166318160ddd83604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151562000dfe57600080fd5b6102c65a03f1151562000e1057600080fd5b5050506040518051905014905062000e276200121a565b8062000e305750805b91505090565b600160a060020a03331660009081526018602052604081205460ff16151562000e5e57600080fd5b5060005b8151811015620007b35760016017600084848151811062000e7f57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010162000e62565b60075433600160a060020a0390811691161462000ed657600080fd5b600160a060020a038116151562000eec57600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b600080600160a060020a038316151562000f7f57600080fd5b62000f8962001230565b151562000f9557600080fd5b60045434925062000fae90839063ffffffff620011c816565b60055490915062000fc6908363ffffffff6200128416565b60055560008054600160a060020a0316906340c10f1990859084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200102c57600080fd5b6102c65a03f115156200103e57600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3620010a162001294565b505050565b600c54600554600e54620010c09163ffffffff620012c916565b1015620011c65760008054601254600160a060020a03918216926340c10f1992909116906200115c9084906318160ddd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156200112757600080fd5b6102c65a03f115156200113957600080fd5b50505060405180516b033b2e3c9fd0803ce8000000915063ffffffff620012c916565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620011a957600080fd5b6102c65a03f11515620011bb57600080fd5b505050604051805150505b565b600080831515620011dd5760009150620011fb565b50828202828482811515620011ee57fe5b0414620011f757fe5b8091505b5092915050565b60008082848115156200121157fe5b04949350505050565b60065460055460009190101562000e27620012dc565b6007546000908190819060a060020a900460ff16156200124f57600080fd5b600c543410159150600d54341115905062001269620012e4565b8015620012735750815b80156200127d5750805b9250505090565b600082820183811015620011f757fe5b600354600160a060020a03163480156108fc0290604051600060405180830381858888f193505050501515620011c657600080fd5b600082821115620012d657fe5b50900390565b600254421190565b60008060065462001301346005546200128490919063ffffffff16565b111590506200130f6200131c565b801562000e305750919050565b600080600060015442101580156200133657506002544211155b9150503415158180156200127d575092915050565b60006b033b2e3c9fd0803ce8000000601230620013676200176f565b92835260ff9091166020830152600160a060020a031660408083019190915260609091019051809103906000f0801515620013a157600080fd5b905090565b600054601154600154600160a060020a0392831692909116906303c2670001620013cf62001780565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f08015156200140757600080fd5b6015805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039283161790556000546013546001549183169216906301e13380016200144f62001780565b600160a060020a0393841681529190921660208201526040808201929092526060019051809103906000f08015156200148757600080fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054601054600160a060020a03918216926340c10f1992909116906af8277896582678ac000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200152b57600080fd5b6102c65a03f115156200153d57600080fd5b5050506040518051505060008054601554600160a060020a03918216926340c10f1992909116906af8277896582678ac000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620015bc57600080fd5b6102c65a03f11515620015ce57600080fd5b5050506040518051505060008054601254600160a060020a03918216926340c10f1992909116906aa56fa5b99019a5c8000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156200164d57600080fd5b6102c65a03f115156200165f57600080fd5b5050506040518051505060008054601654600160a060020a03918216926340c10f1992909116906a52b7d2dcc80cd2e4000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620016de57600080fd5b6102c65a03f11515620016f057600080fd5b5050506040518051505060008054601454600160a060020a03918216926340c10f1992909116906a39e7139a8c08fa06000000906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620011a957600080fd5b6040516115ee806200179283390190565b6040516102db8062002d8083390190560060606040526006805460a060020a60ff02191690556008805460ff1916905560098054600160a060020a031916905534156200003a57600080fd5b604051606080620015ee8339810160405280805191906020018051919060200180519150839050604080519081016040908152600882527f424620546f6b656e00000000000000000000000000000000000000000000000060208301528051908101604052600381527f42465400000000000000000000000000000000000000000000000000000000006020820152846001838051620000df92916020019062000167565b506002828051620000f592916020019062000167565b506003805460ff191660ff92909216919091179055505060068054600160a060020a03191633600160a060020a0316179055600081116200013557600080fd5b60075560088054600160a060020a039092166101000261010060a860020a0319909216919091179055506200020c9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001aa57805160ff1916838001178555620001da565b82800160010185558215620001da579182015b82811115620001da578251825591602001919060010190620001bd565b50620001e8929150620001ec565b5090565b6200020991905b80821115620001e85760008155600101620001f3565b90565b6113d2806200021c6000396000f3006060604052600436106101505763ffffffff60e060020a60003504166305d2035b811461015557806306fdde031461017c5780630900f01014610206578063095ea7b31461022757806318160ddd1461024957806323b872dd1461026e578063313ce56714610296578063355274ea146102bf5780633f4ba83a146102d257806340c10f19146102e557806342966c68146103075780635353a2d81461031d5780635c975abb1461036e578063661884631461038157806370a08231146103a35780637d64bcb4146103c25780638456cb59146103d55780638da5cb5b146103e857806395d89b41146104175780639c1e03a01461042a578063a3895fff1461043d578063a9059cbb1461048e578063be040fb0146104b0578063c42bd05a146104c3578063d02d08b2146104d6578063d73dd623146104e9578063dd62ed3e1461050b578063f2fde38b14610530575b600080fd5b341561016057600080fd5b61016861054f565b604051901515815260200160405180910390f35b341561018757600080fd5b61018f61055f565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101cb5780820151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021157600080fd5b610225600160a060020a03600435166105fd565b005b341561023257600080fd5b610168600160a060020a0360043516602435610647565b341561025457600080fd5b61025c61066d565b60405190815260200160405180910390f35b341561027957600080fd5b610168600160a060020a0360043581169060243516604435610673565b34156102a157600080fd5b6102a961069b565b60405160ff909116815260200160405180910390f35b34156102ca57600080fd5b61025c6106a4565b34156102dd57600080fd5b6102256106aa565b34156102f057600080fd5b610168600160a060020a036004351660243561070e565b341561031257600080fd5b610225600435610150565b341561032857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061076e95505050505050565b341561037957600080fd5b6101686107a0565b341561038c57600080fd5b610168600160a060020a03600435166024356107a9565b34156103ae57600080fd5b61025c600160a060020a03600435166107c8565b34156103cd57600080fd5b6101686107e3565b34156103e057600080fd5b61022561086f565b34156103f357600080fd5b6103fb6108d5565b604051600160a060020a03909116815260200160405180910390f35b341561042257600080fd5b61018f6108e4565b341561043557600080fd5b6103fb61094f565b341561044857600080fd5b61022560046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061096395505050505050565b341561049957600080fd5b610168600160a060020a0360043516602435610991565b34156104bb57600080fd5b6102256109b0565b34156104ce57600080fd5b6103fb610aaa565b34156104e157600080fd5b610168610ab9565b34156104f457600080fd5b610168600160a060020a0360043516602435610b27565b341561051657600080fd5b61025c600160a060020a0360043581169060243516610b46565b341561053b57600080fd5b610225600160a060020a0360043516610b71565b60065460a060020a900460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b505050505081565b60065433600160a060020a0390811691161461061857600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610651610ab9565b151561065c57600080fd5b6106668383610c0c565b9392505050565b60005481565b600061067d610ab9565b151561068857600080fd5b610693848484610c29565b949350505050565b60035460ff1681565b60075481565b60065433600160a060020a039081169116146106c557600080fd5b60085460ff1615156106d657600080fd5b6008805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60065460009033600160a060020a0390811691161461072c57600080fd5b60065460a060020a900460ff161561074357600080fd5b600754600054610759908463ffffffff610c4716565b111561076457600080fd5b6106668383610c56565b60065433600160a060020a0390811691161461078957600080fd5b600181805161079c92916020019061130e565b5050565b60085460ff1681565b60006107b3610ab9565b15156107be57600080fd5b6106668383610d63565b600160a060020a031660009081526004602052604090205490565b60065460009033600160a060020a0390811691161461080157600080fd5b60065460a060020a900460ff161561081857600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b90565b60065433600160a060020a0390811691161461088a57600080fd5b60085460ff161561089a57600080fd5b6008805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600654600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105f55780601f106105ca576101008083540402835291602001916105f5565b6008546101009004600160a060020a031681565b60065433600160a060020a0390811691161461097e57600080fd5b600281805161079c92916020019061130e565b600061099b610ab9565b15156109a657600080fd5b6106668383610d80565b600954600090600160a060020a031615156109ca57600080fd5b6109d3336107c8565b90506109de81610d9d565b600954600160a060020a03166340c10f19338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a3d57600080fd5b6102c65a03f11515610a4e57600080fd5b505050604051805190501515610a6357600080fd5b7f8d15a2189c94a743df2a17c8f4cdd87250b7caa8560e57efa74a59352fcee9d23382604051600160a060020a03909216825260208201526040908101905180910390a150565b600954600160a060020a031681565b6008546000906101009004600160a060020a031663ecb70fb782604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b0857600080fd5b6102c65a03f11515610b1957600080fd5b505050604051805191505090565b6000610b31610ab9565b1515610b3c57600080fd5b6106668383610e58565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60065433600160a060020a03908116911614610b8c57600080fd5b600160a060020a0381161515610ba157600080fd5b600654600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615610c1f57600080fd5b6106668383610e75565b60085460009060ff1615610c3c57600080fd5b610693848484610ee1565b60008282018381101561066657fe5b60065460009033600160a060020a03908116911614610c7457600080fd5b60065460a060020a900460ff1615610c8b57600080fd5b600054610c9e908363ffffffff610c4716565b6000908155600160a060020a038416815260046020526040902054610cc9908363ffffffff610c4716565b600160a060020a0384166000818152600460205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60085460009060ff1615610d7657600080fd5b6106668383611063565b60085460009060ff1615610d9357600080fd5b610666838361115d565b600160a060020a033316600090815260046020526040812054821115610dc257600080fd5b5033600160a060020a038116600090815260046020526040902054610de79083611258565b600160a060020a03821660009081526004602052604081209190915554610e14908363ffffffff61125816565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25050565b60085460009060ff1615610e6b57600080fd5b610666838361126a565b600160a060020a03338116600081815260056020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b6000600160a060020a0383161515610ef857600080fd5b600160a060020a038416600090815260046020526040902054821115610f1d57600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054821115610f5057600080fd5b600160a060020a038416600090815260046020526040902054610f79908363ffffffff61125816565b600160a060020a038086166000908152600460205260408082209390935590851681522054610fae908363ffffffff610c4716565b600160a060020a03808516600090815260046020908152604080832094909455878316825260058152838220339093168252919091522054610ff6908363ffffffff61125816565b600160a060020a03808616600081815260056020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a033381166000908152600560209081526040808320938616835292905290812054808311156110c057600160a060020a0333811660009081526005602090815260408083209388168352929052908120556110f7565b6110d0818463ffffffff61125816565b600160a060020a033381166000908152600560209081526040808320938916835292905220555b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b6000600160a060020a038316151561117457600080fd5b600160a060020a03331660009081526004602052604090205482111561119957600080fd5b600160a060020a0333166000908152600460205260409020546111c2908363ffffffff61125816565b600160a060020a0333811660009081526004602052604080822093909355908516815220546111f7908363ffffffff610c4716565b600160a060020a0380851660008181526004602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60008282111561126457fe5b50900390565b600160a060020a0333811660009081526005602090815260408083209386168352929052908120546112a2908363ffffffff610c4716565b600160a060020a0333811660008181526005602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134f57805160ff191683800117855561137c565b8280016001018555821561137c579182015b8281111561137c578251825591602001919060010190611361565b5061138892915061138c565b5090565b61086c91905b8082111561138857600081556001016113925600a165627a7a72305820656060475e112dce48cb3838c4edeab68282c16b24fe745eec1e6996aaf051ab00296060604052341561000f57600080fd5b6040516060806102db83398101604052808051919060200180519190602001805191505042811161003f57600080fd5b60008054600160a060020a03948516600160a060020a031991821617909155600180549390941692169190911790915560025561025a806100816000396000f3006060604052600436106100485763ffffffff60e060020a60003504166338af3eed811461004d57806386d1a69f1461007c578063b91d400114610091578063fc0c546a146100b6575b600080fd5b341561005857600080fd5b6100606100c9565b604051600160a060020a03909116815260200160405180910390f35b341561008757600080fd5b61008f6100d8565b005b341561009c57600080fd5b6100a4610194565b60405190815260200160405180910390f35b34156100c157600080fd5b61006061019a565b600154600160a060020a031681565b6002546000904210156100ea57600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561014557600080fd5b6102c65a03f1151561015657600080fd5b50505060405180519150506000811161016e57600080fd5b60015460005461019191600160a060020a0391821691168363ffffffff6101a916565b50565b60025481565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020657600080fd5b6102c65a03f1151561021757600080fd5b50505060405180519050151561022957fe5b5050505600a165627a7a7230582042212e087512d46abd8a41e77bffcdca88dc5c13d94177a08b67de6b91d0cca90029a165627a7a723058209ef08164c4c7e8e4a9740d5827d791b57f29d8433c9e7938111ea2d70aaf62800029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000005a875460000000000000000000000000000000000000000000000000000000005a9f0f60000000000000000000000000000000000000000000000000000000000001117000000000000000000000000087a9678952b5d7a7bd450e4695d691e574e26a89000000000000000000000000b8e6935650f490d06c7a203848f2b2118ae23e9600000000000000000000000008017a8f4e946149dc58b9153767c0481f4b4d68000000000000000000000000278407078c667153b60259e9dcaca018e741f7bc00000000000000000000000045ffeae330cfe7a9033decc30b3989e6f72ea36e000000000000000000000000cdd2204320fc58298e5c428bc4ed1bab83813efe0000000000000000000000006a08f5093bb7aaf77f06bb5ffc409c45599a442400000000000000000000000097a63ef2e255d567aa4c412e80e63b97a1b7db5900000000000000000000000000000000000000000000000000000000002dc6c000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000002710
-----Decoded View---------------
Arg [0] : _startTime (uint256): 1518818400
Arg [1] : _endTime (uint256): 1520373600
Arg [2] : _etherPrice (uint256): 70000
Arg [3] : _wallet (address): 0x87a9678952B5D7A7bd450E4695d691e574E26a89
Arg [4] : _preSaleBfPlatform (address): 0xb8E6935650f490d06C7A203848f2b2118aE23E96
Arg [5] : _company (address): 0x08017a8F4E946149Dc58B9153767C0481F4B4d68
Arg [6] : _rewardPool (address): 0x278407078C667153b60259E9dCaCa018e741F7Bc
Arg [7] : _shareholders (address): 0x45fFeAE330CFe7A9033DeCc30b3989e6F72Ea36E
Arg [8] : _tokenSaleCosts (address): 0xCdD2204320FC58298E5c428bc4eD1BAB83813eFe
Arg [9] : _operator (address): 0x6A08F5093bB7aaF77f06Bb5Ffc409c45599A4424
Arg [10] : _admin (address): 0x97A63ef2e255D567Aa4c412E80e63B97a1B7db59
Arg [11] : _saleCapUsd (uint256): 3000000
Arg [12] : _buyerCapLowUsd (uint256): 1000
Arg [13] : _buyerCapHighUsd (uint256): 10000
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a875460
Arg [1] : 000000000000000000000000000000000000000000000000000000005a9f0f60
Arg [2] : 0000000000000000000000000000000000000000000000000000000000011170
Arg [3] : 00000000000000000000000087a9678952b5d7a7bd450e4695d691e574e26a89
Arg [4] : 000000000000000000000000b8e6935650f490d06c7a203848f2b2118ae23e96
Arg [5] : 00000000000000000000000008017a8f4e946149dc58b9153767c0481f4b4d68
Arg [6] : 000000000000000000000000278407078c667153b60259e9dcaca018e741f7bc
Arg [7] : 00000000000000000000000045ffeae330cfe7a9033decc30b3989e6f72ea36e
Arg [8] : 000000000000000000000000cdd2204320fc58298e5c428bc4ed1bab83813efe
Arg [9] : 0000000000000000000000006a08f5093bb7aaf77f06bb5ffc409c45599a4424
Arg [10] : 00000000000000000000000097a63ef2e255d567aa4c412e80e63b97a1b7db59
Arg [11] : 00000000000000000000000000000000000000000000000000000000002dc6c0
Arg [12] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [13] : 0000000000000000000000000000000000000000000000000000000000002710
Swarm Source
bzzr://42212e087512d46abd8a41e77bffcdca88dc5c13d94177a08b67de6b91d0cca9
Loading...
Loading
Loading...
Loading
OVERVIEW
The deployer address for BNKtotheFuture's contract.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.