Overview
Max Total Supply
40,656,081.980167189594966596 C20
Holders
14,334 (0.00%)
Market
Price
$0.00 @ 0.000001 ETH (+1.47%)
Onchain Market Cap
$154,596.34
Circulating Supply Market Cap
$153,521.52
Other Info
Token Contract (WITH 18 Decimals)
Balance
17,877.04005573344004141 C20Value
$67.98 ( ~0.0210945749034909 Eth) [0.0440%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
C20
Compiler Version
v0.4.11+commit.68ef5810
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-10-13 */ pragma solidity 0.4.11; contract SafeMath { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } // 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 Token { // ERC20 standard function balanceOf(address _owner) constant returns (uint256 balance); function transfer(address _to, uint256 _value) returns (bool success); function transferFrom(address _from, address _to, uint256 _value) returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); function allowance(address _owner, address _spender) 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 StandardToken is Token, SafeMath { uint256 public totalSupply; // TODO: update tests to expect throw function transfer(address _to, uint256 _value) onlyPayloadSize(2) 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; } // TODO: update tests to expect throw function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3) 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) 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) 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) 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) constant returns (uint256 remaining) { return allowed[_owner][_spender]; } mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; } contract C20 is StandardToken { // FIELDS string public name = "Crypto20"; string public symbol = "C20"; uint256 public decimals = 18; string public version = "9.0"; uint256 public tokenCap = 86206896 * 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 assets have been acquired 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 = 0.04 ether; // 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; uint256 denominator; } 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 ethValue, uint256 amountTokens); event AllocatePresale(address indexed participant, uint256 amountTokens); event Whitelist(address indexed participant); event PriceUpdate(uint256 numerator, uint256 denominator); 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(now, waitTime) >= previousUpdateTime); _; } modifier only_if_increase (uint256 newNumerator) { if (newNumerator > currentPrice.numerator) _; } // CONSTRUCTOR function C20(address controlWalletInput, uint256 priceNumeratorInput, uint256 startBlockInput, uint256 endBlockInput) { require(controlWalletInput != address(0)); require(priceNumeratorInput > 0); require(endBlockInput > startBlockInput); fundWallet = msg.sender; controlWallet = controlWalletInput; whitelist[fundWallet] = true; whitelist[controlWallet] = true; currentPrice = Price(priceNumeratorInput, 1000); // 1 token = 1 usd at ICO start fundingStartBlock = startBlockInput; fundingEndBlock = endBlockInput; previousUpdateTime = now; } // 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 = now; PriceUpdate(newNumerator, currentPrice.denominator); } function require_limited_change (uint256 newNumerator) private only_if_controlWallet require_waited only_if_increase(newNumerator) { uint256 percentage_diff = 0; percentage_diff = safeMul(newNumerator, 100) / currentPrice.numerator; percentage_diff = safeSub(percentage_diff, 100); // controlWallet can only increase price by max 20% and only every waitTime require(percentage_diff <= 20); } function updatePriceDenominator(uint256 newDenominator) external onlyFundWallet { require(block.number > fundingEndBlock); require(newDenominator > 0); currentPrice.denominator = newDenominator; // maps time to new Price prices[previousUpdateTime] = currentPrice; previousUpdateTime = now; PriceUpdate(currentPrice.numerator, newDenominator); } function allocateTokens(address participant, uint256 amountTokens) private { require(vestingSet); // 13% of total allocated for PR, Marketing, Team, Advisors uint256 developmentAllocation = safeMul(amountTokens, 14942528735632185) / 100000000000000000; // 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); } function allocatePresaleTokens(address participant, uint amountTokens) external onlyFundWallet { require(block.number < fundingEndBlock); require(participant != address(0)); whitelist[participant] = true; // automatically whitelist accepted presale allocateTokens(participant, amountTokens); Whitelist(participant); AllocatePresale(participant, amountTokens); } function verifyParticipant(address participant) external onlyManagingWallets { whitelist[participant] = true; Whitelist(participant); } function buy() external payable { buyTo(msg.sender); } function buyTo(address participant) public payable onlyWhitelist { require(!halted); require(participant != address(0)); require(msg.value >= minAmount); require(block.number >= fundingStartBlock && block.number < fundingEndBlock); uint256 icoDenominator = icoDenominatorPrice(); uint256 tokensToBuy = safeMul(msg.value, currentPrice.numerator) / icoDenominator; allocateTokens(participant, tokensToBuy); // send ether to fundWallet fundWallet.transfer(msg.value); Buy(msg.sender, participant, msg.value, tokensToBuy); } // time based on blocknumbers, assuming a blocktime of 30s function icoDenominatorPrice() public constant returns (uint256) { uint256 icoDuration = safeSub(block.number, fundingStartBlock); uint256 denominator; if (icoDuration < 2880) { // #blocks = 24*60*60/30 = 2880 return currentPrice.denominator; } else if (icoDuration < 80640 ) { // #blocks = 4*7*24*60*60/30 = 80640 denominator = safeMul(currentPrice.denominator, 105) / 100; return denominator; } else { denominator = safeMul(currentPrice.denominator, 110) / 100; return denominator; } } function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist { require(block.number > 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 = safeMul(tokens, price.denominator) / 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 } function checkWithdrawValue(uint256 amountTokensToWithdraw) constant returns (uint256 etherValue) { require(amountTokensToWithdraw > 0); require(balanceOf(msg.sender) >= amountTokensToWithdraw); uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / 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; } function updateFundingStartBlock(uint256 newFundingStartBlock) external onlyFundWallet { require(block.number < fundingStartBlock); require(block.number < newFundingStartBlock); fundingStartBlock = newFundingStartBlock; } function updateFundingEndBlock(uint256 newFundingEndBlock) external onlyFundWallet { require(block.number < fundingEndBlock); require(block.number < newFundingEndBlock); fundingEndBlock = newFundingEndBlock; } function halt() external onlyFundWallet { halted = true; } function unhalt() external onlyFundWallet { halted = false; } function enableTrading() external onlyFundWallet { require(block.number > fundingEndBlock); tradeable = true; } // fallback function function() payable { require(tx.origin == msg.sender); buyTo(msg.sender); } 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) isTradeable returns (bool success) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) 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,"type":"function"},{"constant":false,"inputs":[{"name":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingStartBlock","type":"uint256"}],"name":"updateFundingStartBlock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokens","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"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,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDenominator","type":"uint256"}],"name":"updatePriceDenominator","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFundingEndBlock","type":"uint256"}],"name":"updateFundingEndBlock","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoDenominatorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startBlockInput","type":"uint256"},{"name":"endBlockInput","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"ethValue","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"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"},{"indexed":false,"name":"denominator","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
6060604052604060405190810160405280600881526020017f43727970746f32300000000000000000000000000000000000000000000000008152506003908051906020019062000052929190620003d4565b50604060405190810160405280600381526020017f433230000000000000000000000000000000000000000000000000000000000081525060049080519060200190620000a1929190620003d4565b506012600555604060405190810160405280600381526020017f392e30000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f5929190620003d4565b506a474f05324221d718c000006007556000600a60146101000a81548160ff021916908315150217905550614650600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125534156200017557fe5b60405160808062003e71833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001ec5760006000fd5b600083111515620001fd5760006000fd5b81811115156200020d5760006000fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040604051908101604052808481526020016103e881525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f819055505b5050505062000483565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200041757805160ff191683800117855562000448565b8280016001018555821562000448579182015b82811115620004475782518255916020019190600101906200042a565b5b5090506200045791906200045b565b5090565b6200048091905b808211156200047c57600081600090555060010162000462565b5090565b90565b6139de80620004936000396000f30060606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af002900000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60
Deployed Bytecode
0x60606040523615610244576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461029157806306fe22121461032a578063095ea7b31461034a57806318160ddd146103a157806323b872dd146103c7578063276605bc1461043d578063313ce5671461045d578063347820eb146104835780633ccfd60b146104a957806354fd4d50146104bb5780635a8cf571146105545780635e6f60451461058a5780635ed7ca5b146105dc578063643a7695146105ee578063664a1ad6146106245780636fb4adff1461067657806370a08231146106ac57806374991569146106f65780637a9262a21461072c578063823e569e1461077d5780638a8c523c146107cf5780638d6cc56d146107e15780638f11e5f9146108015780638fee76871461083557806391b43d13146108745780639281cd651461089a57806395d89b41146108fa5780639b19251a146109935780639b2cb5d8146109e15780639c8f9f2314610a075780639d1b464a14610a275780639ee679e814610a54578063a6f2ae3a14610a74578063a9059cbb14610a7e578063b9b8af0b14610ad5578063bc31c1c114610aff578063cb3e64fd14610b3a578063ccca123b14610b4c578063d648a64714610b72578063dbb2455414610b98578063dcf72c1014610bb8578063dd54291b14610be6578063dd62ed3e14610c0c578063df8de3e714610c75578063e28b0d9a14610cab578063e8078d9414610ccb578063f5ac9db614610cd5578063fa0d80fc14610cff575b61028f5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102835760006000fd5b61028c33610d25565b5b565b005b341561029957fe5b6102a1610f13565b60405180806020018281038252838181518152602001915080519060200190808383600083146102f0575b8051825260208311156102f0576020820191506020810190506020830392506102cc565b505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033257fe5b6103486004808035906020019091905050610fb1565b005b341561035257fe5b610387600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061101a565b604051808215151515815260200191505060405180910390f35b34156103a957fe5b6103b16111be565b6040518082815260200191505060405180910390f35b34156103cf57fe5b610423600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c4565b604051808215151515815260200191505060405180910390f35b341561044557fe5b61045b60048080359060200190919050506112a8565b005b341561046557fe5b61046d611331565b6040518082815260200191505060405180910390f35b341561048b57fe5b610493611337565b6040518082815260200191505060405180910390f35b34156104b157fe5b6104b961133d565b005b34156104c357fe5b6104cb6114b8565b604051808060200182810382528381815181526020019150805190602001908083836000831461051a575b80518252602083111561051a576020820191506020810190506020830392506104f6565b505050905090810190601f1680156105465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055c57fe5b610588600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611556565b005b341561059257fe5b61059a611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105e457fe5b6105ec61165c565b005b34156105f657fe5b610622600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d8565b005b341561062c57fe5b610634611830565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067e57fe5b6106aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611856565b005b34156106b457fe5b6106e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611936565b6040518082815260200191505060405180910390f35b34156106fe57fe5b61072a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611980565b005b341561073457fe5b610760600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611af5565b604051808381526020018281526020019250505060405180910390f35b341561078557fe5b61078d611b19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107d757fe5b6107df611b3f565b005b34156107e957fe5b6107ff6004808035906020019091905050611bcc565b005b341561080957fe5b61081f6004808035906020019091905050611d22565b6040518082815260200191505060405180910390f35b341561083d57fe5b610872600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611da0565b005b341561087c57fe5b610884611f47565b6040518082815260200191505060405180910390f35b34156108a257fe5b6108e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050611f4d565b604051808215151515815260200191505060405180910390f35b341561090257fe5b61090a6120e6565b6040518080602001828103825283818151815260200191508051906020019080838360008314610959575b80518252602083111561095957602082019150602081019050602083039250610935565b505050905090810190601f1680156109855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561099b57fe5b6109c7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612184565b604051808215151515815260200191505060405180910390f35b34156109e957fe5b6109f16121a4565b6040518082815260200191505060405180910390f35b3415610a0f57fe5b610a2560048080359060200190919050506121aa565b005b3415610a2f57fe5b610a37612324565b604051808381526020018281526020019250505060405180910390f35b3415610a5c57fe5b610a726004808035906020019091905050612336565b005b610a7c61263a565b005b3415610a8657fe5b610abb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612646565b604051808215151515815260200191505060405180910390f35b3415610add57fe5b610ae5612728565b604051808215151515815260200191505060405180910390f35b3415610b0757fe5b610b1d600480803590602001909190505061273b565b604051808381526020018281526020019250505060405180910390f35b3415610b4257fe5b610b4a61275f565b005b3415610b5457fe5b610b5c6127db565b6040518082815260200191505060405180910390f35b3415610b7a57fe5b610b826127e1565b6040518082815260200191505060405180910390f35b3415610ba057fe5b610bb660048080359060200190919050506127e7565b005b610be4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d25565b005b3415610bee57fe5b610bf66128ed565b6040518082815260200191505060405180910390f35b3415610c1457fe5b610c5f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506128f3565b6040518082815260200191505060405180910390f35b3415610c7d57fe5b610ca9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061297b565b005b3415610cb357fe5b610cc96004808035906020019091905050612bc0565b005b610cd3612c49565b005b3415610cdd57fe5b610ce5612d49565b604051808215151515815260200191505060405180910390f35b3415610d0757fe5b610d0f612d5c565b6040518082815260200191505060405180910390f35b60006000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d825760006000fd5b600e60009054906101000a900460ff16151515610d9f5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ddc5760006000fd5b6012543410151515610dee5760006000fd5b6008544310158015610e01575060095443105b1515610e0d5760006000fd5b610e15612d5c565b915081610e2734601060000154612de5565b811515610e3057fe5b049050610e3d8382612e1a565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f193505050501515610e9f57fe5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a35b5b505050565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100e5760006000fd5b80600d819055505b5b50565b600060026004602082020160003690501015151561103457fe5b60008314806110bf57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156110cb5760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b5092915050565b60005481565b6000600e60019054906101000a900460ff168061122e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112865750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112925760006000fd5b61129d848484612ffe565b90505b5b9392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113055760006000fd5b600854431015156113165760006000fd5b80431015156113255760006000fd5b806008819055505b5b50565b60055481565b600f5481565b60006000600060006000339450601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154935060008411151561139f5760006000fd5b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506014600084815260200190815260200160002091506000826000015411151561140d5760006000fd5b8160000154611420858460010154612de5565b81151561142957fe5b0490506000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156114a45761149f8582866133c9565b6114b0565b6114af858286613558565b5b5b5050505050565b60068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f05760006000fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b95760006000fd5b6001600e60006101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117815750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561178d5760006000fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a25b5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b35760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118f05760006000fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119dd5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a1a5760006000fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff0219169083151502179055505b5b50565b60136020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9c5760006000fd5b60095443111515611bad5760006000fd5b6001600e60016101000a81548160ff0219169083151502179055505b5b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c755750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c815760006000fd5b600081111515611c915760006000fd5b611c9a81613663565b80601060000181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a15b5b50565b60006000600083111515611d365760006000fd5b82611d4033611936565b10151515611d4e5760006000fd5b601060000154611d6384601060010154612de5565b811515611d6c57fe5b049050803073ffffffffffffffffffffffffffffffffffffffff163110151515611d965760006000fd5b8091505b50919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dfd5760006000fd5b60095443101515611e0e5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611e4b5760006000fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ead8282612e1a565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405180905060405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25b5b5050565b60095481565b6000600360046020820201600036905010151515611f6757fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515611ff25760006000fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505b5b509392505050565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561217c5780601f106121515761010080835404028352916020019161217c565b820191906000526020600020905b81548152906001019060200180831161215f57829003601f168201915b505050505081565b60156020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122535750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561225f5760006000fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156122865760006000fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f1935050505015156122e857fe5b7f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a15b5b50565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806123a05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123f85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156124045760006000fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561245d5760006000fd5b6009544311151561246e5760006000fd5b60008211151561247e5760006000fd5b3390508161248b82611936565b101515156124995760006000fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415156124eb5760006000fd5b612534600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613730565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604060405190810160405280838152602001600f54815250601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25b5b5b5050565b61264333610d25565b5b565b6000600e60019054906101000a900460ff16806126b05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806127085750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127145760006000fd5b61271e838361374a565b90505b5b92915050565b600e60009054906101000a900460ff1681565b60146020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127bc5760006000fd5b6000600e60006101000a81548160ff0219169083151502179055505b5b565b600d5481565b60085481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128445760006000fd5b600954431115156128555760006000fd5b6000811115156128655760006000fd5b80601060010181905550601060146000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15b5b50565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60006000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129dc5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a195760006000fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612abc57fe5b6102c65a03f11515612aca57fe5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ba057fe5b6102c65a03f11515612bae57fe5b50505060405180519050505b5b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c1d5760006000fd5b60095443101515612c2e5760006000fd5b8043101515612c3d5760006000fd5b806009819055505b5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612cf25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612cfe5760006000fd5b600034111515612d0e5760006000fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a15b5b565b600e60019054906101000a900460ff1681565b600060006000612d6e43600854613730565b9150610b40821015612d87576010600101549250612de0565b62013b00821015612db8576064612da46010600101546069612de5565b811515612dad57fe5b049050809250612de0565b6064612dca601060010154606e612de5565b811515612dd357fe5b049050809250612de0565b5b5b505090565b6000600082840290506000841480612e075750828482811515612e0457fe5b04145b1515612e0f57fe5b8091505b5092915050565b60006000600a60149054906101000a900460ff161515612e3a5760006000fd5b67016345785d8a0000612e54846635162695555b39612de5565b811515612e5d57fe5b049150612e6a8383613986565b9050600754612e7b60005483613986565b11151515612e895760006000fd5b612e9560005482613986565b600081905550612ee4600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f9260016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613986565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b600060036004602082020160003690501015151561301857fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156130555760006000fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613120575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561312c5750600083115b15156131385760006000fd5b613181600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132d6600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b509392505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515156133ec57fe5b61345760016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051809050600060405180830381858888f1935050505015156134fc57fe5b8273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a25b505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151561357a57fe5b6135c3600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613986565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a25b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561372b57600f546136ca42600d54613730565b101515156136d85760006000fd5b8160106000015481111561372757600091506010600001546136fb846064612de5565b81151561370457fe5b049150613712826064613730565b9150601482111515156137255760006000fd5b5b5b5b505b5b5b5050565b600082821115151561373e57fe5b81830390505b92915050565b600060026004602082020160003690501015151561376457fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156137a15760006000fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137f05750600083115b15156137fc5760006000fd5b613845600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613730565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d1600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613986565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505b5b5092915050565b60006000828401905083811015801561399f5750828110155b15156139a757fe5b8091505b50929150505600a165627a7a72305820a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa0000000000000000000000000000000000000000000000000000000000053020000000000000000000000000000000000000000000000000000000000042af90000000000000000000000000000000000000000000000000000000000044ab60
-----Decoded View---------------
Arg [0] : controlWalletInput (address): 0x15756c7F329e3E00AB15D71f09655bD8Df14b7fa
Arg [1] : priceNumeratorInput (uint256): 340000
Arg [2] : startBlockInput (uint256): 4370320
Arg [3] : endBlockInput (uint256): 4500320
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000015756c7f329e3e00ab15d71f09655bd8df14b7fa
Arg [1] : 0000000000000000000000000000000000000000000000000000000000053020
Arg [2] : 000000000000000000000000000000000000000000000000000000000042af90
Arg [3] : 000000000000000000000000000000000000000000000000000000000044ab60
Swarm Source
bzzr://a1845868b1371865b636a79c2503060ea66461cd206d79eb74da145b034d97af
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.