KaikenInu token contract has migrated to a new address.
ERC-20
Overview
Max Total Supply
700,000,000,000,000 KaikenInu
Holders
852
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
705,000,000,000 KaikenInuValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
KaikenInuToken
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.4.24; import "./ERC20.sol"; import "./SafeMath.sol"; import "./Ownable.sol"; contract KaikenInuToken is ERC20, Ownable { using SafeMath for uint256; string public constant name = "KaikenInu"; string public constant symbol = "KaikenInu"; uint8 public constant decimals = 9; uint256 private totalSupply_ = 1000000000 * 10**6 * 10**9; uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 1; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _burnFee = 1; uint256 private _previousBurnFee = _burnFee; uint256 public _marketingFee = 1; bool public locked = true; mapping (address => uint256) private balances; mapping (address => mapping (address => uint256)) private allowed; modifier onlyWhenUnlocked() { require(!locked || msg.sender == owner); _; } constructor() public { balances[msg.sender] = totalSupply_; } function totalSupply() public view returns (uint256) { return totalSupply_; } function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } function transfer(address _to, uint256 _value) public onlyWhenUnlocked returns (bool) { require(_value <= balances[msg.sender]); require(_to != address(0)); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferFrom( address _from, address _to, uint256 _value ) public onlyWhenUnlocked returns (bool) { require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); require(_to != address(0)); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } function increaseApproval( address _spender, uint256 _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue >= oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function burn(uint256 _value) public returns (bool success){ require(_value > 0); require(_value <= balances[msg.sender]); address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(burner, _value); return true; } function unlock() public onlyOwner { locked = false; } }
pragma solidity ^0.4.24; import "./SafeMath.sol"; import "./KaikenInuToken.sol"; import "./Pausable.sol"; import "./PullPayment.sol"; import "./Whitelist.sol"; import "./TokenBonus.sol"; contract Crowdsale is Pausable, PullPayment, Whitelist, TokenBonus { using SafeMath for uint256; address private wallet = 0x47C8bbEAD537e7d013034B3d83AF6f0ee84e14a2; address private team = 0x092406Df82C3631bC0F0D77937379c3CbaABcA8F; KaikenInuToken public token; // Presale period uint256 public presaleRate; uint256 public totalTokensForPresale; bool public ICO; bool public presale; uint256 public rate; uint256 public totalTokensForSale = 20000000000000000000000000000000000000; // 200 000 000 000 000 KaikenInu tokens will be sold uint256 public totalTokensForPreSale = 20000000000000000000000000000000000000; // 200 000 000 000 000 KaikenInu tokens will be sold uint256 public maxFundingGoal; uint256 public minFundingGoal; bool public crowdsale; uint256 public REFUNDSTART; uint256 public REFUNDEADLINE; uint256 public savedBalance; uint256 public savedTokenBalance; uint256 public savedPresaleTokenBalance; mapping (address => uint256) balances; event Contribution(address indexed _contributor, uint256 indexed _value, uint256 indexed _tokens); event PayEther(address indexed _receiver, uint256 indexed _value, uint256 indexed _timestamp); event BurnTokens(uint256 indexed _value, uint256 indexed _timestamp); constructor(address _token) public { token = KaikenInuToken(_token); } function () public payable whenNotPaused { uint256 _tokensAmount; if (msg.sender != wallet) { require(ICO || presale || crowdsale); if (ICO || presale) { buyPresaleTokens(msg.sender,_tokensAmount); }else{ buyTokens(msg.sender); } } } // Function to set Rate & tokens to sell for ICO function startPresale(uint256 _rate, uint256 _totalTokensForPresale, uint256 _maxCap, uint256 _minCap) public onlyOwner { presaleRate = _rate; totalTokensForPresale = _totalTokensForPresale; maxFundingGoal = _maxCap; minFundingGoal = _minCap; ICO = true; } // Function to move to the second period for presale function updatePresale() public onlyOwner { require(ICO); ICO = false; presale = true; } // Function to close the presale function closePresale() public onlyOwner { require(presale || ICO); ICO = false; presale = false; } function startCrowdsale(uint256 _rate, uint256 _maxCap, uint256 _minCap) public onlyOwner { require(!presale || !ICO); rate = _rate; maxFundingGoal = _maxCap; minFundingGoal = _minCap; crowdsale = true; } function closeCrowdsale() public onlyOwner{ require(crowdsale); crowdsale = false; REFUNDSTART = now; REFUNDEADLINE = REFUNDSTART + 30 days; } function isComplete() public view returns (bool) { return (savedBalance >= maxFundingGoal) || (savedTokenBalance >= totalTokensForSale) || (crowdsale == false); } function isSuccessful() public view returns (bool) { return (savedBalance >= minFundingGoal); } function refundPeriodOver() public view returns (bool) { return (now > REFUNDEADLINE); } function refundPeriodStart() public view returns (bool) { return (now > REFUNDSTART); } function finalize() public onlyOwner { require(crowdsale); crowdsale = false; REFUNDSTART = now; REFUNDEADLINE = REFUNDSTART+ 30 days; } function payout(address _newOwner) public onlyOwner { require((isSuccessful() && isComplete()) || refundPeriodOver()); if (isSuccessful() && isComplete()) { uint256 tokensToBurn = token.balanceOf(address(this)).sub(savedBonusToken); require(token.burn(tokensToBurn)); transferTokenOwnership(_newOwner); crowdsale = false; }else { if (refundPeriodOver()) { wallet.transfer(address(this).balance); emit PayEther(wallet, address(this).balance, now); require(token.burn(token.balanceOf(address(this)))); transferTokenOwnership(_newOwner); } } } // Function to transferOwnership of the KaikenInu token function transferTokenOwnership(address _newOwner) public onlyOwner { token.transferOwnership(_newOwner); } /* When MIN_CAP is not reach the smart contract will be credited to make refund possible by backers * 1) backer call the "refund" function of the Crowdsale contract * 2) backer call the "withdraw" function of the Crowdsale contract to get a refund in ETH */ function refund() public { require(!isSuccessful()); require(refundPeriodStart()); require(!refundPeriodOver()); require(balances[msg.sender] > 0); uint256 amountToRefund = balances[msg.sender].mul(95).div(100); asyncSend(msg.sender, amountToRefund); balances[msg.sender] = 0; } function withdraw() public { withdrawPayments(); savedBalance = address(this).balance; } function buyTokens(address buyer) public payable { // require(!isComplete()); address _beneficiary; if (isWhitelisted(_beneficiary)) { uint256 tokensAmount; if (msg.value >= 10 ether) { savedBalance = savedBalance.add(msg.value); tokensAmount = msg.value.mul(presaleRate); uint256 bonus = tokensAmount.mul(30).div(100); savedTokenBalance = savedTokenBalance.add(tokensAmount.add(bonus)); token.transfer(_beneficiary, tokensAmount); savedBonusToken = savedBonusToken.add(bonus); bonusBalances[_beneficiary] = bonusBalances[_beneficiary].add(bonus); bonusList.push(_beneficiary); wallet.transfer(msg.value); emit PayEther(wallet, msg.value, now); }else { savedBalance = savedBalance.add(msg.value); tokensAmount = msg.value.mul(presaleRate); uint256 tokensToTransfer = tokensAmount.mul(130).div(100); savedTokenBalance = savedTokenBalance.add(tokensToTransfer); token.transfer(_beneficiary, tokensToTransfer); wallet.transfer(msg.value); emit PayEther(wallet, msg.value, now); } }else { balances[buyer] = balances[buyer].add(msg.value); savedBalance = savedBalance.add(msg.value); savedTokenBalance = savedTokenBalance.add(msg.value.mul(rate)); token.transfer(_beneficiary, msg.value.mul(rate)); wallet.transfer(msg.value); emit PayEther(wallet, msg.value, now); } } function buyPresaleTokens(address buyer, uint256 _tokensAmount) public payable { // require(isPresaleWhitelisted(_beneficiary)); require((savedBalance.add(msg.value)) <= maxFundingGoal); require((savedPresaleTokenBalance.add(msg.value.mul(presaleRate))) <= totalTokensForPresale); uint256 tokensAmount = _tokensAmount; if (msg.value >= 10 ether) { savedBalance = savedBalance.add(msg.value); tokensAmount = msg.value.mul(presaleRate); uint256 bonus = tokensAmount.mul(checkPresaleBonus()).div(100); savedTokenBalance = savedTokenBalance.add(tokensAmount.add(bonus)); token.transfer(buyer, tokensAmount); savedBonusToken = savedBonusToken.add(bonus); bonusBalances[buyer] = bonusBalances[buyer].add(bonus); bonusList.push(buyer); wallet.transfer(msg.value); emit PayEther(wallet, msg.value, now); }else { savedBalance = savedBalance.add(msg.value); tokensAmount = msg.value.mul(presaleRate); uint256 tokensToTransfer = tokensAmount.add((tokensAmount.mul(checkPresaleBonus())).div(100)); savedTokenBalance = savedTokenBalance.add(tokensToTransfer); token.transfer(buyer, tokensToTransfer); wallet.transfer(msg.value); emit PayEther(wallet, msg.value, now); } } function checkPresaleBonus() internal view returns (uint256){ if(ICO && msg.value >= 1 ether){ return 40000; }else if(presale && msg.value >= 1 ether){ return 30000; }else{ return 0; } } }
pragma solidity ^0.4.24; contract ERC20 { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function allowance(address _owner, address _spender) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function burn(uint256 _value) public returns (bool); event Transfer( address indexed from, address indexed to, uint256 value ); event Approval( address indexed owner, address indexed spender, uint256 value ); event Burn( address indexed burner, uint256 value ); }
pragma solidity ^0.4.24; contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @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 { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } }
pragma solidity ^0.4.24; import "./Ownable.sol"; 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() public onlyOwner whenNotPaused { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyOwner whenPaused { paused = false; emit Unpause(); } }
pragma solidity ^0.4.24; import "./SafeMath.sol"; contract PullPayment { using SafeMath for uint256; mapping (address => uint256) public payments; uint256 public totalPayments; /** * @dev withdraw accumulated balance, called by payee. */ function withdrawPayments() internal { uint256 payment = payments[msg.sender]; require(payment != 0); require(address(this).balance >= payment); totalPayments = totalPayments.sub(payment); payments[msg.sender] = 0; msg.sender.transfer(payment); } /** * @dev Called by the payer to store the sent amount as credit to be pulled. * @param dest The destination address of the funds. * @param amount The amount to transfer. */ function asyncSend(address dest, uint256 amount) internal { payments[dest] = payments[dest].add(amount); totalPayments = totalPayments.add(amount); } }
pragma solidity ^0.4.24; library SafeMath { /** * @dev Multiplies two numbers, reverts on overflow. */ function mul(uint256 _a, uint256 _b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (_a == 0) { return 0; } uint256 c = _a * _b; require(c / _a == _b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = _a / _b; // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 _a, uint256 _b) internal pure returns (uint256) { require(_b <= _a); uint256 c = _a - _b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 _a, uint256 _b) internal pure returns (uint256) { uint256 c = _a + _b; require(c >= _a); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } }
pragma solidity ^0.4.24; import "./Ownable.sol"; import "./SafeMath.sol"; import "./KaikenInuToken.sol"; contract TokenBonus is Ownable { using SafeMath for uint256; address public owner; mapping (address => uint256) public bonusBalances; // visible to the public or not ??? address[] public bonusList; uint256 public savedBonusToken; constructor() public { owner = msg.sender; } function distributeBonusToken(address _token, uint256 _percent) public onlyOwner { for (uint256 i = 0; i < bonusList.length; i++) { require(KaikenInuToken(_token).balanceOf(address(this)) >= savedBonusToken); uint256 amountToTransfer = bonusBalances[bonusList[i]].mul(_percent).div(100); KaikenInuToken(_token).transfer(bonusList[i], amountToTransfer); bonusBalances[bonusList[i]] = bonusBalances[bonusList[i]].sub(amountToTransfer); savedBonusToken = savedBonusToken.sub(amountToTransfer); } } }
pragma solidity ^0.4.24; import "./Ownable.sol"; contract Whitelist is Ownable{ // Whitelisted address mapping(address => bool) public whitelist; mapping(address => bool) public presalewhitelist; event AddedBeneficiary(address indexed _beneficiary); event AddedPresaleBeneficiary(address indexed _beneficiary); function isPresaleWhitelisted(address _beneficiary) public view returns (bool) { return (presalewhitelist[_beneficiary]); } function addManyToPresaleWhitelist(address[] _beneficiaries) public onlyOwner { for (uint256 i = 0; i < _beneficiaries.length; i++) { presalewhitelist[_beneficiaries[i]] = true; emit AddedPresaleBeneficiary(_beneficiaries[i]); } } function removeFromPresaleWhitelist(address _beneficiary) public onlyOwner { presalewhitelist[_beneficiary] = false; } function addManyToWhitelist(address[] _beneficiaries) public onlyOwner { for (uint256 i = 0; i < _beneficiaries.length; i++) { whitelist[_beneficiaries[i]] = true; emit AddedBeneficiary(_beneficiaries[i]); } } function removeFromWhitelist(address _beneficiary) public onlyOwner { whitelist[_beneficiary] = false; } function isWhitelisted(address _beneficiary) public view returns (bool) { return (whitelist[_beneficiary]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_marketingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_taxFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_liquidityFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_burnFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"}]
Contract Creation Code
608060405269d3c21bcecceda1000000600155600280556002546003556001600455600454600555600160065560065460075560016008556001600960006101000a81548160ff02191690831515021790555034801561005e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600154600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a0d806100f46000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610122578063095ea7b3146101b257806318160ddd1461021757806322976e0d1461024257806323b872dd1461026d578063313ce567146102f25780633b124fe71461032357806342966c681461034e57806366188463146103935780636bc87c3a146103f857806370a0823114610423578063715018a61461047a5780638da5cb5b1461049157806395d89b41146104e8578063a69df4b514610578578063a9059cbb1461058f578063c0b0fda2146105f4578063cf3090121461061f578063d73dd6231461064e578063dd62ed3e146106b3578063f2fde38b1461072a575b600080fd5b34801561012e57600080fd5b5061013761076d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017757808201518184015260208101905061015c565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101be57600080fd5b506101fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107a6565b604051808215151515815260200191505060405180910390f35b34801561022357600080fd5b5061022c610898565b6040518082815260200191505060405180910390f35b34801561024e57600080fd5b506102576108a2565b6040518082815260200191505060405180910390f35b34801561027957600080fd5b506102d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a8565b604051808215151515815260200191505060405180910390f35b3480156102fe57600080fd5b50610307610cdb565b604051808260ff1660ff16815260200191505060405180910390f35b34801561032f57600080fd5b50610338610ce0565b6040518082815260200191505060405180910390f35b34801561035a57600080fd5b5061037960048036038101908080359060200190929190505050610ce6565b604051808215151515815260200191505060405180910390f35b34801561039f57600080fd5b506103de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e51565b604051808215151515815260200191505060405180910390f35b34801561040457600080fd5b5061040d6110e3565b6040518082815260200191505060405180910390f35b34801561042f57600080fd5b50610464600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b6040518082815260200191505060405180910390f35b34801561048657600080fd5b5061048f611132565b005b34801561049d57600080fd5b506104a6611234565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104f457600080fd5b506104fd611259565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053d578082015181840152602081019050610522565b50505050905090810190601f16801561056a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058457600080fd5b5061058d611292565b005b34801561059b57600080fd5b506105da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130a565b604051808215151515815260200191505060405180910390f35b34801561060057600080fd5b506106096115a2565b6040518082815260200191505060405180910390f35b34801561062b57600080fd5b506106346115a8565b604051808215151515815260200191505060405180910390f35b34801561065a57600080fd5b50610699600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bb565b604051808215151515815260200191505060405180910390f35b3480156106bf57600080fd5b50610714600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b7565b6040518082815260200191505060405180910390f35b34801561073657600080fd5b5061076b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183e565b005b6040805190810160405280600981526020017f4b61696b656e496e75000000000000000000000000000000000000000000000081525081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60085481565b6000600960009054906101000a900460ff16158061091257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561091d57600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561096b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156109f657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a3257600080fd5b610a8482600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610beb82600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600981565b60025481565b600080600083111515610cf857600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610d4657600080fd5b339050610d9b83600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610df3836001546118a590919063ffffffff16565b6001819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a26001915050919050565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610f63576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ff7565b610f7683826118a590919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60045481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600981526020017f4b61696b656e496e75000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b6000600960006101000a81548160ff021916908315150217905550565b6000600960009054906101000a900460ff16158061137457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561137f57600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156113cd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561140957600080fd5b61145b82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60065481565b600960009054906101000a900460ff1681565b600061164c82600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189957600080fd5b6118a2816118e7565b50565b6000808383111515156118b757600080fd5b82840390508091505092915050565b60008082840190508381101515156118dd57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561192357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058206e4f3c2e311abddff048ce1539edab8c939a4ff95ddde8660e4d99c0faaddb100029
Deployed Bytecode
0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610122578063095ea7b3146101b257806318160ddd1461021757806322976e0d1461024257806323b872dd1461026d578063313ce567146102f25780633b124fe71461032357806342966c681461034e57806366188463146103935780636bc87c3a146103f857806370a0823114610423578063715018a61461047a5780638da5cb5b1461049157806395d89b41146104e8578063a69df4b514610578578063a9059cbb1461058f578063c0b0fda2146105f4578063cf3090121461061f578063d73dd6231461064e578063dd62ed3e146106b3578063f2fde38b1461072a575b600080fd5b34801561012e57600080fd5b5061013761076d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017757808201518184015260208101905061015c565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101be57600080fd5b506101fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107a6565b604051808215151515815260200191505060405180910390f35b34801561022357600080fd5b5061022c610898565b6040518082815260200191505060405180910390f35b34801561024e57600080fd5b506102576108a2565b6040518082815260200191505060405180910390f35b34801561027957600080fd5b506102d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a8565b604051808215151515815260200191505060405180910390f35b3480156102fe57600080fd5b50610307610cdb565b604051808260ff1660ff16815260200191505060405180910390f35b34801561032f57600080fd5b50610338610ce0565b6040518082815260200191505060405180910390f35b34801561035a57600080fd5b5061037960048036038101908080359060200190929190505050610ce6565b604051808215151515815260200191505060405180910390f35b34801561039f57600080fd5b506103de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e51565b604051808215151515815260200191505060405180910390f35b34801561040457600080fd5b5061040d6110e3565b6040518082815260200191505060405180910390f35b34801561042f57600080fd5b50610464600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b6040518082815260200191505060405180910390f35b34801561048657600080fd5b5061048f611132565b005b34801561049d57600080fd5b506104a6611234565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104f457600080fd5b506104fd611259565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053d578082015181840152602081019050610522565b50505050905090810190601f16801561056a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058457600080fd5b5061058d611292565b005b34801561059b57600080fd5b506105da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130a565b604051808215151515815260200191505060405180910390f35b34801561060057600080fd5b506106096115a2565b6040518082815260200191505060405180910390f35b34801561062b57600080fd5b506106346115a8565b604051808215151515815260200191505060405180910390f35b34801561065a57600080fd5b50610699600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bb565b604051808215151515815260200191505060405180910390f35b3480156106bf57600080fd5b50610714600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b7565b6040518082815260200191505060405180910390f35b34801561073657600080fd5b5061076b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183e565b005b6040805190810160405280600981526020017f4b61696b656e496e75000000000000000000000000000000000000000000000081525081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60085481565b6000600960009054906101000a900460ff16158061091257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561091d57600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561096b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156109f657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a3257600080fd5b610a8482600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610beb82600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600981565b60025481565b600080600083111515610cf857600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610d4657600080fd5b339050610d9b83600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610df3836001546118a590919063ffffffff16565b6001819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a26001915050919050565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515610f63576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ff7565b610f7683826118a590919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60045481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600981526020017f4b61696b656e496e75000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b6000600960006101000a81548160ff021916908315150217905550565b6000600960009054906101000a900460ff16158061137457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561137f57600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156113cd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561140957600080fd5b61145b82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118a590919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60065481565b600960009054906101000a900460ff1681565b600061164c82600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c690919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189957600080fd5b6118a2816118e7565b50565b6000808383111515156118b757600080fd5b82840390508091505092915050565b60008082840190508381101515156118dd57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561192357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058206e4f3c2e311abddff048ce1539edab8c939a4ff95ddde8660e4d99c0faaddb100029
Deployed Bytecode Sourcemap
98:3386:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;177:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;177:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1681:188:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;992:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;992:83:2;;;;;;;;;;;;;;;;;;;;;;;634:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;634:32:2;;;;;;;;;;;;;;;;;;;;;;;1873:491;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1873:491:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:34:2;;;;;;;;;;;;;;;;;;;;;;;;;;;376:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;376:26:2;;;;;;;;;;;;;;;;;;;;;;;3104:313;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3104:313:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:432;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2668:432:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;455:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;455:32:2;;;;;;;;;;;;;;;;;;;;;;;1079:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:99:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;811:111:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;811:111:3;;;;;;48:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;48:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;224:43:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;224:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;224:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3421:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3421:60:2;;;;;;1339:338;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1339:338:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;552:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;552:27:2;;;;;;;;;;;;;;;;;;;;;;;677:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;677:25:2;;;;;;;;;;;;;;;;;;;;;;;;;;;2368:296;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2368:296:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1182:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:153:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1084:103:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1084:103:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;177:41:2;;;;;;;;;;;;;;;;;;;;:::o;1681:188::-;1748:4;1792:6;1760:7;:19;1768:10;1760:19;;;;;;;;;;;;;;;:29;1780:8;1760:29;;;;;;;;;;;;;;;:38;;;;1830:8;1809:38;;1818:10;1809:38;;;1840:6;1809:38;;;;;;;;;;;;;;;;;;1860:4;1853:11;;1681:188;;;;:::o;992:83::-;1036:7;1058:12;;1051:19;;992:83;:::o;634:32::-;;;;:::o;1873:491::-;2000:4;873:6;;;;;;;;;;;872:7;:30;;;;897:5;;;;;;;;;;;883:19;;:10;:19;;;872:30;864:39;;;;;;;;2032:8;:15;2041:5;2032:15;;;;;;;;;;;;;;;;2022:6;:25;;2014:34;;;;;;;;2072:7;:14;2080:5;2072:14;;;;;;;;;;;;;;;:26;2087:10;2072:26;;;;;;;;;;;;;;;;2062:6;:36;;2054:45;;;;;;;;2128:1;2113:17;;:3;:17;;;;2105:26;;;;;;;;2156:27;2176:6;2156:8;:15;2165:5;2156:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;2138:8;:15;2147:5;2138:15;;;;;;;;;;;;;;;:45;;;;2205:25;2223:6;2205:8;:13;2214:3;2205:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2189:8;:13;2198:3;2189:13;;;;;;;;;;;;;;;:41;;;;2265:38;2296:6;2265:7;:14;2273:5;2265:14;;;;;;;;;;;;;;;:26;2280:10;2265:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;2236:7;:14;2244:5;2236:14;;;;;;;;;;;;;;;:26;2251:10;2236:26;;;;;;;;;;;;;;;:67;;;;2330:3;2314:28;;2323:5;2314:28;;;2335:6;2314:28;;;;;;;;;;;;;;;;;;2355:4;2348:11;;1873:491;;;;;:::o;273:34::-;306:1;273:34;:::o;376:26::-;;;;:::o;3104:313::-;3150:12;3239:14;3186:1;3177:6;:10;3169:19;;;;;;;;3212:8;:20;3221:10;3212:20;;;;;;;;;;;;;;;;3202:6;:30;;3194:39;;;;;;;;3256:10;3239:27;;3291:28;3312:6;3291:8;:16;3300:6;3291:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;3272:8;:16;3281:6;3272:16;;;;;;;;;;;;;;;:47;;;;3340:24;3357:6;3340:12;;:16;;:24;;;;:::i;:::-;3325:12;:39;;;;3380:6;3375:20;;;3388:6;3375:20;;;;;;;;;;;;;;;;;;3408:4;3401:11;;3104:313;;;;:::o;2668:432::-;2774:4;2788:16;2807:7;:19;2815:10;2807:19;;;;;;;;;;;;;;;:29;2827:8;2807:29;;;;;;;;;;;;;;;;2788:48;;2866:8;2846:16;:28;;2842:165;;;2916:1;2884:7;:19;2892:10;2884:19;;;;;;;;;;;;;;;:29;2904:8;2884:29;;;;;;;;;;;;;;;:33;;;;2842:165;;;2970:30;2983:16;2970:8;:12;;:30;;;;:::i;:::-;2938:7;:19;2946:10;2938:19;;;;;;;;;;;;;;;:29;2958:8;2938:29;;;;;;;;;;;;;;;:62;;;;2842:165;3038:8;3017:61;;3026:10;3017:61;;;3048:7;:19;3056:10;3048:19;;;;;;;;;;;;;;;:29;3068:8;3048:29;;;;;;;;;;;;;;;;3017:61;;;;;;;;;;;;;;;;;;3091:4;3084:11;;2668:432;;;;;:::o;455:32::-;;;;:::o;1079:99::-;1135:7;1157:8;:16;1166:6;1157:16;;;;;;;;;;;;;;;;1150:23;;1079:99;;;:::o;811:111:3:-;529:5;;;;;;;;;;;515:19;;:10;:19;;;507:28;;;;;;;;887:5;;;;;;;;;;;868:25;;;;;;;;;;;;915:1;899:5;;:18;;;;;;;;;;;;;;;;;;811:111::o;48:20::-;;;;;;;;;;;;;:::o;224:43:2:-;;;;;;;;;;;;;;;;;;;;:::o;3421:60::-;529:5:3;;;;;;;;;;;515:19;;:10;:19;;;507:28;;;;;;;;3471:5:2;3462:6;;:14;;;;;;;;;;;;;;;;;;3421:60::o;1339:338::-;1419:4;873:6;;;;;;;;;;;872:7;:30;;;;897:5;;;;;;;;;;;883:19;;:10;:19;;;872:30;864:39;;;;;;;;1449:8;:20;1458:10;1449:20;;;;;;;;;;;;;;;;1439:6;:30;;1431:39;;;;;;;;1499:1;1484:17;;:3;:17;;;;1476:26;;;;;;;;1532:32;1557:6;1532:8;:20;1541:10;1532:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;1509:8;:20;1518:10;1509:20;;;;;;;;;;;;;;;:55;;;;1586:25;1604:6;1586:8;:13;1595:3;1586:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;1570:8;:13;1579:3;1570:13;;;;;;;;;;;;;;;:41;;;;1643:3;1622:33;;1631:10;1622:33;;;1648:6;1622:33;;;;;;;;;;;;;;;;;;1668:4;1661:11;;1339:338;;;;:::o;552:27::-;;;;:::o;677:25::-;;;;;;;;;;;;;:::o;2368:296::-;2469:4;2523:46;2557:11;2523:7;:19;2531:10;2523:19;;;;;;;;;;;;;;;:29;2543:8;2523:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;2483:7;:19;2491:10;2483:19;;;;;;;;;;;;;;;:29;2503:8;2483:29;;;;;;;;;;;;;;;:87;;;;2602:8;2581:61;;2590:10;2581:61;;;2612:7;:19;2620:10;2612:19;;;;;;;;;;;;;;;:29;2632:8;2612:29;;;;;;;;;;;;;;;;2581:61;;;;;;;;;;;;;;;;;;2655:4;2648:11;;2368:296;;;;:::o;1182:153::-;1281:7;1305;:15;1313:6;1305:15;;;;;;;;;;;;;;;:25;1321:8;1305:25;;;;;;;;;;;;;;;;1298:32;;1182:153;;;;:::o;1084:103:3:-;529:5;;;;;;;;;;;515:19;;:10;:19;;;507:28;;;;;;;;1153:29;1172:9;1153:18;:29::i;:::-;1084:103;:::o;1003:137:6:-;1063:7;1101:9;1092:2;1086;:8;;1078:17;;;;;;;;1118:2;1113;:7;1101:19;;1134:1;1127:8;;1003:137;;;;;:::o;1203:136::-;1263:7;1278:9;1295:2;1290;:7;1278:19;;1316:2;1311:1;:7;;1303:16;;;;;;;;1333:1;1326:8;;1203:136;;;;;:::o;1322:171:3:-;1413:1;1392:23;;:9;:23;;;;1384:32;;;;;;;;1455:9;1427:38;;1448:5;;;;;;;;;;;1427:38;;;;;;;;;;;;1479:9;1471:5;;:17;;;;;;;;;;;;;;;;;;1322:171;:::o
Swarm Source
bzzr://6e4f3c2e311abddff048ce1539edab8c939a4ff95ddde8660e4d99c0faaddb10
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.