Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
26,002,724.405935662697238 GRO
Holders
2,870 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GRO
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-01-28 */ pragma solidity 0.4.18; contract Token { // ERC20 standard 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); } contract SafeMath { function safeMul(uint a, uint b) pure internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) pure internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) pure internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } function safeNumDigits(uint number) pure internal returns (uint8) { uint8 digits = 0; while (number != 0) { number /= 10; digits++; } return digits; } // mitigate short address attack // thanks to https://github.com/numerai/contract/blob/c182465f82e50ced8dacb3977ec374a892f5fa8c/contracts/Safe.sol#L30-L34. // TODO: doublecheck implication of >= compared to == modifier onlyPayloadSize(uint numWords) { assert(msg.data.length >= numWords * 32 + 4); _; } } contract StandardToken is Token, SafeMath { uint256 public totalSupply; function transfer(address _to, uint256 _value) onlyPayloadSize(2) public returns (bool success) { require(_to != address(0)); require(balances[msg.sender] >= _value && _value > 0); 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) onlyPayloadSize(3) public returns (bool success) { require(_to != address(0)); require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0); balances[_from] = safeSub(balances[_from], _value); balances[_to] = safeAdd(balances[_to], _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 balance) { return balances[_owner]; } // To change the approve amount you first have to reduce the addresses' // allowance to zero by calling 'approve(_spender, 0)' if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 function approve(address _spender, uint256 _value) public onlyPayloadSize(2) returns (bool success) { require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue) public onlyPayloadSize(3) returns (bool success) { require(allowed[msg.sender][_spender] == _oldValue); allowed[msg.sender][_spender] = _newValue; Approval(msg.sender, _spender, _newValue); return true; } function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; } contract GRO is StandardToken { // FIELDS string public name = "Gron Digital"; string public symbol = "GRO"; uint256 public decimals = 18; string public version = "11.0"; // Nine Hundred and Fifty million with support for 18 decimals uint256 public tokenCap = 950000000 * 10**18; // crowdsale parameters uint256 public fundingStartBlock; uint256 public fundingEndBlock; // vesting fields address public vestingContract; bool private vestingSet = false; // root control address public fundWallet; // control of liquidity and limited control of updatePrice address public controlWallet; // time to wait between controlWallet price updates uint256 public waitTime = 5 hours; // fundWallet controlled state variables // halted: halt buying due to emergency, tradeable: signal that GRON platform is up and running bool public halted = false; bool public tradeable = false; // -- totalSupply defined in StandardToken // -- mapping to token balances done in StandardToken uint256 public previousUpdateTime = 0; Price public currentPrice; uint256 public minAmount; // Minimum amount of ether to accept for GRO purchases // map participant address to a withdrawal request mapping (address => Withdrawal) public withdrawals; // maps previousUpdateTime to the next price mapping (uint256 => Price) public prices; // maps addresses mapping (address => bool) public whitelist; // TYPES struct Price { // tokensPerEth uint256 numerator; } struct Withdrawal { uint256 tokens; uint256 time; // time for each withdrawal is set to the previousUpdateTime } // EVENTS event Buy(address indexed participant, address indexed beneficiary, uint256 weiValue, uint256 amountTokens); event AllocatePresale(address indexed participant, uint256 amountTokens); event BonusAllocation(address indexed participant, string participant_addr, string txnHash, uint256 bonusTokens); event Mint(address indexed to, uint256 amount); event Whitelist(address indexed participant); event PriceUpdate(uint256 numerator); event AddLiquidity(uint256 ethAmount); event RemoveLiquidity(uint256 ethAmount); event WithdrawRequest(address indexed participant, uint256 amountTokens); event Withdraw(address indexed participant, uint256 amountTokens, uint256 etherAmount); // MODIFIERS modifier isTradeable { // exempt vestingContract and fundWallet to allow dev allocations require(tradeable || msg.sender == fundWallet || msg.sender == vestingContract); _; } modifier onlyWhitelist { require(whitelist[msg.sender]); _; } modifier onlyFundWallet { require(msg.sender == fundWallet); _; } modifier onlyManagingWallets { require(msg.sender == controlWallet || msg.sender == fundWallet); _; } modifier only_if_controlWallet { if (msg.sender == controlWallet) _; } modifier require_waited { require(safeSub(currentTime(), waitTime) >= previousUpdateTime); _; } modifier only_if_decrease (uint256 newNumerator) { if (newNumerator < currentPrice.numerator) _; } // CONSTRUCTOR function GRO() public { fundWallet = msg.sender; whitelist[fundWallet] = true; previousUpdateTime = currentTime(); } // Called after deployment // Not all deployment clients support constructor arguments. // This function is provided for maximum compatibility. function initialiseContract(address controlWalletInput, uint256 priceNumeratorInput, uint256 startBlockInput, uint256 endBlockInput) external onlyFundWallet { require(controlWalletInput != address(0)); require(priceNumeratorInput > 0); require(endBlockInput > startBlockInput); controlWallet = controlWalletInput; whitelist[controlWallet] = true; currentPrice = Price(priceNumeratorInput); fundingStartBlock = startBlockInput; fundingEndBlock = endBlockInput; previousUpdateTime = currentTime(); minAmount = 0.05 ether; // 500 GRO } // METHODS function setVestingContract(address vestingContractInput) external onlyFundWallet { require(vestingContractInput != address(0)); vestingContract = vestingContractInput; whitelist[vestingContract] = true; vestingSet = true; } // allows controlWallet to update the price within a time contstraint, allows fundWallet complete control function updatePrice(uint256 newNumerator) external onlyManagingWallets { require(newNumerator > 0); require_limited_change(newNumerator); // either controlWallet command is compliant or transaction came from fundWallet currentPrice.numerator = newNumerator; // maps time to new Price (if not during ICO) prices[previousUpdateTime] = currentPrice; previousUpdateTime = currentTime(); PriceUpdate(newNumerator); } function require_limited_change (uint256 newNumerator) private view only_if_controlWallet require_waited only_if_decrease(newNumerator) { uint256 percentage_diff = 0; percentage_diff = safeMul(newNumerator, 100) / currentPrice.numerator; percentage_diff = safeSub(100, percentage_diff); // controlWallet can only increase price by max 20% and only every waitTime require(percentage_diff <= 20); } function mint(address participant, uint256 amountTokens) private { require(vestingSet); // 40% of total allocated for Founders, Team incentives & Bonuses. // Solidity v0.4.18 - floating point is not fully supported, // integer division results in truncated values // Therefore we are multiplying out by 1000000... for // precision. This allows ratios values up to 0.0000x or 0.00x percent uint256 precision = 10**18; uint256 allocationRatio = safeMul(amountTokens, precision) / safeMul(570000000, precision); uint256 developmentAllocation = safeMul(allocationRatio, safeMul(380000000, precision)) / precision; // check that token cap is not exceeded uint256 newTokens = safeAdd(amountTokens, developmentAllocation); require(safeAdd(totalSupply, newTokens) <= tokenCap); // increase token supply, assign tokens to participant totalSupply = safeAdd(totalSupply, newTokens); balances[participant] = safeAdd(balances[participant], amountTokens); balances[vestingContract] = safeAdd(balances[vestingContract], developmentAllocation); Mint(fundWallet, newTokens); Transfer(fundWallet, participant, amountTokens); Transfer(fundWallet, vestingContract, developmentAllocation); } // amountTokens is supplied in major units, not subunits / decimal // units. function allocatePresaleTokens( address participant_address, string participant_str, uint256 amountTokens, string txnHash ) external onlyFundWallet { require(currentBlock() < fundingEndBlock); require(participant_address != address(0)); uint256 bonusTokens = 0; uint256 totalTokens = safeMul(amountTokens, 10**18); // scale to subunit if (firstDigit(txnHash) == firstDigit(participant_str)) { // Calculate 10% bonus bonusTokens = safeMul(totalTokens, 10) / 100; totalTokens = safeAdd(totalTokens, bonusTokens); } mint(participant_address, totalTokens); // Events AllocatePresale(participant_address, totalTokens); BonusAllocation(participant_address, participant_str, txnHash, bonusTokens); } // returns the first character as a byte in a given hex string // address Given 0x1abcd... returns 1 function firstDigit(string s) pure public returns(byte){ bytes memory strBytes = bytes(s); return strBytes[2]; } function verifyParticipant(address participant) external onlyManagingWallets { whitelist[participant] = true; Whitelist(participant); } // fallback function function() payable public { require(tx.origin == msg.sender); buyTo(msg.sender); } function buy() external payable { buyTo(msg.sender); } function buyTo(address participant) public payable { require(!halted); require(participant != address(0)); require(msg.value >= minAmount); require(currentBlock() < fundingEndBlock); // msg.value in wei - scale to GRO uint256 baseAmountTokens = safeMul(msg.value, currentPrice.numerator); // calc lottery amount excluding potential ico bonus uint256 lotteryAmount = blockLottery(baseAmountTokens); uint256 icoAmount = safeMul(msg.value, icoNumeratorPrice()); uint256 tokensToBuy = safeAdd(icoAmount, lotteryAmount); mint(participant, tokensToBuy); // send ether to fundWallet fundWallet.transfer(msg.value); // Events Buy(msg.sender, participant, msg.value, tokensToBuy); } // time based on blocknumbers, assuming a blocktime of 15s function icoNumeratorPrice() public constant returns (uint256) { if (currentBlock() < fundingStartBlock){ return 14000; } uint256 icoDuration = safeSub(currentBlock(), fundingStartBlock); uint256 firstBlockPhase = 80640; // #blocks = 2*7*24*60*60/15 = 80640 uint256 secondBlockPhase = 161280; // // #blocks = 4*7*24*60*60/15 = 161280 uint256 thirdBlockPhase = 241920; // // #blocks = 6*7*24*60*60/15 = 241920 if (icoDuration < firstBlockPhase ) { return 13000; } else if (icoDuration < secondBlockPhase ) { return 12000; } else if (icoDuration < thirdBlockPhase ) { return 11000; } else { return 10000; } } function currentBlock() private constant returns(uint256 _currentBlock) { return block.number; } function currentTime() private constant returns(uint256 _currentTime) { return now; } function blockLottery(uint256 _amountTokens) private constant returns(uint256) { uint256 divisor = 10; uint256 winning_digit = 0; uint256 tokenWinnings = 0; if (currentBlock() % divisor == winning_digit) { tokenWinnings = safeMul(_amountTokens, 10) / 100; } return tokenWinnings; } function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist { require(currentBlock() > fundingEndBlock); require(amountTokensToWithdraw > 0); address participant = msg.sender; require(balanceOf(participant) >= amountTokensToWithdraw); require(withdrawals[participant].tokens == 0); // participant cannot have outstanding withdrawals balances[participant] = safeSub(balances[participant], amountTokensToWithdraw); withdrawals[participant] = Withdrawal({tokens: amountTokensToWithdraw, time: previousUpdateTime}); WithdrawRequest(participant, amountTokensToWithdraw); } function withdraw() external { address participant = msg.sender; uint256 tokens = withdrawals[participant].tokens; require(tokens > 0); // participant must have requested a withdrawal uint256 requestTime = withdrawals[participant].time; // obtain the next price that was set after the request Price price = prices[requestTime]; require(price.numerator > 0); // price must have been set uint256 withdrawValue = tokens / price.numerator; // if contract ethbal > then send + transfer tokens to fundWallet, otherwise give tokens back withdrawals[participant].tokens = 0; if (this.balance >= withdrawValue) { enact_withdrawal_greater_equal(participant, withdrawValue, tokens); } else { enact_withdrawal_less(participant, withdrawValue, tokens); } } function enact_withdrawal_greater_equal(address participant, uint256 withdrawValue, uint256 tokens) private { assert(this.balance >= withdrawValue); balances[fundWallet] = safeAdd(balances[fundWallet], tokens); participant.transfer(withdrawValue); Withdraw(participant, tokens, withdrawValue); } function enact_withdrawal_less(address participant, uint256 withdrawValue, uint256 tokens) private { assert(this.balance < withdrawValue); balances[participant] = safeAdd(balances[participant], tokens); Withdraw(participant, tokens, 0); // indicate a failed withdrawal } // Returns the ether value (in wei units) for the amount of tokens // in subunits for decimal support, at the current GRO exchange // rate function checkWithdrawValue(uint256 amountTokensInSubunit) public constant returns (uint256 weiValue) { require(amountTokensInSubunit > 0); require(balanceOf(msg.sender) >= amountTokensInSubunit); uint256 withdrawValue = amountTokensInSubunit / currentPrice.numerator; require(this.balance >= withdrawValue); return withdrawValue; } // allow fundWallet or controlWallet to add ether to contract function addLiquidity() external onlyManagingWallets payable { require(msg.value > 0); AddLiquidity(msg.value); } // allow fundWallet to remove ether from contract function removeLiquidity(uint256 amount) external onlyManagingWallets { require(amount <= this.balance); fundWallet.transfer(amount); RemoveLiquidity(amount); } function changeFundWallet(address newFundWallet) external onlyFundWallet { require(newFundWallet != address(0)); fundWallet = newFundWallet; } function changeControlWallet(address newControlWallet) external onlyFundWallet { require(newControlWallet != address(0)); controlWallet = newControlWallet; } function changeWaitTime(uint256 newWaitTime) external onlyFundWallet { waitTime = newWaitTime; } // specified in wei function changeMinAmount(uint256 newMinAmount) external onlyFundWallet { minAmount = newMinAmount; } function updateFundingStartBlock(uint256 newFundingStartBlock) external onlyFundWallet { require(currentBlock() < fundingStartBlock); require(currentBlock() < newFundingStartBlock); fundingStartBlock = newFundingStartBlock; } function updateFundingEndBlock(uint256 newFundingEndBlock) external onlyFundWallet { require(currentBlock() < fundingEndBlock); require(currentBlock() < newFundingEndBlock); fundingEndBlock = newFundingEndBlock; } function halt() external onlyFundWallet { halted = true; } function unhalt() external onlyFundWallet { halted = false; } function enableTrading() external onlyFundWallet { require(currentBlock() > fundingEndBlock); tradeable = true; } function claimTokens(address _token) external onlyFundWallet { require(_token != address(0)); Token token = Token(_token); uint256 balance = token.balanceOf(this); token.transfer(fundWallet, balance); } // prevent transfers until trading allowed function transfer(address _to, uint256 _value) public isTradeable returns (bool success) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public isTradeable returns (bool success) { return super.transferFrom(_from, _to, _value); } }
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":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","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":"icoNumeratorPrice","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFundingStartBlock","type":"uint256"}],"name":"updateFundingStartBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startBlockInput","type":"uint256"},{"name":"endBlockInput","type":"uint256"}],"name":"initialiseContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant_address","type":"address"},{"name":"participant_str","type":"string"},{"name":"amountTokens","type":"uint256"},{"name":"txnHash","type":"string"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amountTokensInSubunit","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"weiValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_oldValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"changeApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"s","type":"string"}],"name":"firstDigit","outputs":[{"name":"","type":"bytes1"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFundingEndBlock","type":"uint256"}],"name":"updateFundingEndBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinAmount","type":"uint256"}],"name":"changeMinAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"weiValue","type":"uint256"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"AllocatePresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"participant_addr","type":"string"},{"indexed":false,"name":"txnHash","type":"string"},{"indexed":false,"name":"bonusTokens","type":"uint256"}],"name":"BonusAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"},{"indexed":false,"name":"etherAmount","type":"uint256"}],"name":"Withdraw","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"}]
Contract Creation Code
60606040526040805190810160405280600c81526020017f47726f6e204469676974616c0000000000000000000000000000000000000000815250600390805190602001906200005192919062000258565b506040805190810160405280600381526020017f47524f0000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000258565b5060126005556040805190810160405280600481526020017f31312e300000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f292919062000258565b506b0311d253316c79d3760000006007556000600a60146101000a81548160ff021916908315150217905550614650600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f5534156200016b57600080fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002446200025064010000000002620039a1176401000000009004565b600f8190555062000307565b600042905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029b57805160ff1916838001178555620002cc565b82800160010185558215620002cc579182015b82811115620002cb578251825591602001919060010190620002ae565b5b509050620002db9190620002df565b5090565b6200030491905b8082111562000300576000816000905550600101620002e6565b5090565b90565b613f8780620003176000396000f30060606040526004361061025c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146102a157806306fe22121461032f578063095ea7b31461035257806318160ddd146103ac57806319476244146103d557806323b872dd146103fe578063276605bc14610477578063292636301461049a578063313ce567146104ee578063347820eb146105175780633ccfd60b1461054057806354fd4d50146105555780635a8cf571146105e35780635e6f60451461061c5780635ed7ca5b14610671578063643a769514610686578063664a1ad6146106bf5780636fb4adff1461071457806370a082311461074d578063749915691461079a5780637a9262a2146107d35780637e32716814610827578063823e569e146108915780638a8c523c146108e65780638d6cc56d146108fb5780638f11e5f91461091e57806391b43d13146109555780639281cd651461097e57806395d89b41146109e15780639b19251a14610a6f5780639b2cb5d814610ac05780639c8f9f2314610ae95780639d1b464a14610b0c5780639ee679e814610b35578063a6f2ae3a14610b58578063a9059cbb14610b62578063b9b8af0b14610bbc578063bc31c1c114610be9578063c02cc95714610c20578063cb3e64fd14610cd5578063ccca123b14610cea578063d648a64714610d13578063dcf72c1014610d3c578063dd54291b14610d6a578063dd62ed3e14610d93578063df8de3e714610dff578063e28b0d9a14610e38578063e34ffcb814610e5b578063e8078d9414610e7e578063f5ac9db614610e88575b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561029657600080fd5b61029f33610eb5565b005b34156102ac57600080fd5b6102b4611056565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f45780820151818401526020810190506102d9565b50505050905090810190601f1680156103215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033a57600080fd5b61035060048080359060200190919050506110f4565b005b341561035d57600080fd5b610392600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061115a565b604051808215151515815260200191505060405180910390f35b34156103b757600080fd5b6103bf6112fb565b6040518082815260200191505060405180910390f35b34156103e057600080fd5b6103e8611301565b6040518082815260200191505060405180910390f35b341561040957600080fd5b61045d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061138e565b604051808215151515815260200191505060405180910390f35b341561048257600080fd5b610498600480803590602001909190505061146f565b005b34156104a557600080fd5b6104ec600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050611501565b005b34156104f957600080fd5b6105016116c0565b6040518082815260200191505060405180910390f35b341561052257600080fd5b61052a6116c6565b6040518082815260200191505060405180910390f35b341561054b57600080fd5b6105536116cc565b005b341561056057600080fd5b610568611835565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a857808201518184015260208101905061058d565b50505050905090810190601f1680156105d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105ee57600080fd5b61061a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b341561062757600080fd5b61062f6119af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067c57600080fd5b6106846119d5565b005b341561069157600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b34156106ca57600080fd5b6106d2611ba0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071f57600080fd5b61074b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bc6565b005b341561075857600080fd5b610784600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ca2565b6040518082815260200191505060405180910390f35b34156107a557600080fd5b6107d1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ceb565b005b34156107de57600080fd5b61080a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e5c565b604051808381526020018281526020019250505060405180910390f35b341561083257600080fd5b61088f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001919091929080359060200190919080359060200190820180359060200191909192905050611e80565b005b341561089c57600080fd5b6108a4612124565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108f157600080fd5b6108f961214a565b005b341561090657600080fd5b61091c60048080359060200190919050506121da565b005b341561092957600080fd5b61093f600480803590602001909190505061231c565b6040518082815260200191505060405180910390f35b341561096057600080fd5b610968612387565b6040518082815260200191505060405180910390f35b341561098957600080fd5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190505061238d565b604051808215151515815260200191505060405180910390f35b34156109ec57600080fd5b6109f4612523565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a34578082015181840152602081019050610a19565b50505050905090810190601f168015610a615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a7a57600080fd5b610aa6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125c1565b604051808215151515815260200191505060405180910390f35b3415610acb57600080fd5b610ad36125e1565b6040518082815260200191505060405180910390f35b3415610af457600080fd5b610b0a60048080359060200190919050506125e7565b005b3415610b1757600080fd5b610b1f61275d565b6040518082815260200191505060405180910390f35b3415610b4057600080fd5b610b566004808035906020019091905050612769565b005b610b60612a6a565b005b3415610b6d57600080fd5b610ba2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612a75565b604051808215151515815260200191505060405180910390f35b3415610bc757600080fd5b610bcf612b54565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610c0a6004808035906020019091905050612b67565b6040518082815260200191505060405180910390f35b3415610c2b57600080fd5b610c7b600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612b85565b60405180827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3415610ce057600080fd5b610ce8612bf4565b005b3415610cf557600080fd5b610cfd612c6d565b6040518082815260200191505060405180910390f35b3415610d1e57600080fd5b610d26612c73565b6040518082815260200191505060405180910390f35b610d68600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eb5565b005b3415610d7557600080fd5b610d7d612c79565b6040518082815260200191505060405180910390f35b3415610d9e57600080fd5b610de9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c7f565b6040518082815260200191505060405180910390f35b3415610e0a57600080fd5b610e36600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d06565b005b3415610e4357600080fd5b610e596004808035906020019091905050612f52565b005b3415610e6657600080fd5b610e7c6004808035906020019091905050612fe4565b005b610e8661304a565b005b3415610e9357600080fd5b610e9b613146565b604051808215151515815260200191505060405180910390f35b600080600080600e60009054906101000a900460ff16151515610ed757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515610f1357600080fd5b6011543410151515610f2457600080fd5b600954610f2f613159565b101515610f3b57600080fd5b610f4a34601060000154613161565b9350610f5584613194565b9250610f6834610f63611301565b613161565b9150610f7482846131e5565b9050610f80858261320f565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610fe257600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35050505050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110ec5780601f106110c1576101008083540402835291602001916110ec565b820191906000526020600020905b8154815290600101906020018083116110cf57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561115057600080fd5b80600d8190555050565b600060026004602082020160003690501015151561117457fe5b60008314806111ff57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561120a57600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b60005481565b6000806000806000600854611314613159565b1015611324576136b09450611387565b61133761132f613159565b6008546135c1565b935062013b0092506202760091506203b10090508284101561135d576132c89450611387565b8184101561136f57612ee09450611387565b8084101561138157612af89450611387565b61271094505b5050505090565b6000600e60019054906101000a900460ff16806113f85750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806114505750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561145b57600080fd5b6114668484846135da565b90509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114cb57600080fd5b6008546114d6613159565b1015156114e257600080fd5b806114eb613159565b1015156114f757600080fd5b8060088190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561155d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561159957600080fd5b6000831115156115a857600080fd5b81811115156115b657600080fd5b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506020604051908101604052808481525060106000820151816000015590505081600881905550806009819055506116a66139a1565b600f8190555066b1a2bc2ec5000060118190555050505050565b60055481565b600f5481565b6000806000806000339450601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561172b57600080fd5b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506013600084815260200190815260200160002091506000826000015411151561179857600080fd5b8160000154848115156117a757fe5b0490506000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156118225761181d8582866139a9565b61182e565b61182d858286613b37565b5b5050505050565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118cb5780601f106118a0576101008083540402835291602001916118cb565b820191906000526020600020905b8154815290600101906020018083116118ae57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561192f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561196b57600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a3157600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611af75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611b0257600080fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a250565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c2257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c5e57600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d4757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d8357600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915090508060000154908060010154905082565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611edf57600080fd5b600954611eea613159565b101515611ef657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611f3257600080fd5b60009150611f4885670de0b6b3a7640000613161565b9050611f8587878080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612b85565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916611fe285858080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612b85565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561203057606461201782600a613161565b81151561202057fe5b04915061202d81836131e5565b90505b61203a888261320f565b8773ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a28773ffffffffffffffffffffffffffffffffffffffff167f4df679e3cae3a2641649110128bf2d93f65fddaee12e077436767670e7b9077c8888878787604051808060200180602001848152602001838103835288888281815260200192508082843782019150508381038252868682818152602001925080828437820191505097505050505050505060405180910390a25050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121a657600080fd5b6009546121b1613159565b1115156121bd57600080fd5b6001600e60016101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122835750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561228e57600080fd5b60008111151561229d57600080fd5b6122a681613c41565b80601060000181905550601060136000600f548152602001908152602001600020600082015481600001559050506122dc6139a1565b600f819055507fae46785019700e30375a5d7b4f91e32f8060ef085111f896ebf889450aa2ab5a816040518082815260200191505060405180910390a150565b60008060008311151561232e57600080fd5b8261233833611ca2565b1015151561234557600080fd5b6010600001548381151561235557fe5b049050803073ffffffffffffffffffffffffffffffffffffffff16311015151561237e57600080fd5b80915050919050565b60095481565b60006003600460208202016000369050101515156123a757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561243157600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360019150509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125b95780601f1061258e576101008083540402835291602001916125b9565b820191906000526020600020905b81548152906001019060200180831161259c57829003601f168201915b505050505081565b60146020528060005260406000206000915054906101000a900460ff1681565b60115481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806126905750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561269b57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156126c157600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561272357600080fd5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a150565b60108060000154905081565b6000600e60019054906101000a900460ff16806127d35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061282b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561283657600080fd5b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561288e57600080fd5b600954612899613159565b1115156128a557600080fd5b6000821115156128b457600080fd5b339050816128c182611ca2565b101515156128ce57600080fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561291f57600080fd5b612968600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836135c1565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280838152602001600f54815250601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25050565b612a7333610eb5565b565b6000600e60019054906101000a900460ff1680612adf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b375750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612b4257600080fd5b612b4c8383613d0f565b905092915050565b600e60009054906101000a900460ff1681565b60136020528060005260406000206000915090508060000154905081565b6000612b8f613f47565b829050806002815181101515612ba157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002915050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c5057600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b600d5481565b60085481565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612da157600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612e4757600080fd5b6102c65a03f11515612e5857600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612f3157600080fd5b6102c65a03f11515612f4257600080fd5b5050506040518051905050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fae57600080fd5b600954612fb9613159565b101515612fc557600080fd5b80612fce613159565b101515612fda57600080fd5b8060098190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561304057600080fd5b8060118190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130f35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156130fe57600080fd5b60003411151561310d57600080fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a1565b600e60019054906101000a900460ff1681565b600043905090565b60008082840290506000841480613182575082848281151561317f57fe5b04145b151561318a57fe5b8091505092915050565b600080600080600a9250600091506000905081836131b0613159565b8115156131b957fe5b0614156131da5760646131cd86600a613161565b8115156131d657fe5b0490505b809350505050919050565b60008082840190508381101580156131fd5750828110155b151561320557fe5b8091505092915050565b600080600080600a60149054906101000a900460ff16151561323057600080fd5b670de0b6b3a764000093506132496321f9828085613161565b6132538686613161565b81151561325c57fe5b04925083613277846132726316a6570088613161565b613161565b81151561328057fe5b04915061328d85836131e5565b905060075461329e600054836131e5565b111515156132ab57600080fd5b6132b7600054826131e5565b600081905550613306600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866131e5565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133b460016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836131e5565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050505050565b60008282111515156135cf57fe5b818303905092915050565b60006003600460208202016000369050101515156135f457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561363057600080fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156136fb575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156137075750600083115b151561371257600080fd5b61375b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e7600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b0600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b600042905090565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156139cc57fe5b613a3760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826131e5565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515613adc57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a2505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515613b5957fe5b613ba2600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826131e5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a2505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415613d0b57600f54613caf613ca76139a1565b600d546135c1565b10151515613cbc57600080fd5b81601060000154811015613d095760009150601060000154613cdf846064613161565b811515613ce857fe5b049150613cf66064836135c1565b915060148211151515613d0857600080fd5b5b505b5050565b6000600260046020820201600036905010151515613d2957fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613d6557600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613db45750600083115b1515613dbf57600080fd5b613e08600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e94600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6020604051908101604052806000815250905600a165627a7a72305820a25a6c88da760ddbc12060f0bf2469c2d4bb351efd648de8ae444f17e74f17f80029
Deployed Bytecode
0x60606040526004361061025c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146102a157806306fe22121461032f578063095ea7b31461035257806318160ddd146103ac57806319476244146103d557806323b872dd146103fe578063276605bc14610477578063292636301461049a578063313ce567146104ee578063347820eb146105175780633ccfd60b1461054057806354fd4d50146105555780635a8cf571146105e35780635e6f60451461061c5780635ed7ca5b14610671578063643a769514610686578063664a1ad6146106bf5780636fb4adff1461071457806370a082311461074d578063749915691461079a5780637a9262a2146107d35780637e32716814610827578063823e569e146108915780638a8c523c146108e65780638d6cc56d146108fb5780638f11e5f91461091e57806391b43d13146109555780639281cd651461097e57806395d89b41146109e15780639b19251a14610a6f5780639b2cb5d814610ac05780639c8f9f2314610ae95780639d1b464a14610b0c5780639ee679e814610b35578063a6f2ae3a14610b58578063a9059cbb14610b62578063b9b8af0b14610bbc578063bc31c1c114610be9578063c02cc95714610c20578063cb3e64fd14610cd5578063ccca123b14610cea578063d648a64714610d13578063dcf72c1014610d3c578063dd54291b14610d6a578063dd62ed3e14610d93578063df8de3e714610dff578063e28b0d9a14610e38578063e34ffcb814610e5b578063e8078d9414610e7e578063f5ac9db614610e88575b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561029657600080fd5b61029f33610eb5565b005b34156102ac57600080fd5b6102b4611056565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f45780820151818401526020810190506102d9565b50505050905090810190601f1680156103215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033a57600080fd5b61035060048080359060200190919050506110f4565b005b341561035d57600080fd5b610392600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061115a565b604051808215151515815260200191505060405180910390f35b34156103b757600080fd5b6103bf6112fb565b6040518082815260200191505060405180910390f35b34156103e057600080fd5b6103e8611301565b6040518082815260200191505060405180910390f35b341561040957600080fd5b61045d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061138e565b604051808215151515815260200191505060405180910390f35b341561048257600080fd5b610498600480803590602001909190505061146f565b005b34156104a557600080fd5b6104ec600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050611501565b005b34156104f957600080fd5b6105016116c0565b6040518082815260200191505060405180910390f35b341561052257600080fd5b61052a6116c6565b6040518082815260200191505060405180910390f35b341561054b57600080fd5b6105536116cc565b005b341561056057600080fd5b610568611835565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a857808201518184015260208101905061058d565b50505050905090810190601f1680156105d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105ee57600080fd5b61061a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b341561062757600080fd5b61062f6119af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067c57600080fd5b6106846119d5565b005b341561069157600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b34156106ca57600080fd5b6106d2611ba0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561071f57600080fd5b61074b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bc6565b005b341561075857600080fd5b610784600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ca2565b6040518082815260200191505060405180910390f35b34156107a557600080fd5b6107d1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ceb565b005b34156107de57600080fd5b61080a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e5c565b604051808381526020018281526020019250505060405180910390f35b341561083257600080fd5b61088f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001919091929080359060200190919080359060200190820180359060200191909192905050611e80565b005b341561089c57600080fd5b6108a4612124565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108f157600080fd5b6108f961214a565b005b341561090657600080fd5b61091c60048080359060200190919050506121da565b005b341561092957600080fd5b61093f600480803590602001909190505061231c565b6040518082815260200191505060405180910390f35b341561096057600080fd5b610968612387565b6040518082815260200191505060405180910390f35b341561098957600080fd5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190505061238d565b604051808215151515815260200191505060405180910390f35b34156109ec57600080fd5b6109f4612523565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a34578082015181840152602081019050610a19565b50505050905090810190601f168015610a615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a7a57600080fd5b610aa6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125c1565b604051808215151515815260200191505060405180910390f35b3415610acb57600080fd5b610ad36125e1565b6040518082815260200191505060405180910390f35b3415610af457600080fd5b610b0a60048080359060200190919050506125e7565b005b3415610b1757600080fd5b610b1f61275d565b6040518082815260200191505060405180910390f35b3415610b4057600080fd5b610b566004808035906020019091905050612769565b005b610b60612a6a565b005b3415610b6d57600080fd5b610ba2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612a75565b604051808215151515815260200191505060405180910390f35b3415610bc757600080fd5b610bcf612b54565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610c0a6004808035906020019091905050612b67565b6040518082815260200191505060405180910390f35b3415610c2b57600080fd5b610c7b600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612b85565b60405180827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3415610ce057600080fd5b610ce8612bf4565b005b3415610cf557600080fd5b610cfd612c6d565b6040518082815260200191505060405180910390f35b3415610d1e57600080fd5b610d26612c73565b6040518082815260200191505060405180910390f35b610d68600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eb5565b005b3415610d7557600080fd5b610d7d612c79565b6040518082815260200191505060405180910390f35b3415610d9e57600080fd5b610de9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c7f565b6040518082815260200191505060405180910390f35b3415610e0a57600080fd5b610e36600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d06565b005b3415610e4357600080fd5b610e596004808035906020019091905050612f52565b005b3415610e6657600080fd5b610e7c6004808035906020019091905050612fe4565b005b610e8661304a565b005b3415610e9357600080fd5b610e9b613146565b604051808215151515815260200191505060405180910390f35b600080600080600e60009054906101000a900460ff16151515610ed757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515610f1357600080fd5b6011543410151515610f2457600080fd5b600954610f2f613159565b101515610f3b57600080fd5b610f4a34601060000154613161565b9350610f5584613194565b9250610f6834610f63611301565b613161565b9150610f7482846131e5565b9050610f80858261320f565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515610fe257600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35050505050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110ec5780601f106110c1576101008083540402835291602001916110ec565b820191906000526020600020905b8154815290600101906020018083116110cf57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561115057600080fd5b80600d8190555050565b600060026004602082020160003690501015151561117457fe5b60008314806111ff57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561120a57600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b60005481565b6000806000806000600854611314613159565b1015611324576136b09450611387565b61133761132f613159565b6008546135c1565b935062013b0092506202760091506203b10090508284101561135d576132c89450611387565b8184101561136f57612ee09450611387565b8084101561138157612af89450611387565b61271094505b5050505090565b6000600e60019054906101000a900460ff16806113f85750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806114505750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561145b57600080fd5b6114668484846135da565b90509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114cb57600080fd5b6008546114d6613159565b1015156114e257600080fd5b806114eb613159565b1015156114f757600080fd5b8060088190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561155d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561159957600080fd5b6000831115156115a857600080fd5b81811115156115b657600080fd5b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506020604051908101604052808481525060106000820151816000015590505081600881905550806009819055506116a66139a1565b600f8190555066b1a2bc2ec5000060118190555050505050565b60055481565b600f5481565b6000806000806000339450601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561172b57600080fd5b601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506013600084815260200190815260200160002091506000826000015411151561179857600080fd5b8160000154848115156117a757fe5b0490506000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156118225761181d8582866139a9565b61182e565b61182d858286613b37565b5b5050505050565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118cb5780601f106118a0576101008083540402835291602001916118cb565b820191906000526020600020905b8154815290600101906020018083116118ae57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561192f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561196b57600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a3157600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611af75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611b0257600080fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a250565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c2257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c5e57600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d4757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d8357600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915090508060000154908060010154905082565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611edf57600080fd5b600954611eea613159565b101515611ef657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611f3257600080fd5b60009150611f4885670de0b6b3a7640000613161565b9050611f8587878080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612b85565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916611fe285858080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050612b85565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561203057606461201782600a613161565b81151561202057fe5b04915061202d81836131e5565b90505b61203a888261320f565b8773ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a28773ffffffffffffffffffffffffffffffffffffffff167f4df679e3cae3a2641649110128bf2d93f65fddaee12e077436767670e7b9077c8888878787604051808060200180602001848152602001838103835288888281815260200192508082843782019150508381038252868682818152602001925080828437820191505097505050505050505060405180910390a25050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121a657600080fd5b6009546121b1613159565b1115156121bd57600080fd5b6001600e60016101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122835750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561228e57600080fd5b60008111151561229d57600080fd5b6122a681613c41565b80601060000181905550601060136000600f548152602001908152602001600020600082015481600001559050506122dc6139a1565b600f819055507fae46785019700e30375a5d7b4f91e32f8060ef085111f896ebf889450aa2ab5a816040518082815260200191505060405180910390a150565b60008060008311151561232e57600080fd5b8261233833611ca2565b1015151561234557600080fd5b6010600001548381151561235557fe5b049050803073ffffffffffffffffffffffffffffffffffffffff16311015151561237e57600080fd5b80915050919050565b60095481565b60006003600460208202016000369050101515156123a757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561243157600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360019150509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125b95780601f1061258e576101008083540402835291602001916125b9565b820191906000526020600020905b81548152906001019060200180831161259c57829003601f168201915b505050505081565b60146020528060005260406000206000915054906101000a900460ff1681565b60115481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806126905750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561269b57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156126c157600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561272357600080fd5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a150565b60108060000154905081565b6000600e60019054906101000a900460ff16806127d35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061282b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561283657600080fd5b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561288e57600080fd5b600954612899613159565b1115156128a557600080fd5b6000821115156128b457600080fd5b339050816128c182611ca2565b101515156128ce57600080fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561291f57600080fd5b612968600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836135c1565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280838152602001600f54815250601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25050565b612a7333610eb5565b565b6000600e60019054906101000a900460ff1680612adf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b375750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612b4257600080fd5b612b4c8383613d0f565b905092915050565b600e60009054906101000a900460ff1681565b60136020528060005260406000206000915090508060000154905081565b6000612b8f613f47565b829050806002815181101515612ba157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002915050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c5057600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b600d5481565b60085481565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d6557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612da157600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612e4757600080fd5b6102c65a03f11515612e5857600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612f3157600080fd5b6102c65a03f11515612f4257600080fd5b5050506040518051905050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fae57600080fd5b600954612fb9613159565b101515612fc557600080fd5b80612fce613159565b101515612fda57600080fd5b8060098190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561304057600080fd5b8060118190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130f35750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156130fe57600080fd5b60003411151561310d57600080fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a1565b600e60019054906101000a900460ff1681565b600043905090565b60008082840290506000841480613182575082848281151561317f57fe5b04145b151561318a57fe5b8091505092915050565b600080600080600a9250600091506000905081836131b0613159565b8115156131b957fe5b0614156131da5760646131cd86600a613161565b8115156131d657fe5b0490505b809350505050919050565b60008082840190508381101580156131fd5750828110155b151561320557fe5b8091505092915050565b600080600080600a60149054906101000a900460ff16151561323057600080fd5b670de0b6b3a764000093506132496321f9828085613161565b6132538686613161565b81151561325c57fe5b04925083613277846132726316a6570088613161565b613161565b81151561328057fe5b04915061328d85836131e5565b905060075461329e600054836131e5565b111515156132ab57600080fd5b6132b7600054826131e5565b600081905550613306600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866131e5565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133b460016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836131e5565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050505050565b60008282111515156135cf57fe5b818303905092915050565b60006003600460208202016000369050101515156135f457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561363057600080fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156136fb575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156137075750600083115b151561371257600080fd5b61375b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e7600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b0600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b600042905090565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156139cc57fe5b613a3760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826131e5565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515613adc57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a2505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515613b5957fe5b613ba2600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826131e5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a2505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415613d0b57600f54613caf613ca76139a1565b600d546135c1565b10151515613cbc57600080fd5b81601060000154811015613d095760009150601060000154613cdf846064613161565b811515613ce857fe5b049150613cf66064836135c1565b915060148211151515613d0857600080fd5b5b505b5050565b6000600260046020820201600036905010151515613d2957fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613d6557600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613db45750600083115b1515613dbf57600080fd5b613e08600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135c1565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e94600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846131e5565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6020604051908101604052806000815250905600a165627a7a72305820a25a6c88da760ddbc12060f0bf2469c2d4bb351efd648de8ae444f17e74f17f80029
Swarm Source
bzzr://a25a6c88da760ddbc12060f0bf2469c2d4bb351efd648de8ae444f17e74f17f8
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.