More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 14,772 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 6023147 | 2185 days ago | IN | 0.04997968 ETH | 0.00009988 | ||||
Withdraw BNB | 5811953 | 2221 days ago | IN | 0 ETH | 0.00039366 | ||||
Transfer | 5807601 | 2221 days ago | IN | 0.021 ETH | 0.00002497 | ||||
Transfer | 5806525 | 2222 days ago | IN | 0.025 ETH | 0.00002497 | ||||
Transfer | 5663810 | 2247 days ago | IN | 0.06 ETH | 0.0002497 | ||||
Transfer | 5624339 | 2254 days ago | IN | 0.3 ETH | 0.00047443 | ||||
Transfer | 5624077 | 2254 days ago | IN | 2.65 ETH | 0.00216295 | ||||
Add To Lists | 5624021 | 2254 days ago | IN | 0 ETH | 0.00057326 | ||||
Process BNB Cont... | 5623984 | 2254 days ago | IN | 0 ETH | 0.0011159 | ||||
Transfer | 5623983 | 2254 days ago | IN | 0.51 ETH | 0.00216295 | ||||
Transfer | 5623969 | 2254 days ago | IN | 0.51 ETH | 0.00076468 | ||||
Finalize Crowdsa... | 5623929 | 2254 days ago | IN | 0 ETH | 0.00654769 | ||||
Finalize Crowdsa... | 5623927 | 2254 days ago | IN | 0 ETH | 0.00032259 | ||||
Add To Lists | 5623925 | 2254 days ago | IN | 0 ETH | 0.00189722 | ||||
Add To Lists | 5623922 | 2254 days ago | IN | 0 ETH | 0.00189722 | ||||
Add To Lists | 5623920 | 2254 days ago | IN | 0 ETH | 0.00189722 | ||||
Add To Lists | 5623912 | 2254 days ago | IN | 0 ETH | 0.00061807 | ||||
Add To Lists | 5623912 | 2254 days ago | IN | 0 ETH | 0.00207722 | ||||
Add To Lists | 5623912 | 2254 days ago | IN | 0 ETH | 0.00207722 | ||||
Transfer | 5623912 | 2254 days ago | IN | 0.35384615 ETH | 0.00610555 | ||||
Transfer | 5623910 | 2254 days ago | IN | 1.7 ETH | 0.00347589 | ||||
Transfer | 5623910 | 2254 days ago | IN | 0.65 ETH | 0.00763398 | ||||
Transfer | 5623909 | 2254 days ago | IN | 0.5 ETH | 0.00169556 | ||||
Add To Lists | 5623908 | 2254 days ago | IN | 0 ETH | 0.00207722 | ||||
Add To Lists | 5623907 | 2254 days ago | IN | 0 ETH | 0.00189722 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5623925 | 2254 days ago | 2 ETH | ||||
5623925 | 2254 days ago | 2 ETH | ||||
5623922 | 2254 days ago | 2.8983354 ETH | ||||
5623922 | 2254 days ago | 2.8983354 ETH | ||||
5623920 | 2254 days ago | 5 ETH | ||||
5623920 | 2254 days ago | 5 ETH | ||||
5623912 | 2254 days ago | 17 ETH | ||||
5623912 | 2254 days ago | 17 ETH | ||||
5623912 | 2254 days ago | 10 ETH | ||||
5623912 | 2254 days ago | 10 ETH | ||||
5623912 | 2254 days ago | 0.35384615 ETH | ||||
5623910 | 2254 days ago | 1.7 ETH | ||||
5623910 | 2254 days ago | 0.65 ETH | ||||
5623909 | 2254 days ago | 0.5 ETH | ||||
5623908 | 2254 days ago | 1 ETH | ||||
5623908 | 2254 days ago | 1 ETH | ||||
5623907 | 2254 days ago | 1.5 ETH | ||||
5623907 | 2254 days ago | 1.5 ETH | ||||
5623906 | 2254 days ago | 0.2 ETH | ||||
5623906 | 2254 days ago | 0.2 ETH | ||||
5623904 | 2254 days ago | 0.32 ETH | ||||
5623902 | 2254 days ago | 0.3 ETH | ||||
5623901 | 2254 days ago | 0.2 ETH | ||||
5623901 | 2254 days ago | 0.38 ETH | ||||
5623897 | 2254 days ago | 6.4 ETH |
Loading...
Loading
Contract Name:
TheAbyssDAICO
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-18 */ pragma solidity ^0.4.21; // File: contracts/ISimpleCrowdsale.sol interface ISimpleCrowdsale { function getSoftCap() external view returns(uint256); function isContributorInLists(address contributorAddress) external view returns(bool); function processReservationFundContribution( address contributor, uint256 tokenAmount, uint256 tokenBonusAmount ) external payable; } // File: contracts/ownership/Ownable.sol /** * @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; address public newOwner; event OwnershipTransferred(address previousOwner, address newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract. */ function Ownable(address _owner) public { owner = _owner == address(0) ? msg.sender : _owner; } /** * @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 != owner); newOwner = _newOwner; } /** * @dev confirm ownership by a new owner */ function confirmOwnership() public { require(msg.sender == newOwner); OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = 0x0; } } // File: contracts/Pausable.sol /** * @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(); } } // File: contracts/fund/ICrowdsaleFund.sol /** * @title ICrowdsaleFund * @dev Fund methods used by crowdsale contract */ interface ICrowdsaleFund { /** * @dev Function accepts user`s contributed ether and logs contribution * @param contributor Contributor wallet address. */ function processContribution(address contributor) external payable; /** * @dev Function is called on the end of successful crowdsale */ function onCrowdsaleEnd() external; /** * @dev Function is called if crowdsale failed to reach soft cap */ function enableCrowdsaleRefund() external; } // File: contracts/fund/ICrowdsaleReservationFund.sol /** * @title ICrowdsaleReservationFund * @dev ReservationFund methods used by crowdsale contract */ interface ICrowdsaleReservationFund { /** * @dev Check if contributor has transactions */ function canCompleteContribution(address contributor) external returns(bool); /** * @dev Complete contribution * @param contributor Contributor`s address */ function completeContribution(address contributor) external; /** * @dev Function accepts user`s contributed ether and amount of tokens to issue * @param contributor Contributor wallet address. * @param _tokensToIssue Token amount to issue * @param _bonusTokensToIssue Bonus token amount to issue */ function processContribution(address contributor, uint256 _tokensToIssue, uint256 _bonusTokensToIssue) external payable; /** * @dev Function returns current user`s contributed ether amount */ function contributionsOf(address contributor) external returns(uint256); /** * @dev Function is called on the end of successful crowdsale */ function onCrowdsaleEnd() external; } // File: contracts/token/IERC20Token.sol /** * @title IERC20Token - ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract IERC20Token { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; function balanceOf(address _owner) public constant returns (uint256 balance); function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); function allowance(address _owner, address _spender) public constant returns (uint256 remaining); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } // File: contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ contract SafeMath { /** * @dev constructor */ function SafeMath() public { } function safeMul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function safeSub(uint256 a, uint256 b) internal pure returns (uint256) { assert(a >= b); return a - b; } function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: contracts/token/LockedTokens.sol /** * @title LockedTokens * @dev Lock tokens for certain period of time */ contract LockedTokens is SafeMath { struct Tokens { uint256 amount; uint256 lockEndTime; bool released; } event TokensUnlocked(address _to, uint256 _value); IERC20Token public token; address public crowdsaleAddress; mapping(address => Tokens[]) public walletTokens; /** * @dev LockedTokens constructor * @param _token ERC20 compatible token contract * @param _crowdsaleAddress Crowdsale contract address */ function LockedTokens(IERC20Token _token, address _crowdsaleAddress) public { token = _token; crowdsaleAddress = _crowdsaleAddress; } /** * @dev Functions locks tokens * @param _to Wallet address to transfer tokens after _lockEndTime * @param _amount Amount of tokens to lock * @param _lockEndTime End of lock period */ function addTokens(address _to, uint256 _amount, uint256 _lockEndTime) external { require(msg.sender == crowdsaleAddress); walletTokens[_to].push(Tokens({amount: _amount, lockEndTime: _lockEndTime, released: false})); } /** * @dev Called by owner of locked tokens to release them */ function releaseTokens() public { require(walletTokens[msg.sender].length > 0); for(uint256 i = 0; i < walletTokens[msg.sender].length; i++) { if(!walletTokens[msg.sender][i].released && now >= walletTokens[msg.sender][i].lockEndTime) { walletTokens[msg.sender][i].released = true; token.transfer(msg.sender, walletTokens[msg.sender][i].amount); TokensUnlocked(msg.sender, walletTokens[msg.sender][i].amount); } } } } // File: contracts/ownership/MultiOwnable.sol /** * @title MultiOwnable * @dev The MultiOwnable contract has owners addresses and provides basic authorization control * functions, this simplifies the implementation of "users permissions". */ contract MultiOwnable { address public manager; // address used to set owners address[] public owners; mapping(address => bool) public ownerByAddress; event SetOwners(address[] owners); modifier onlyOwner() { require(ownerByAddress[msg.sender] == true); _; } /** * @dev MultiOwnable constructor sets the manager */ function MultiOwnable() public { manager = msg.sender; } /** * @dev Function to set owners addresses */ function setOwners(address[] _owners) public { require(msg.sender == manager); _setOwners(_owners); } function _setOwners(address[] _owners) internal { for(uint256 i = 0; i < owners.length; i++) { ownerByAddress[owners[i]] = false; } for(uint256 j = 0; j < _owners.length; j++) { ownerByAddress[_owners[j]] = true; } owners = _owners; SetOwners(_owners); } function getOwners() public constant returns (address[]) { return owners; } } // File: contracts/token/ERC20Token.sol /** * @title ERC20Token - ERC20 base implementation * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20Token is IERC20Token, SafeMath { mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowed; function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(balances[msg.sender] >= _value); balances[msg.sender] = safeSub(balances[msg.sender], _value); balances[_to] = safeAdd(balances[_to], _value); Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value); balances[_to] = safeAdd(balances[_to], _value); balances[_from] = safeSub(balances[_from], _value); allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value); Transfer(_from, _to, _value); return true; } function balanceOf(address _owner) public constant returns (uint256) { return balances[_owner]; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public constant returns (uint256) { return allowed[_owner][_spender]; } } // File: contracts/token/ITokenEventListener.sol /** * @title ITokenEventListener * @dev Interface which should be implemented by token listener */ interface ITokenEventListener { /** * @dev Function is called after token transfer/transferFrom * @param _from Sender address * @param _to Receiver address * @param _value Amount of tokens */ function onTokenTransfer(address _from, address _to, uint256 _value) external; } // File: contracts/token/ManagedToken.sol /** * @title ManagedToken * @dev ERC20 compatible token with issue and destroy facilities * @dev All transfers can be monitored by token event listener */ contract ManagedToken is ERC20Token, MultiOwnable { bool public allowTransfers = false; bool public issuanceFinished = false; ITokenEventListener public eventListener; event AllowTransfersChanged(bool _newState); event Issue(address indexed _to, uint256 _value); event Destroy(address indexed _from, uint256 _value); event IssuanceFinished(); modifier transfersAllowed() { require(allowTransfers); _; } modifier canIssue() { require(!issuanceFinished); _; } /** * @dev ManagedToken constructor * @param _listener Token listener(address can be 0x0) * @param _owners Owners list */ function ManagedToken(address _listener, address[] _owners) public { if(_listener != address(0)) { eventListener = ITokenEventListener(_listener); } _setOwners(_owners); } /** * @dev Enable/disable token transfers. Can be called only by owners * @param _allowTransfers True - allow False - disable */ function setAllowTransfers(bool _allowTransfers) external onlyOwner { allowTransfers = _allowTransfers; AllowTransfersChanged(_allowTransfers); } /** * @dev Set/remove token event listener * @param _listener Listener address (Contract must implement ITokenEventListener interface) */ function setListener(address _listener) public onlyOwner { if(_listener != address(0)) { eventListener = ITokenEventListener(_listener); } else { delete eventListener; } } function transfer(address _to, uint256 _value) public transfersAllowed returns (bool) { bool success = super.transfer(_to, _value); if(hasListener() && success) { eventListener.onTokenTransfer(msg.sender, _to, _value); } return success; } function transferFrom(address _from, address _to, uint256 _value) public transfersAllowed returns (bool) { bool success = super.transferFrom(_from, _to, _value); if(hasListener() && success) { eventListener.onTokenTransfer(_from, _to, _value); } return success; } function hasListener() internal view returns(bool) { if(eventListener == address(0)) { return false; } return true; } /** * @dev Issue tokens to specified wallet * @param _to Wallet address * @param _value Amount of tokens */ function issue(address _to, uint256 _value) external onlyOwner canIssue { totalSupply = safeAdd(totalSupply, _value); balances[_to] = safeAdd(balances[_to], _value); Issue(_to, _value); Transfer(address(0), _to, _value); } /** * @dev Destroy tokens on specified address (Called by owner or token holder) * @dev Fund contract address must be in the list of owners to burn token during refund * @param _from Wallet address * @param _value Amount of tokens to destroy */ function destroy(address _from, uint256 _value) external { require(ownerByAddress[msg.sender] || msg.sender == _from); require(balances[_from] >= _value); totalSupply = safeSub(totalSupply, _value); balances[_from] = safeSub(balances[_from], _value); Transfer(_from, address(0), _value); Destroy(_from, _value); } /** * @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 OpenZeppelin StandardToken.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] = safeAdd(allowed[msg.sender][_spender], _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 OpenZeppelin StandardToken.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] = safeSub(oldValue, _subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Finish token issuance * @return True if success */ function finishIssuance() public onlyOwner returns (bool) { issuanceFinished = true; IssuanceFinished(); return true; } } // File: contracts/token/TransferLimitedToken.sol /** * @title TransferLimitedToken * @dev Token with ability to limit transfers within wallets included in limitedWallets list for certain period of time */ contract TransferLimitedToken is ManagedToken { uint256 public constant LIMIT_TRANSFERS_PERIOD = 365 days; mapping(address => bool) public limitedWallets; uint256 public limitEndDate; address public limitedWalletsManager; bool public isLimitEnabled; event TransfersEnabled(); modifier onlyManager() { require(msg.sender == limitedWalletsManager); _; } /** * @dev Check if transfer between addresses is available * @param _from From address * @param _to To address */ modifier canTransfer(address _from, address _to) { require(now >= limitEndDate || !isLimitEnabled || (!limitedWallets[_from] && !limitedWallets[_to])); _; } /** * @dev TransferLimitedToken constructor * @param _limitStartDate Limit start date * @param _listener Token listener(address can be 0x0) * @param _owners Owners list * @param _limitedWalletsManager Address used to add/del wallets from limitedWallets */ function TransferLimitedToken( uint256 _limitStartDate, address _listener, address[] _owners, address _limitedWalletsManager ) public ManagedToken(_listener, _owners) { limitEndDate = _limitStartDate + LIMIT_TRANSFERS_PERIOD; isLimitEnabled = true; limitedWalletsManager = _limitedWalletsManager; } /** * @dev Enable token transfers */ function enableTransfers() public { require(msg.sender == limitedWalletsManager); allowTransfers = true; TransfersEnabled(); } /** * @dev Add address to limitedWallets * @dev Can be called only by manager */ function addLimitedWalletAddress(address _wallet) public { require(msg.sender == limitedWalletsManager || ownerByAddress[msg.sender]); limitedWallets[_wallet] = true; } /** * @dev Del address from limitedWallets * @dev Can be called only by manager */ function delLimitedWalletAddress(address _wallet) public onlyManager { limitedWallets[_wallet] = false; } /** * @dev Disable transfer limit manually. Can be called only by manager */ function disableLimit() public onlyManager { isLimitEnabled = false; } function transfer(address _to, uint256 _value) public canTransfer(msg.sender, _to) returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public canTransfer(_from, _to) returns (bool) { return super.transferFrom(_from, _to, _value); } function approve(address _spender, uint256 _value) public canTransfer(msg.sender, _spender) returns (bool) { return super.approve(_spender,_value); } } // File: contracts/Crowdsale.sol contract TheAbyssDAICO is Ownable, SafeMath, Pausable, ISimpleCrowdsale { enum AdditionalBonusState { Unavailable, Active, Applied } uint256 public constant ADDITIONAL_BONUS_NUM = 3; uint256 public constant ADDITIONAL_BONUS_DENOM = 100; uint256 public constant ETHER_MIN_CONTRIB = 0.2 ether; uint256 public constant ETHER_MAX_CONTRIB = 20 ether; uint256 public constant ETHER_MIN_CONTRIB_PRIVATE = 100 ether; uint256 public constant ETHER_MAX_CONTRIB_PRIVATE = 3000 ether; uint256 public constant ETHER_MIN_CONTRIB_USA = 0.2 ether; uint256 public constant ETHER_MAX_CONTRIB_USA = 20 ether; uint256 public constant SALE_START_TIME = 1524060000; // 18.04.2018 14:00:00 UTC uint256 public constant SALE_END_TIME = 1526479200; // 16.05.2018 14:00:00 UTC uint256 public constant BONUS_WINDOW_1_END_TIME = SALE_START_TIME + 2 days; uint256 public constant BONUS_WINDOW_2_END_TIME = SALE_START_TIME + 7 days; uint256 public constant BONUS_WINDOW_3_END_TIME = SALE_START_TIME + 14 days; uint256 public constant BONUS_WINDOW_4_END_TIME = SALE_START_TIME + 21 days; uint256 public constant MAX_CONTRIB_CHECK_END_TIME = SALE_START_TIME + 1 days; uint256 public constant BNB_TOKEN_PRICE_NUM = 169; uint256 public constant BNB_TOKEN_PRICE_DENOM = 1; uint256 public tokenPriceNum = 0; uint256 public tokenPriceDenom = 0; TransferLimitedToken public token; ICrowdsaleFund public fund; ICrowdsaleReservationFund public reservationFund; LockedTokens public lockedTokens; mapping(address => bool) public whiteList; mapping(address => bool) public privilegedList; mapping(address => AdditionalBonusState) public additionalBonusOwnerState; mapping(address => uint256) public userTotalContributed; address public bnbTokenWallet; address public referralTokenWallet; address public foundationTokenWallet; address public advisorsTokenWallet; address public companyTokenWallet; address public reserveTokenWallet; address public bountyTokenWallet; uint256 public totalEtherContributed = 0; uint256 public rawTokenSupply = 0; // BNB IERC20Token public bnbToken; uint256 public BNB_HARD_CAP = 300000 ether; // 300K BNB uint256 public BNB_MIN_CONTRIB = 1000 ether; // 1K BNB mapping(address => uint256) public bnbContributions; uint256 public totalBNBContributed = 0; bool public bnbWithdrawEnabled = false; uint256 public hardCap = 0; // World hard cap will be set right before Token Sale uint256 public softCap = 0; // World soft cap will be set right before Token Sale bool public bnbRefundEnabled = false; event LogContribution(address contributor, uint256 amountWei, uint256 tokenAmount, uint256 tokenBonus, bool additionalBonusApplied, uint256 timestamp); event ReservationFundContribution(address contributor, uint256 amountWei, uint256 tokensToIssue, uint256 bonusTokensToIssue, uint256 timestamp); event LogBNBContribution(address contributor, uint256 amountBNB, uint256 tokenAmount, uint256 tokenBonus, bool additionalBonusApplied, uint256 timestamp); modifier checkContribution() { require(isValidContribution()); _; } modifier checkBNBContribution() { require(isValidBNBContribution()); _; } modifier checkCap() { require(validateCap()); _; } modifier checkTime() { require(now >= SALE_START_TIME && now <= SALE_END_TIME); _; } function TheAbyssDAICO( address bnbTokenAddress, address tokenAddress, address fundAddress, address reservationFundAddress, address _bnbTokenWallet, address _referralTokenWallet, address _foundationTokenWallet, address _advisorsTokenWallet, address _companyTokenWallet, address _reserveTokenWallet, address _bountyTokenWallet, address _owner ) public Ownable(_owner) { require(tokenAddress != address(0)); bnbToken = IERC20Token(bnbTokenAddress); token = TransferLimitedToken(tokenAddress); fund = ICrowdsaleFund(fundAddress); reservationFund = ICrowdsaleReservationFund(reservationFundAddress); bnbTokenWallet = _bnbTokenWallet; referralTokenWallet = _referralTokenWallet; foundationTokenWallet = _foundationTokenWallet; advisorsTokenWallet = _advisorsTokenWallet; companyTokenWallet = _companyTokenWallet; reserveTokenWallet = _reserveTokenWallet; bountyTokenWallet = _bountyTokenWallet; } /** * @dev check if address can contribute */ function isContributorInLists(address contributor) external view returns(bool) { return whiteList[contributor] || privilegedList[contributor] || token.limitedWallets(contributor); } /** * @dev check contribution amount and time */ function isValidContribution() internal view returns(bool) { uint256 currentUserContribution = safeAdd(msg.value, userTotalContributed[msg.sender]); if(whiteList[msg.sender] && msg.value >= ETHER_MIN_CONTRIB) { if(now <= MAX_CONTRIB_CHECK_END_TIME && currentUserContribution > ETHER_MAX_CONTRIB ) { return false; } return true; } if(privilegedList[msg.sender] && msg.value >= ETHER_MIN_CONTRIB_PRIVATE) { if(now <= MAX_CONTRIB_CHECK_END_TIME && currentUserContribution > ETHER_MAX_CONTRIB_PRIVATE ) { return false; } return true; } if(token.limitedWallets(msg.sender) && msg.value >= ETHER_MIN_CONTRIB_USA) { if(now <= MAX_CONTRIB_CHECK_END_TIME && currentUserContribution > ETHER_MAX_CONTRIB_USA) { return false; } return true; } return false; } /** * @dev Check hard cap overflow */ function validateCap() internal view returns(bool){ if(msg.value <= safeSub(hardCap, totalEtherContributed)) { return true; } return false; } /** * @dev Set token price once before start of crowdsale */ function setTokenPrice(uint256 _tokenPriceNum, uint256 _tokenPriceDenom) public onlyOwner { require(tokenPriceNum == 0 && tokenPriceDenom == 0); require(_tokenPriceNum > 0 && _tokenPriceDenom > 0); tokenPriceNum = _tokenPriceNum; tokenPriceDenom = _tokenPriceDenom; } /** * @dev Set hard cap. * @param _hardCap - Hard cap value */ function setHardCap(uint256 _hardCap) public onlyOwner { require(hardCap == 0); hardCap = _hardCap; } /** * @dev Set soft cap. * @param _softCap - Soft cap value */ function setSoftCap(uint256 _softCap) public onlyOwner { require(softCap == 0); softCap = _softCap; } /** * @dev Get soft cap amount **/ function getSoftCap() external view returns(uint256) { return softCap; } /** * @dev Check bnb contribution time, amount and hard cap overflow */ function isValidBNBContribution() internal view returns(bool) { if(token.limitedWallets(msg.sender)) { return false; } if(!whiteList[msg.sender] && !privilegedList[msg.sender]) { return false; } uint256 amount = bnbToken.allowance(msg.sender, address(this)); if(amount < BNB_MIN_CONTRIB || safeAdd(totalBNBContributed, amount) > BNB_HARD_CAP) { return false; } return true; } /** * @dev Calc bonus amount by contribution time */ function getBonus() internal constant returns (uint256, uint256) { uint256 numerator = 0; uint256 denominator = 100; if(now < BONUS_WINDOW_1_END_TIME) { numerator = 25; } else if(now < BONUS_WINDOW_2_END_TIME) { numerator = 15; } else if(now < BONUS_WINDOW_3_END_TIME) { numerator = 10; } else if(now < BONUS_WINDOW_4_END_TIME) { numerator = 5; } else { numerator = 0; } return (numerator, denominator); } function addToLists( address _wallet, bool isInWhiteList, bool isInPrivilegedList, bool isInLimitedList, bool hasAdditionalBonus ) public onlyOwner { if(isInWhiteList) { whiteList[_wallet] = true; } if(isInPrivilegedList) { privilegedList[_wallet] = true; } if(isInLimitedList) { token.addLimitedWalletAddress(_wallet); } if(hasAdditionalBonus) { additionalBonusOwnerState[_wallet] = AdditionalBonusState.Active; } if(reservationFund.canCompleteContribution(_wallet)) { reservationFund.completeContribution(_wallet); } } /** * @dev Add wallet to whitelist. For contract owner only. */ function addToWhiteList(address _wallet) public onlyOwner { whiteList[_wallet] = true; } /** * @dev Add wallet to additional bonus members. For contract owner only. */ function addAdditionalBonusMember(address _wallet) public onlyOwner { additionalBonusOwnerState[_wallet] = AdditionalBonusState.Active; } /** * @dev Add wallet to privileged list. For contract owner only. */ function addToPrivilegedList(address _wallet) public onlyOwner { privilegedList[_wallet] = true; } /** * @dev Set LockedTokens contract address */ function setLockedTokens(address lockedTokensAddress) public onlyOwner { lockedTokens = LockedTokens(lockedTokensAddress); } /** * @dev Fallback function to receive ether contributions */ function () payable public whenNotPaused { if(whiteList[msg.sender] || privilegedList[msg.sender] || token.limitedWallets(msg.sender)) { processContribution(msg.sender, msg.value); } else { processReservationContribution(msg.sender, msg.value); } } function processReservationContribution(address contributor, uint256 amount) private checkTime checkCap { require(amount >= ETHER_MIN_CONTRIB); if(now <= MAX_CONTRIB_CHECK_END_TIME) { uint256 currentUserContribution = safeAdd(amount, reservationFund.contributionsOf(contributor)); require(currentUserContribution <= ETHER_MAX_CONTRIB); } uint256 bonusNum = 0; uint256 bonusDenom = 100; (bonusNum, bonusDenom) = getBonus(); uint256 tokenBonusAmount = 0; uint256 tokenAmount = safeDiv(safeMul(amount, tokenPriceNum), tokenPriceDenom); if(bonusNum > 0) { tokenBonusAmount = safeDiv(safeMul(tokenAmount, bonusNum), bonusDenom); } reservationFund.processContribution.value(amount)( contributor, tokenAmount, tokenBonusAmount ); ReservationFundContribution(contributor, amount, tokenAmount, tokenBonusAmount, now); } /** * @dev Process BNB token contribution * Transfer all amount of tokens approved by sender. Calc bonuses and issue tokens to contributor. */ function processBNBContribution() public whenNotPaused checkTime checkBNBContribution { bool additionalBonusApplied = false; uint256 bonusNum = 0; uint256 bonusDenom = 100; (bonusNum, bonusDenom) = getBonus(); uint256 amountBNB = bnbToken.allowance(msg.sender, address(this)); bnbToken.transferFrom(msg.sender, address(this), amountBNB); bnbContributions[msg.sender] = safeAdd(bnbContributions[msg.sender], amountBNB); uint256 tokenBonusAmount = 0; uint256 tokenAmount = safeDiv(safeMul(amountBNB, BNB_TOKEN_PRICE_NUM), BNB_TOKEN_PRICE_DENOM); rawTokenSupply = safeAdd(rawTokenSupply, tokenAmount); if(bonusNum > 0) { tokenBonusAmount = safeDiv(safeMul(tokenAmount, bonusNum), bonusDenom); } if(additionalBonusOwnerState[msg.sender] == AdditionalBonusState.Active) { additionalBonusOwnerState[msg.sender] = AdditionalBonusState.Applied; uint256 additionalBonus = safeDiv(safeMul(tokenAmount, ADDITIONAL_BONUS_NUM), ADDITIONAL_BONUS_DENOM); tokenBonusAmount = safeAdd(tokenBonusAmount, additionalBonus); additionalBonusApplied = true; } uint256 tokenTotalAmount = safeAdd(tokenAmount, tokenBonusAmount); token.issue(msg.sender, tokenTotalAmount); totalBNBContributed = safeAdd(totalBNBContributed, amountBNB); LogBNBContribution(msg.sender, amountBNB, tokenAmount, tokenBonusAmount, additionalBonusApplied, now); } /** * @dev Process ether contribution. Calc bonuses and issue tokens to contributor. */ function processContribution(address contributor, uint256 amount) private checkTime checkContribution checkCap { bool additionalBonusApplied = false; uint256 bonusNum = 0; uint256 bonusDenom = 100; (bonusNum, bonusDenom) = getBonus(); uint256 tokenBonusAmount = 0; uint256 tokenAmount = safeDiv(safeMul(amount, tokenPriceNum), tokenPriceDenom); rawTokenSupply = safeAdd(rawTokenSupply, tokenAmount); if(bonusNum > 0) { tokenBonusAmount = safeDiv(safeMul(tokenAmount, bonusNum), bonusDenom); } if(additionalBonusOwnerState[contributor] == AdditionalBonusState.Active) { additionalBonusOwnerState[contributor] = AdditionalBonusState.Applied; uint256 additionalBonus = safeDiv(safeMul(tokenAmount, ADDITIONAL_BONUS_NUM), ADDITIONAL_BONUS_DENOM); tokenBonusAmount = safeAdd(tokenBonusAmount, additionalBonus); additionalBonusApplied = true; } processPayment(contributor, amount, tokenAmount, tokenBonusAmount, additionalBonusApplied); } /** * @dev Process ether contribution before KYC. Calc bonuses and tokens to issue after KYC. */ function processReservationFundContribution( address contributor, uint256 tokenAmount, uint256 tokenBonusAmount ) external payable checkCap { require(msg.sender == address(reservationFund)); require(msg.value > 0); rawTokenSupply = safeAdd(rawTokenSupply, tokenAmount); processPayment(contributor, msg.value, tokenAmount, tokenBonusAmount, false); } function processPayment(address contributor, uint256 etherAmount, uint256 tokenAmount, uint256 tokenBonusAmount, bool additionalBonusApplied) internal { uint256 tokenTotalAmount = safeAdd(tokenAmount, tokenBonusAmount); token.issue(contributor, tokenTotalAmount); fund.processContribution.value(etherAmount)(contributor); totalEtherContributed = safeAdd(totalEtherContributed, etherAmount); userTotalContributed[contributor] = safeAdd(userTotalContributed[contributor], etherAmount); LogContribution(contributor, etherAmount, tokenAmount, tokenBonusAmount, additionalBonusApplied, now); } /** * @dev Force crowdsale refund */ function forceCrowdsaleRefund() public onlyOwner { pause(); fund.enableCrowdsaleRefund(); reservationFund.onCrowdsaleEnd(); token.finishIssuance(); bnbRefundEnabled = true; } /** * @dev Finalize crowdsale if we reached hard cap or current time > SALE_END_TIME */ function finalizeCrowdsale() public onlyOwner { if( totalEtherContributed >= safeSub(hardCap, 1000 ether) || (now >= SALE_END_TIME && totalEtherContributed >= softCap) ) { fund.onCrowdsaleEnd(); reservationFund.onCrowdsaleEnd(); bnbWithdrawEnabled = true; // Referral uint256 referralTokenAmount = safeDiv(rawTokenSupply, 10); token.issue(referralTokenWallet, referralTokenAmount); // Foundation uint256 foundationTokenAmount = safeDiv(token.totalSupply(), 2); // 20% token.issue(address(lockedTokens), foundationTokenAmount); lockedTokens.addTokens(foundationTokenWallet, foundationTokenAmount, now + 365 days); uint256 suppliedTokenAmount = token.totalSupply(); // Reserve uint256 reservedTokenAmount = safeDiv(safeMul(suppliedTokenAmount, 3), 10); // 18% token.issue(address(lockedTokens), reservedTokenAmount); lockedTokens.addTokens(reserveTokenWallet, reservedTokenAmount, now + 183 days); // Advisors uint256 advisorsTokenAmount = safeDiv(suppliedTokenAmount, 10); // 6% token.issue(advisorsTokenWallet, advisorsTokenAmount); // Company uint256 companyTokenAmount = safeDiv(suppliedTokenAmount, 4); // 15% token.issue(address(lockedTokens), companyTokenAmount); lockedTokens.addTokens(companyTokenWallet, companyTokenAmount, now + 730 days); // Bounty uint256 bountyTokenAmount = safeDiv(suppliedTokenAmount, 60); // 1% token.issue(bountyTokenWallet, bountyTokenAmount); token.finishIssuance(); } else if(now >= SALE_END_TIME) { // Enable fund`s crowdsale refund if soft cap is not reached fund.enableCrowdsaleRefund(); reservationFund.onCrowdsaleEnd(); token.finishIssuance(); bnbRefundEnabled = true; } } /** * @dev Withdraw bnb after crowdsale if crowdsale is not in refund mode */ function withdrawBNB() public onlyOwner { require(bnbWithdrawEnabled); // BNB transfer if(bnbToken.balanceOf(address(this)) > 0) { bnbToken.transfer(bnbTokenWallet, bnbToken.balanceOf(address(this))); } } /** * @dev Function is called by contributor to refund BNB token payments if crowdsale failed to reach soft cap */ function refundBNBContributor() public { require(bnbRefundEnabled); require(bnbContributions[msg.sender] > 0); uint256 amount = bnbContributions[msg.sender]; bnbContributions[msg.sender] = 0; bnbToken.transfer(msg.sender, amount); token.destroy(msg.sender, token.balanceOf(msg.sender)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"BNB_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bnbTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"privilegedList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bnbWithdrawEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MIN_CONTRIB","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MAX_CONTRIB_PRIVATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBNB","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SALE_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bnbToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rawTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BNB_TOKEN_PRICE_DENOM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contributor","type":"address"},{"name":"tokenAmount","type":"uint256"},{"name":"tokenBonusAmount","type":"uint256"}],"name":"processReservationFundContribution","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whiteList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bnbContributions","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SALE_START_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"addToWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSoftCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"addToPrivilegedList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"processBNBContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADDITIONAL_BONUS_DENOM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"addAdditionalBonusMember","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"},{"name":"isInWhiteList","type":"bool"},{"name":"isInPrivilegedList","type":"bool"},{"name":"isInLimitedList","type":"bool"},{"name":"hasAdditionalBonus","type":"bool"}],"name":"addToLists","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"forceCrowdsaleRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BNB_TOKEN_PRICE_NUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refundBNBContributor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BONUS_WINDOW_4_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributor","type":"address"}],"name":"isContributorInLists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_CONTRIB_CHECK_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundationTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBNBContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MIN_CONTRIB_USA","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"additionalBonusOwnerState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MIN_CONTRIB_PRIVATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"lockedTokensAddress","type":"address"}],"name":"setLockedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADDITIONAL_BONUS_NUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEtherContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fund","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reservationFund","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hardCap","type":"uint256"}],"name":"setHardCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_softCap","type":"uint256"}],"name":"setSoftCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"confirmOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BONUS_WINDOW_2_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BONUS_WINDOW_1_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BNB_MIN_CONTRIB","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advisorsTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MAX_CONTRIB_USA","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTotalContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenPriceNum","type":"uint256"},{"name":"_tokenPriceDenom","type":"uint256"}],"name":"setTokenPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bnbRefundEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"companyTokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ETHER_MAX_CONTRIB","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceDenom","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BONUS_WINDOW_3_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"bnbTokenAddress","type":"address"},{"name":"tokenAddress","type":"address"},{"name":"fundAddress","type":"address"},{"name":"reservationFundAddress","type":"address"},{"name":"_bnbTokenWallet","type":"address"},{"name":"_referralTokenWallet","type":"address"},{"name":"_foundationTokenWallet","type":"address"},{"name":"_advisorsTokenWallet","type":"address"},{"name":"_companyTokenWallet","type":"address"},{"name":"_reserveTokenWallet","type":"address"},{"name":"_bountyTokenWallet","type":"address"},{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"amountWei","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"},{"indexed":false,"name":"tokenBonus","type":"uint256"},{"indexed":false,"name":"additionalBonusApplied","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"LogContribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"amountWei","type":"uint256"},{"indexed":false,"name":"tokensToIssue","type":"uint256"},{"indexed":false,"name":"bonusTokensToIssue","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"ReservationFundContribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"amountBNB","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"},{"indexed":false,"name":"tokenBonus","type":"uint256"},{"indexed":false,"name":"additionalBonusApplied","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"LogBNBContribution","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60606040526001805460a060020a60ff021916905560006002819055600381905560138190556014819055693f870857a3e0e3800000601655683635c9adc5dea000006017556019819055601a805460ff19908116909155601b829055601c91909155601d80549091169055341561007657600080fd5b6040516101808062002cc38339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519150819050600160a060020a038116156100f257806100f4565b335b60008054600160a060020a031916600160a060020a039283161790558c161515905061011f57600080fd5b5060158054600160a060020a0319908116600160a060020a039d8e16179091556004805482169b8d169b909b17909a55600580548b16998c1699909917909855600680548a16978b1697909717909655600c80548916958a1695909517909455600d8054881693891693909317909255600e80548716918816919091179055600f80548616918716919091179055601080548516918616919091179055601180548416918516919091179055601280549092169216919091179055612ad980620001ea6000396000f3006060604052600436106103075763ffffffff60e060020a60003504166212d90a81146103eb5780630bf318a3146104105780630ce4e104146104235780630eb34740146104525780631167b01214610465578063117387351461049857806316cb9100146104ab57806316cff09c146104be5780631d111d13146104d157806320a0045a146104e45780632b17b6a9146104f75780632cae9add1461050a5780632d7ed15c1461051d57806337033be614610530578063372c12b11461054a5780633f4ba83a146105695780633fc9b4231461057c57806344dbb5711461059b57806347ee0394146105ae5780634d52a512146105cd5780634f0b8374146105e0578063511d2299146105ff57806352860ea21461061257806352f18042146106255780635707812e146106445780635c975abb1461067757806362024dce1461068a5780636217903f1461069d578063668c1a46146106b057806372e2cac8146106c3578063772fdcb1146106d65780638456cb59146106f5578063857ba7fb146107085780638da5cb5b1461071b578063903171ae1461072e578063906a26e01461074157806392a0fd641461075457806393632ddd14610767578063a3223d50146104ab578063a336ffa51461077a578063aa1f609f146107bd578063acb9656c146107d0578063b0d3a396146107ef578063b591fc6914610802578063b60d428814610815578063b78c151714610828578063cc96019f1461083b578063cea024d91461084e578063d0e6cfec14610861578063d18d944b14610874578063d4ee1d901461088a578063d5cf5c721461089d578063d5d1e770146108b3578063d81f9830146108c6578063df0da20e146108d9578063dfb3557b146108ec578063e6ff0853146108ff578063e8faf89c14610912578063eb6389a514610925578063eb685c4714610944578063f1762e5d1461095d578063f190a79314610970578063f2fde38b14610983578063f3b5678f14610912578063f79ebd7f146109a2578063fb23bbb1146109b5578063fb86a404146109c8578063fc0c546a146109db575b60015460a060020a900460ff161561031e57600080fd5b600160a060020a03331660009081526008602052604090205460ff168061035d5750600160a060020a03331660009081526009602052604090205460ff165b806103cb5750600454600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156103b357600080fd5b5af115156103c057600080fd5b505050604051805190505b156103df576103da33346109ee565b6103e9565b6103e93334610b38565b005b34156103f657600080fd5b6103fe610d45565b60405190815260200160405180910390f35b341561041b57600080fd5b6103e9610d4b565b341561042e57600080fd5b6104366114e2565b604051600160a060020a03909116815260200160405180910390f35b341561045d57600080fd5b6104366114f1565b341561047057600080fd5b610484600160a060020a0360043516611500565b604051901515815260200160405180910390f35b34156104a357600080fd5b610484611515565b34156104b657600080fd5b6103fe61151e565b34156104c957600080fd5b6103fe61152a565b34156104dc57600080fd5b6103e9611537565b34156104ef57600080fd5b6103fe6116a5565b341561050257600080fd5b6104366116ad565b341561051557600080fd5b6103fe6116bc565b341561052857600080fd5b6103fe6116c2565b6103e9600160a060020a03600435166024356044356116c7565b341561055557600080fd5b610484600160a060020a0360043516611724565b341561057457600080fd5b6103e9611739565b341561058757600080fd5b6103fe600160a060020a03600435166117b8565b34156105a657600080fd5b6103fe6117ca565b34156105b957600080fd5b6103e9600160a060020a03600435166117d2565b34156105d857600080fd5b6103fe611811565b34156105eb57600080fd5b6103e9600160a060020a0360043516611818565b341561060a57600080fd5b6103e9611857565b341561061d57600080fd5b6103fe611baa565b341561063057600080fd5b6103e9600160a060020a0360043516611baf565b341561064f57600080fd5b6103e9600160a060020a03600435166024351515604435151560643515156084351515611bee565b341561068257600080fd5b610484611dbe565b341561069557600080fd5b6103e9611dce565b34156106a857600080fd5b6103fe611ef6565b34156106bb57600080fd5b6103e9611efb565b34156106ce57600080fd5b6103fe612081565b34156106e157600080fd5b610484600160a060020a0360043516612089565b341561070057600080fd5b6103e961213c565b341561071357600080fd5b6103fe6121c0565b341561072657600080fd5b6104366121c8565b341561073957600080fd5b6104366121d7565b341561074c57600080fd5b6103fe6121e6565b341561075f57600080fd5b6104366121ec565b341561077257600080fd5b6103fe6121fb565b341561078557600080fd5b610799600160a060020a0360043516612201565b604051808260028111156107a957fe5b60ff16815260200191505060405180910390f35b34156107c857600080fd5b6103fe612216565b34156107db57600080fd5b6103e9600160a060020a0360043516612223565b34156107fa57600080fd5b6103fe61226d565b341561080d57600080fd5b6103fe612272565b341561082057600080fd5b610436612278565b341561083357600080fd5b610436612287565b341561084657600080fd5b610436612296565b341561085957600080fd5b6103fe6122a5565b341561086c57600080fd5b6104366122ab565b341561087f57600080fd5b6103e96004356122ba565b341561089557600080fd5b6104366122e7565b34156108a857600080fd5b6103e96004356122f6565b34156108be57600080fd5b6103e9612323565b34156108d157600080fd5b6103fe6123ca565b34156108e457600080fd5b6103fe6123d2565b34156108f757600080fd5b6103fe6123da565b341561090a57600080fd5b6104366123e0565b341561091d57600080fd5b6103fe6123ef565b341561093057600080fd5b6103fe600160a060020a03600435166123fc565b341561094f57600080fd5b6103e960043560243561240e565b341561096857600080fd5b61048461246a565b341561097b57600080fd5b610436612473565b341561098e57600080fd5b6103e9600160a060020a0360043516612482565b34156109ad57600080fd5b6103fe6124e7565b34156109c057600080fd5b6103fe6124ed565b34156109d357600080fd5b6103fe6124f5565b34156109e657600080fd5b6104366124fb565b600080600080600080635ad74f604210158015610a0f5750635afc39604211155b1515610a1a57600080fd5b610a2261250a565b1515610a2d57600080fd5b610a356126ac565b1515610a4057600080fd5b600095506000945060649350610a546126d0565b809550819650505060009250610a77610a6f88600254612738565b600354612763565b9150610a856014548361277a565b6014556000851115610aa757610aa4610a9e8387612738565b85612763565b92505b6001600160a060020a0389166000908152600a602052604090205460ff166002811115610ad057fe5b1415610b2157600160a060020a0388166000908152600a60205260409020805460ff19166002179055610b0e610b07836003612738565b6064612763565b9050610b1a838261277a565b9250600195505b610b2e888884868a612789565b5050505050505050565b6000806000806000635ad74f604210158015610b585750635afc39604211155b1515610b6357600080fd5b610b6b6126ac565b1515610b7657600080fd5b6702c68af0bb140000861015610b8b57600080fd5b635ad8a0e04211610c2057600654610c08908790600160a060020a0316633af0dbc18a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bec57600080fd5b5af11515610bf957600080fd5b5050506040518051905061277a565b94506801158e460913d00000851115610c2057600080fd5b6000935060649250610c306126d0565b809450819550505060009150610c4b610a6f87600254612738565b90506000841115610c6c57610c69610c638286612738565b84612763565b91505b600654600160a060020a031663ef8b0e158789848660405160e060020a63ffffffff8716028152600160a060020a039093166004840152602483019190915260448201526064016000604051808303818588803b1515610ccb57600080fd5b5af11515610cd857600080fd5b505050507ffc42b1040c2ac21c825c42ccdad60925abb0462e7bd3a47cf21ad859ee8665468787838542604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a150505050505050565b60165481565b6000805481908190819081908190819033600160a060020a03908116911614610d7357600080fd5b610d88601b54683635c9adc5dea0000061292e565b601354101580610dab5750635afc39604210158015610dab5750601c5460135410155b156113ca57600554600160a060020a0316636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610def57600080fd5b5af11515610dfc57600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610e3f57600080fd5b5af11515610e4c57600080fd5b5050601a805460ff1916600117905550601454610e6a90600a612763565b600454600d54919850600160a060020a039081169163867904b491168960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610eca57600080fd5b5af11515610ed757600080fd5b5050600454610f3b9150600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f1d57600080fd5b5af11515610f2a57600080fd5b505050604051805190506002612763565b600454600754919750600160a060020a039081169163867904b491168860405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610f9b57600080fd5b5af11515610fa857600080fd5b5050600754600e54600160a060020a03918216925063ca056aed9116886301e13380420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b151561101757600080fd5b5af1151561102457600080fd5b5050600454600160a060020a031690506318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561106757600080fd5b5af1151561107457600080fd5b50505060405180519050945061109561108e866003612738565b600a612763565b600454600754919550600160a060020a039081169163867904b491168660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156110f557600080fd5b5af1151561110257600080fd5b5050600754601154600160a060020a03918216925063ca056aed91168662f14280420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b151561117057600080fd5b5af1151561117d57600080fd5b50505061118b85600a612763565b600454600f54919450600160a060020a039081169163867904b491168560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156111eb57600080fd5b5af115156111f857600080fd5b505050611206856004612763565b600454600754919350600160a060020a039081169163867904b491168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561126657600080fd5b5af1151561127357600080fd5b5050600754601054600160a060020a03918216925063ca056aed9116846303c26700420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b15156112e257600080fd5b5af115156112ef57600080fd5b5050506112fd85603c612763565b600454601254919250600160a060020a039081169163867904b491168360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561135d57600080fd5b5af1151561136a57600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113ad57600080fd5b5af115156113ba57600080fd5b50505060405180519050506114d9565b635afc396042106114d957600554600160a060020a0316633b64e77e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561141457600080fd5b5af1151561142157600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561146457600080fd5b5af1151561147157600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156114b457600080fd5b5af115156114c157600080fd5b50505060405180515050601d805460ff191660011790555b50505050505050565b600c54600160a060020a031681565b600754600160a060020a031681565b60096020526000908152604090205460ff1681565b601a5460ff1681565b6702c68af0bb14000081565b68a2a15d09519be0000081565b60005433600160a060020a0390811691161461155257600080fd5b601a5460ff16151561156357600080fd5b601554600090600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156115b657600080fd5b5af115156115c357600080fd5b5050506040518051905011156116a357601554600c54600160a060020a039182169163a9059cbb9116826370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561163157600080fd5b5af1151561163e57600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561168b57600080fd5b5af1151561169857600080fd5b505050604051805150505b565b635afc396081565b601554600160a060020a031681565b60145481565b600181565b6116cf6126ac565b15156116da57600080fd5b60065433600160a060020a039081169116146116f557600080fd5b6000341161170257600080fd5b61170e6014548361277a565b60145561171f833484846000612789565b505050565b60086020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461175457600080fd5b60015460a060020a900460ff16151561176c57600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60186020526000908152604090205481565b635ad74f6081565b60005433600160a060020a039081169116146117ed57600080fd5b600160a060020a03166000908152600860205260409020805460ff19166001179055565b601c545b90565b60005433600160a060020a0390811691161461183357600080fd5b600160a060020a03166000908152600960205260409020805460ff19166001179055565b600080600080600080600080600160149054906101000a900460ff1615151561187f57600080fd5b635ad74f6042101580156118975750635afc39604211155b15156118a257600080fd5b6118aa612940565b15156118b557600080fd5b6000975060009650606495506118c96126d0565b6015549198509650600160a060020a031663dd62ed3e333060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561192657600080fd5b5af1151561193357600080fd5b5050506040518051601554909650600160a060020a031690506323b872dd33308860405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156119a357600080fd5b5af115156119b057600080fd5b50505060405180515050600160a060020a0333166000908152601860205260409020546119dd908661277a565b600160a060020a0333166000908152601860205260408120919091559350611a10611a098660a9612738565b6001612763565b9250611a1e6014548461277a565b6014556000871115611a4057611a3d611a378489612738565b87612763565b93505b6001600160a060020a0333166000908152600a602052604090205460ff166002811115611a6957fe5b1415611ab35733600160a060020a03166000908152600a60205260409020805460ff19166002179055611aa0610b07846003612738565b9150611aac848361277a565b9350600197505b611abd838561277a565b600454909150600160a060020a031663867904b4338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611b1657600080fd5b5af11515611b2357600080fd5b505050611b326019548661277a565b6019557f934a07288cb83800d6bb14a38c6c12f397a925ad87ce3b745c6804db1ecee24f338685878c42604051600160a060020a039096168652602086019490945260408086019390935260608501919091521515608084015260a083019190915260c0909101905180910390a15050505050505050565b606481565b60005433600160a060020a03908116911614611bca57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b60005433600160a060020a03908116911614611c0957600080fd5b8315611c3357600160a060020a0385166000908152600860205260409020805460ff191660011790555b8215611c5d57600160a060020a0385166000908152600960205260409020805460ff191660011790555b8115611cc457600454600160a060020a031663ee8cbc9d8660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515611cb357600080fd5b5af11515611cc057600080fd5b5050505b8015611cee57600160a060020a0385166000908152600a60205260409020805460ff191660011790555b600654600160a060020a031663f50a26448660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611d3e57600080fd5b5af11515611d4b57600080fd5b5050506040518051905015611db757600654600160a060020a03166331aa91fc8660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515611daa57600080fd5b5af11515610b2e57600080fd5b5050505050565b60015460a060020a900460ff1681565b60005433600160a060020a03908116911614611de957600080fd5b611df161213c565b600554600160a060020a0316633b64e77e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611e3057600080fd5b5af11515611e3d57600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611e8057600080fd5b5af11515611e8d57600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ed057600080fd5b5af11515611edd57600080fd5b50505060405180515050601d805460ff19166001179055565b60a981565b601d5460009060ff161515611f0f57600080fd5b600160a060020a03331660009081526018602052604081205411611f3257600080fd5b50600160a060020a033381811660009081526018602052604080822080549290556015549193919091169163a9059cbb9184905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611fa657600080fd5b5af11515611fb357600080fd5b50505060405180515050600454600160a060020a031663a24835d133826370a082318260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561201457600080fd5b5af1151561202157600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561206e57600080fd5b5af1151561207b57600080fd5b50505050565b635af2fee081565b600160a060020a03811660009081526008602052604081205460ff16806120c85750600160a060020a03821660009081526009602052604090205460ff165b806121365750600454600160a060020a0316632e2174058360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561211e57600080fd5b5af1151561212b57600080fd5b505050604051805190505b92915050565b60005433600160a060020a0390811691161461215757600080fd5b60015460a060020a900460ff161561216e57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b635ad8a0e081565b600054600160a060020a031681565b600e54600160a060020a031681565b601c5481565b601154600160a060020a031681565b60195481565b600a6020526000908152604090205460ff1681565b68056bc75e2d6310000081565b60005433600160a060020a0390811691161461223e57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600381565b60135481565b600554600160a060020a031681565b600654600160a060020a031681565b600d54600160a060020a031681565b60025481565b601254600160a060020a031681565b60005433600160a060020a039081169116146122d557600080fd5b601b54156122e257600080fd5b601b55565b600154600160a060020a031681565b60005433600160a060020a0390811691161461231157600080fd5b601c541561231e57600080fd5b601c55565b60015433600160a060020a0390811691161461233e57600080fd5b6000546001547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b635ae089e081565b635ad9f26081565b60175481565b600f54600160a060020a031681565b6801158e460913d0000081565b600b6020526000908152604090205481565b60005433600160a060020a0390811691161461242957600080fd5b6002541580156124395750600354155b151561244457600080fd5b6000821180156124545750600081115b151561245f57600080fd5b600291909155600355565b601d5460ff1681565b601054600160a060020a031681565b60005433600160a060020a0390811691161461249d57600080fd5b600054600160a060020a03828116911614156124b857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035481565b635ae9c46081565b601b5481565b600454600160a060020a031681565b600160a060020a0333166000908152600b6020526040812054819061253090349061277a565b600160a060020a03331660009081526008602052604090205490915060ff16801561256357506702c68af0bb1400003410155b1561259b57635ad8a0e0421180159061258457506801158e460913d0000081115b1561259257600091506126a8565b600191506126a8565b600160a060020a03331660009081526009602052604090205460ff1680156125cc575068056bc75e2d631000003410155b156125fa57635ad8a0e04211801590612584575068a2a15d09519be0000081111561259257600091506126a8565b600454600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561264a57600080fd5b5af1151561265757600080fd5b50505060405180519050801561267557506702c68af0bb1400003410155b156126a357635ad8a0e0421180159061258457506801158e460913d0000081111561259257600091506126a8565b600091505b5090565b60006126bc601b5460135461292e565b34116126ca57506001611815565b50600090565b600080806064635ad9f2604210156126eb576019915061272f565b635ae089e042101561270057600f915061272f565b635ae9c46042101561271557600a915061272f565b635af2fee042101561272a576005915061272f565b600091505b90939092509050565b6000828202831580612754575082848281151561275157fe5b04145b151561275c57fe5b9392505050565b600080828481151561277157fe5b04949350505050565b60008282018381101561275c57fe5b6000612795848461277a565b600454909150600160a060020a031663867904b4878360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156127ee57600080fd5b5af115156127fb57600080fd5b5050600554600160a060020a0316905063a78a651a868860405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561284f57600080fd5b5af1151561285c57600080fd5b5050505061286c6013548661277a565b601355600160a060020a0386166000908152600b6020526040902054612892908661277a565b600b600088600160a060020a0316600160a060020a03168152602001908152602001600020819055507f77cbff9b281bbc6839ce326b536ee9d11c49c42e936fe518d7c47d7296f73424868686868642604051600160a060020a039096168652602086019490945260408086019390935260608501919091521515608084015260a083019190915260c0909101905180910390a1505050505050565b60008183101561293a57fe5b50900390565b6004546000908190600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561299557600080fd5b5af115156129a257600080fd5b50505060405180519050156129ba57600091506126a8565b600160a060020a03331660009081526008602052604090205460ff161580156129fc5750600160a060020a03331660009081526009602052604090205460ff16155b15612a0a57600091506126a8565b601554600160a060020a031663dd62ed3e333060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515612a6257600080fd5b5af11515612a6f57600080fd5b505050604051805190509050601754811080612a975750601654612a956019548361277a565b115b15612aa557600091506126a8565b6001915050905600a165627a7a7230582000085a7c69db841a94328afc45904e3c776ec53cb5bb04a9f82263fff734cdc10029000000000000000000000000b8c77482e45f1f44de1745f52c74426c631bdd520000000000000000000000000e8d6b471e332f140e7d9dbb99e5e3822f728da600000000000000000000000049db6ee4507132d1fdac92318e0e6150bf786728000000000000000000000000035611f47a13f3603109152952f0034c674959ba000000000000000000000000ba121eba02961b7fa53fafcbb53826e1acd5a472000000000000000000000000f759cae90459c72bb3668fcd8e674f9e1eb9c2c30000000000000000000000009496dbbb9bc9fd78d4735b954569a54fe2a0d9f300000000000000000000000011f21536f888def8c7d2c4785f3f70b3ddbca1b90000000000000000000000005686508abbff20db6a582643280601ef53b58ddf000000000000000000000000a1568c501e650c83337f8119b6276c0de4aabb0f00000000000000000000000073c2d67e4181ad1926b4b47b56d3d2c198b876040000000000000000000000005eaf0a37346ff992199fbc4480c9ccc4137d9c1f
Deployed Bytecode
0x6060604052600436106103075763ffffffff60e060020a60003504166212d90a81146103eb5780630bf318a3146104105780630ce4e104146104235780630eb34740146104525780631167b01214610465578063117387351461049857806316cb9100146104ab57806316cff09c146104be5780631d111d13146104d157806320a0045a146104e45780632b17b6a9146104f75780632cae9add1461050a5780632d7ed15c1461051d57806337033be614610530578063372c12b11461054a5780633f4ba83a146105695780633fc9b4231461057c57806344dbb5711461059b57806347ee0394146105ae5780634d52a512146105cd5780634f0b8374146105e0578063511d2299146105ff57806352860ea21461061257806352f18042146106255780635707812e146106445780635c975abb1461067757806362024dce1461068a5780636217903f1461069d578063668c1a46146106b057806372e2cac8146106c3578063772fdcb1146106d65780638456cb59146106f5578063857ba7fb146107085780638da5cb5b1461071b578063903171ae1461072e578063906a26e01461074157806392a0fd641461075457806393632ddd14610767578063a3223d50146104ab578063a336ffa51461077a578063aa1f609f146107bd578063acb9656c146107d0578063b0d3a396146107ef578063b591fc6914610802578063b60d428814610815578063b78c151714610828578063cc96019f1461083b578063cea024d91461084e578063d0e6cfec14610861578063d18d944b14610874578063d4ee1d901461088a578063d5cf5c721461089d578063d5d1e770146108b3578063d81f9830146108c6578063df0da20e146108d9578063dfb3557b146108ec578063e6ff0853146108ff578063e8faf89c14610912578063eb6389a514610925578063eb685c4714610944578063f1762e5d1461095d578063f190a79314610970578063f2fde38b14610983578063f3b5678f14610912578063f79ebd7f146109a2578063fb23bbb1146109b5578063fb86a404146109c8578063fc0c546a146109db575b60015460a060020a900460ff161561031e57600080fd5b600160a060020a03331660009081526008602052604090205460ff168061035d5750600160a060020a03331660009081526009602052604090205460ff165b806103cb5750600454600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156103b357600080fd5b5af115156103c057600080fd5b505050604051805190505b156103df576103da33346109ee565b6103e9565b6103e93334610b38565b005b34156103f657600080fd5b6103fe610d45565b60405190815260200160405180910390f35b341561041b57600080fd5b6103e9610d4b565b341561042e57600080fd5b6104366114e2565b604051600160a060020a03909116815260200160405180910390f35b341561045d57600080fd5b6104366114f1565b341561047057600080fd5b610484600160a060020a0360043516611500565b604051901515815260200160405180910390f35b34156104a357600080fd5b610484611515565b34156104b657600080fd5b6103fe61151e565b34156104c957600080fd5b6103fe61152a565b34156104dc57600080fd5b6103e9611537565b34156104ef57600080fd5b6103fe6116a5565b341561050257600080fd5b6104366116ad565b341561051557600080fd5b6103fe6116bc565b341561052857600080fd5b6103fe6116c2565b6103e9600160a060020a03600435166024356044356116c7565b341561055557600080fd5b610484600160a060020a0360043516611724565b341561057457600080fd5b6103e9611739565b341561058757600080fd5b6103fe600160a060020a03600435166117b8565b34156105a657600080fd5b6103fe6117ca565b34156105b957600080fd5b6103e9600160a060020a03600435166117d2565b34156105d857600080fd5b6103fe611811565b34156105eb57600080fd5b6103e9600160a060020a0360043516611818565b341561060a57600080fd5b6103e9611857565b341561061d57600080fd5b6103fe611baa565b341561063057600080fd5b6103e9600160a060020a0360043516611baf565b341561064f57600080fd5b6103e9600160a060020a03600435166024351515604435151560643515156084351515611bee565b341561068257600080fd5b610484611dbe565b341561069557600080fd5b6103e9611dce565b34156106a857600080fd5b6103fe611ef6565b34156106bb57600080fd5b6103e9611efb565b34156106ce57600080fd5b6103fe612081565b34156106e157600080fd5b610484600160a060020a0360043516612089565b341561070057600080fd5b6103e961213c565b341561071357600080fd5b6103fe6121c0565b341561072657600080fd5b6104366121c8565b341561073957600080fd5b6104366121d7565b341561074c57600080fd5b6103fe6121e6565b341561075f57600080fd5b6104366121ec565b341561077257600080fd5b6103fe6121fb565b341561078557600080fd5b610799600160a060020a0360043516612201565b604051808260028111156107a957fe5b60ff16815260200191505060405180910390f35b34156107c857600080fd5b6103fe612216565b34156107db57600080fd5b6103e9600160a060020a0360043516612223565b34156107fa57600080fd5b6103fe61226d565b341561080d57600080fd5b6103fe612272565b341561082057600080fd5b610436612278565b341561083357600080fd5b610436612287565b341561084657600080fd5b610436612296565b341561085957600080fd5b6103fe6122a5565b341561086c57600080fd5b6104366122ab565b341561087f57600080fd5b6103e96004356122ba565b341561089557600080fd5b6104366122e7565b34156108a857600080fd5b6103e96004356122f6565b34156108be57600080fd5b6103e9612323565b34156108d157600080fd5b6103fe6123ca565b34156108e457600080fd5b6103fe6123d2565b34156108f757600080fd5b6103fe6123da565b341561090a57600080fd5b6104366123e0565b341561091d57600080fd5b6103fe6123ef565b341561093057600080fd5b6103fe600160a060020a03600435166123fc565b341561094f57600080fd5b6103e960043560243561240e565b341561096857600080fd5b61048461246a565b341561097b57600080fd5b610436612473565b341561098e57600080fd5b6103e9600160a060020a0360043516612482565b34156109ad57600080fd5b6103fe6124e7565b34156109c057600080fd5b6103fe6124ed565b34156109d357600080fd5b6103fe6124f5565b34156109e657600080fd5b6104366124fb565b600080600080600080635ad74f604210158015610a0f5750635afc39604211155b1515610a1a57600080fd5b610a2261250a565b1515610a2d57600080fd5b610a356126ac565b1515610a4057600080fd5b600095506000945060649350610a546126d0565b809550819650505060009250610a77610a6f88600254612738565b600354612763565b9150610a856014548361277a565b6014556000851115610aa757610aa4610a9e8387612738565b85612763565b92505b6001600160a060020a0389166000908152600a602052604090205460ff166002811115610ad057fe5b1415610b2157600160a060020a0388166000908152600a60205260409020805460ff19166002179055610b0e610b07836003612738565b6064612763565b9050610b1a838261277a565b9250600195505b610b2e888884868a612789565b5050505050505050565b6000806000806000635ad74f604210158015610b585750635afc39604211155b1515610b6357600080fd5b610b6b6126ac565b1515610b7657600080fd5b6702c68af0bb140000861015610b8b57600080fd5b635ad8a0e04211610c2057600654610c08908790600160a060020a0316633af0dbc18a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bec57600080fd5b5af11515610bf957600080fd5b5050506040518051905061277a565b94506801158e460913d00000851115610c2057600080fd5b6000935060649250610c306126d0565b809450819550505060009150610c4b610a6f87600254612738565b90506000841115610c6c57610c69610c638286612738565b84612763565b91505b600654600160a060020a031663ef8b0e158789848660405160e060020a63ffffffff8716028152600160a060020a039093166004840152602483019190915260448201526064016000604051808303818588803b1515610ccb57600080fd5b5af11515610cd857600080fd5b505050507ffc42b1040c2ac21c825c42ccdad60925abb0462e7bd3a47cf21ad859ee8665468787838542604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a150505050505050565b60165481565b6000805481908190819081908190819033600160a060020a03908116911614610d7357600080fd5b610d88601b54683635c9adc5dea0000061292e565b601354101580610dab5750635afc39604210158015610dab5750601c5460135410155b156113ca57600554600160a060020a0316636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610def57600080fd5b5af11515610dfc57600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515610e3f57600080fd5b5af11515610e4c57600080fd5b5050601a805460ff1916600117905550601454610e6a90600a612763565b600454600d54919850600160a060020a039081169163867904b491168960405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610eca57600080fd5b5af11515610ed757600080fd5b5050600454610f3b9150600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f1d57600080fd5b5af11515610f2a57600080fd5b505050604051805190506002612763565b600454600754919750600160a060020a039081169163867904b491168860405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610f9b57600080fd5b5af11515610fa857600080fd5b5050600754600e54600160a060020a03918216925063ca056aed9116886301e13380420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b151561101757600080fd5b5af1151561102457600080fd5b5050600454600160a060020a031690506318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561106757600080fd5b5af1151561107457600080fd5b50505060405180519050945061109561108e866003612738565b600a612763565b600454600754919550600160a060020a039081169163867904b491168660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156110f557600080fd5b5af1151561110257600080fd5b5050600754601154600160a060020a03918216925063ca056aed91168662f14280420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b151561117057600080fd5b5af1151561117d57600080fd5b50505061118b85600a612763565b600454600f54919450600160a060020a039081169163867904b491168560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156111eb57600080fd5b5af115156111f857600080fd5b505050611206856004612763565b600454600754919350600160a060020a039081169163867904b491168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561126657600080fd5b5af1151561127357600080fd5b5050600754601054600160a060020a03918216925063ca056aed9116846303c26700420160405160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091526044820152606401600060405180830381600087803b15156112e257600080fd5b5af115156112ef57600080fd5b5050506112fd85603c612763565b600454601254919250600160a060020a039081169163867904b491168360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561135d57600080fd5b5af1151561136a57600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113ad57600080fd5b5af115156113ba57600080fd5b50505060405180519050506114d9565b635afc396042106114d957600554600160a060020a0316633b64e77e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561141457600080fd5b5af1151561142157600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561146457600080fd5b5af1151561147157600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156114b457600080fd5b5af115156114c157600080fd5b50505060405180515050601d805460ff191660011790555b50505050505050565b600c54600160a060020a031681565b600754600160a060020a031681565b60096020526000908152604090205460ff1681565b601a5460ff1681565b6702c68af0bb14000081565b68a2a15d09519be0000081565b60005433600160a060020a0390811691161461155257600080fd5b601a5460ff16151561156357600080fd5b601554600090600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156115b657600080fd5b5af115156115c357600080fd5b5050506040518051905011156116a357601554600c54600160a060020a039182169163a9059cbb9116826370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561163157600080fd5b5af1151561163e57600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561168b57600080fd5b5af1151561169857600080fd5b505050604051805150505b565b635afc396081565b601554600160a060020a031681565b60145481565b600181565b6116cf6126ac565b15156116da57600080fd5b60065433600160a060020a039081169116146116f557600080fd5b6000341161170257600080fd5b61170e6014548361277a565b60145561171f833484846000612789565b505050565b60086020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461175457600080fd5b60015460a060020a900460ff16151561176c57600080fd5b6001805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60186020526000908152604090205481565b635ad74f6081565b60005433600160a060020a039081169116146117ed57600080fd5b600160a060020a03166000908152600860205260409020805460ff19166001179055565b601c545b90565b60005433600160a060020a0390811691161461183357600080fd5b600160a060020a03166000908152600960205260409020805460ff19166001179055565b600080600080600080600080600160149054906101000a900460ff1615151561187f57600080fd5b635ad74f6042101580156118975750635afc39604211155b15156118a257600080fd5b6118aa612940565b15156118b557600080fd5b6000975060009650606495506118c96126d0565b6015549198509650600160a060020a031663dd62ed3e333060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561192657600080fd5b5af1151561193357600080fd5b5050506040518051601554909650600160a060020a031690506323b872dd33308860405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156119a357600080fd5b5af115156119b057600080fd5b50505060405180515050600160a060020a0333166000908152601860205260409020546119dd908661277a565b600160a060020a0333166000908152601860205260408120919091559350611a10611a098660a9612738565b6001612763565b9250611a1e6014548461277a565b6014556000871115611a4057611a3d611a378489612738565b87612763565b93505b6001600160a060020a0333166000908152600a602052604090205460ff166002811115611a6957fe5b1415611ab35733600160a060020a03166000908152600a60205260409020805460ff19166002179055611aa0610b07846003612738565b9150611aac848361277a565b9350600197505b611abd838561277a565b600454909150600160a060020a031663867904b4338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611b1657600080fd5b5af11515611b2357600080fd5b505050611b326019548661277a565b6019557f934a07288cb83800d6bb14a38c6c12f397a925ad87ce3b745c6804db1ecee24f338685878c42604051600160a060020a039096168652602086019490945260408086019390935260608501919091521515608084015260a083019190915260c0909101905180910390a15050505050505050565b606481565b60005433600160a060020a03908116911614611bca57600080fd5b600160a060020a03166000908152600a60205260409020805460ff19166001179055565b60005433600160a060020a03908116911614611c0957600080fd5b8315611c3357600160a060020a0385166000908152600860205260409020805460ff191660011790555b8215611c5d57600160a060020a0385166000908152600960205260409020805460ff191660011790555b8115611cc457600454600160a060020a031663ee8cbc9d8660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515611cb357600080fd5b5af11515611cc057600080fd5b5050505b8015611cee57600160a060020a0385166000908152600a60205260409020805460ff191660011790555b600654600160a060020a031663f50a26448660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611d3e57600080fd5b5af11515611d4b57600080fd5b5050506040518051905015611db757600654600160a060020a03166331aa91fc8660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515611daa57600080fd5b5af11515610b2e57600080fd5b5050505050565b60015460a060020a900460ff1681565b60005433600160a060020a03908116911614611de957600080fd5b611df161213c565b600554600160a060020a0316633b64e77e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611e3057600080fd5b5af11515611e3d57600080fd5b5050600654600160a060020a03169050636252c1276040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611e8057600080fd5b5af11515611e8d57600080fd5b5050600454600160a060020a0316905063c422293b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ed057600080fd5b5af11515611edd57600080fd5b50505060405180515050601d805460ff19166001179055565b60a981565b601d5460009060ff161515611f0f57600080fd5b600160a060020a03331660009081526018602052604081205411611f3257600080fd5b50600160a060020a033381811660009081526018602052604080822080549290556015549193919091169163a9059cbb9184905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611fa657600080fd5b5af11515611fb357600080fd5b50505060405180515050600454600160a060020a031663a24835d133826370a082318260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561201457600080fd5b5af1151561202157600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561206e57600080fd5b5af1151561207b57600080fd5b50505050565b635af2fee081565b600160a060020a03811660009081526008602052604081205460ff16806120c85750600160a060020a03821660009081526009602052604090205460ff165b806121365750600454600160a060020a0316632e2174058360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561211e57600080fd5b5af1151561212b57600080fd5b505050604051805190505b92915050565b60005433600160a060020a0390811691161461215757600080fd5b60015460a060020a900460ff161561216e57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b635ad8a0e081565b600054600160a060020a031681565b600e54600160a060020a031681565b601c5481565b601154600160a060020a031681565b60195481565b600a6020526000908152604090205460ff1681565b68056bc75e2d6310000081565b60005433600160a060020a0390811691161461223e57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600381565b60135481565b600554600160a060020a031681565b600654600160a060020a031681565b600d54600160a060020a031681565b60025481565b601254600160a060020a031681565b60005433600160a060020a039081169116146122d557600080fd5b601b54156122e257600080fd5b601b55565b600154600160a060020a031681565b60005433600160a060020a0390811691161461231157600080fd5b601c541561231e57600080fd5b601c55565b60015433600160a060020a0390811691161461233e57600080fd5b6000546001547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b635ae089e081565b635ad9f26081565b60175481565b600f54600160a060020a031681565b6801158e460913d0000081565b600b6020526000908152604090205481565b60005433600160a060020a0390811691161461242957600080fd5b6002541580156124395750600354155b151561244457600080fd5b6000821180156124545750600081115b151561245f57600080fd5b600291909155600355565b601d5460ff1681565b601054600160a060020a031681565b60005433600160a060020a0390811691161461249d57600080fd5b600054600160a060020a03828116911614156124b857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035481565b635ae9c46081565b601b5481565b600454600160a060020a031681565b600160a060020a0333166000908152600b6020526040812054819061253090349061277a565b600160a060020a03331660009081526008602052604090205490915060ff16801561256357506702c68af0bb1400003410155b1561259b57635ad8a0e0421180159061258457506801158e460913d0000081115b1561259257600091506126a8565b600191506126a8565b600160a060020a03331660009081526009602052604090205460ff1680156125cc575068056bc75e2d631000003410155b156125fa57635ad8a0e04211801590612584575068a2a15d09519be0000081111561259257600091506126a8565b600454600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561264a57600080fd5b5af1151561265757600080fd5b50505060405180519050801561267557506702c68af0bb1400003410155b156126a357635ad8a0e0421180159061258457506801158e460913d0000081111561259257600091506126a8565b600091505b5090565b60006126bc601b5460135461292e565b34116126ca57506001611815565b50600090565b600080806064635ad9f2604210156126eb576019915061272f565b635ae089e042101561270057600f915061272f565b635ae9c46042101561271557600a915061272f565b635af2fee042101561272a576005915061272f565b600091505b90939092509050565b6000828202831580612754575082848281151561275157fe5b04145b151561275c57fe5b9392505050565b600080828481151561277157fe5b04949350505050565b60008282018381101561275c57fe5b6000612795848461277a565b600454909150600160a060020a031663867904b4878360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156127ee57600080fd5b5af115156127fb57600080fd5b5050600554600160a060020a0316905063a78a651a868860405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561284f57600080fd5b5af1151561285c57600080fd5b5050505061286c6013548661277a565b601355600160a060020a0386166000908152600b6020526040902054612892908661277a565b600b600088600160a060020a0316600160a060020a03168152602001908152602001600020819055507f77cbff9b281bbc6839ce326b536ee9d11c49c42e936fe518d7c47d7296f73424868686868642604051600160a060020a039096168652602086019490945260408086019390935260608501919091521515608084015260a083019190915260c0909101905180910390a1505050505050565b60008183101561293a57fe5b50900390565b6004546000908190600160a060020a0316632e2174053360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561299557600080fd5b5af115156129a257600080fd5b50505060405180519050156129ba57600091506126a8565b600160a060020a03331660009081526008602052604090205460ff161580156129fc5750600160a060020a03331660009081526009602052604090205460ff16155b15612a0a57600091506126a8565b601554600160a060020a031663dd62ed3e333060405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515612a6257600080fd5b5af11515612a6f57600080fd5b505050604051805190509050601754811080612a975750601654612a956019548361277a565b115b15612aa557600091506126a8565b6001915050905600a165627a7a7230582000085a7c69db841a94328afc45904e3c776ec53cb5bb04a9f82263fff734cdc10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b8c77482e45f1f44de1745f52c74426c631bdd520000000000000000000000000e8d6b471e332f140e7d9dbb99e5e3822f728da600000000000000000000000049db6ee4507132d1fdac92318e0e6150bf786728000000000000000000000000035611f47a13f3603109152952f0034c674959ba000000000000000000000000ba121eba02961b7fa53fafcbb53826e1acd5a472000000000000000000000000f759cae90459c72bb3668fcd8e674f9e1eb9c2c30000000000000000000000009496dbbb9bc9fd78d4735b954569a54fe2a0d9f300000000000000000000000011f21536f888def8c7d2c4785f3f70b3ddbca1b90000000000000000000000005686508abbff20db6a582643280601ef53b58ddf000000000000000000000000a1568c501e650c83337f8119b6276c0de4aabb0f00000000000000000000000073c2d67e4181ad1926b4b47b56d3d2c198b876040000000000000000000000005eaf0a37346ff992199fbc4480c9ccc4137d9c1f
-----Decoded View---------------
Arg [0] : bnbTokenAddress (address): 0xB8c77482e45F1F44dE1745F52C74426C631bDD52
Arg [1] : tokenAddress (address): 0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6
Arg [2] : fundAddress (address): 0x49dB6EE4507132d1fdac92318e0E6150bf786728
Arg [3] : reservationFundAddress (address): 0x035611F47A13f3603109152952f0034C674959bA
Arg [4] : _bnbTokenWallet (address): 0xBa121ebA02961b7fA53fafcBb53826e1ACD5A472
Arg [5] : _referralTokenWallet (address): 0xF759CaE90459C72bB3668fcd8e674f9E1eb9C2C3
Arg [6] : _foundationTokenWallet (address): 0x9496DbBB9bC9fd78D4735b954569A54Fe2A0D9F3
Arg [7] : _advisorsTokenWallet (address): 0x11F21536f888dEF8c7d2C4785F3F70b3DDBCa1B9
Arg [8] : _companyTokenWallet (address): 0x5686508AbBFF20Db6A582643280601ef53B58DdF
Arg [9] : _reserveTokenWallet (address): 0xa1568c501E650c83337f8119b6276c0de4aABb0f
Arg [10] : _bountyTokenWallet (address): 0x73c2D67e4181aD1926B4B47b56D3d2C198b87604
Arg [11] : _owner (address): 0x5EaF0a37346Ff992199fbc4480c9ccc4137d9c1f
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 000000000000000000000000b8c77482e45f1f44de1745f52c74426c631bdd52
Arg [1] : 0000000000000000000000000e8d6b471e332f140e7d9dbb99e5e3822f728da6
Arg [2] : 00000000000000000000000049db6ee4507132d1fdac92318e0e6150bf786728
Arg [3] : 000000000000000000000000035611f47a13f3603109152952f0034c674959ba
Arg [4] : 000000000000000000000000ba121eba02961b7fa53fafcbb53826e1acd5a472
Arg [5] : 000000000000000000000000f759cae90459c72bb3668fcd8e674f9e1eb9c2c3
Arg [6] : 0000000000000000000000009496dbbb9bc9fd78d4735b954569a54fe2a0d9f3
Arg [7] : 00000000000000000000000011f21536f888def8c7d2c4785f3f70b3ddbca1b9
Arg [8] : 0000000000000000000000005686508abbff20db6a582643280601ef53b58ddf
Arg [9] : 000000000000000000000000a1568c501e650c83337f8119b6276c0de4aabb0f
Arg [10] : 00000000000000000000000073c2d67e4181ad1926b4b47b56d3d2c198b87604
Arg [11] : 0000000000000000000000005eaf0a37346ff992199fbc4480c9ccc4137d9c1f
Swarm Source
bzzr://00085a7c69db841a94328afc45904e3c776ec53cb5bb04a9f82263fff734cdc1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.