More Info
Private Name Tags
ContractCreator
Latest 16 from a total of 16 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Safe Withdrawal | 5053442 | 2339 days ago | IN | 0 ETH | 0.00046762 | ||||
Safe Withdrawal | 5053098 | 2339 days ago | IN | 0 ETH | 0.00042309 | ||||
Safe Withdrawal | 5053096 | 2339 days ago | IN | 0 ETH | 0.00091298 | ||||
Safe Withdrawal | 5053083 | 2339 days ago | IN | 0 ETH | 0.00091298 | ||||
Safe Withdrawal | 5053030 | 2339 days ago | IN | 0 ETH | 0.00091298 | ||||
Check Goal Reach... | 5053002 | 2339 days ago | IN | 0 ETH | 0.00212892 | ||||
Close Presale | 4619382 | 2414 days ago | IN | 0 ETH | 0.00217499 | ||||
Transfer | 4588239 | 2419 days ago | IN | 0.4 ETH | 0.00177611 | ||||
Transfer | 4588190 | 2419 days ago | IN | 4.9 ETH | 0.00169154 | ||||
Transfer | 4588127 | 2419 days ago | IN | 3 ETH | 0.00177611 | ||||
Transfer | 4588126 | 2419 days ago | IN | 18.9 ETH | 0.00098238 | ||||
Transfer | 4588124 | 2419 days ago | IN | 5 ETH | 0.00177611 | ||||
Transfer | 4588114 | 2419 days ago | IN | 1 ETH | 0.0003383 | ||||
Transfer | 4587911 | 2419 days ago | IN | 0.1 ETH | 0.00229154 | ||||
Transfer | 4587901 | 2419 days ago | IN | 0.05 ETH | 0.00048454 | ||||
0x60606040 | 4587760 | 2419 days ago | IN | Create: Crowdsale | 0 ETH | 0.08330342 |
Loading...
Loading
Contract Name:
Crowdsale
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 2017-11-20 */ pragma solidity ^0.4.18; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public constant returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public constant returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic, Ownable { using SafeMath for uint256; mapping(address => uint256) balances; mapping(address => bool) locks; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(!locks[msg.sender] && !locks[_to]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } /** * @dev Sets the lock state of the specified address. * @param _toLock The address to set the the lock state for. * @param _setTo A bool representing the lock state. */ function setLock(address _toLock, bool _setTo) onlyOwner { locks[_toLock] = _setTo; } /** * @dev Gets the lock state of the specified address. * @param _owner The address to query the the lock state of. * @return A bool representing the lock state. */ function lockOf(address _owner) public constant returns (bool lock) { return locks[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(!locks[_from] && !locks[_to]); uint256 _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = _allowance.sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol */ function increaseApproval (address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title Mintable token * @dev ERC20 Token, with mintable token creation * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol */ contract MintableToken is StandardToken { string public constant name = "CryptoTask"; string public constant symbol = "CTF"; uint8 public constant decimals = 18; event Mint(address indexed to, uint256 amount); event MintFinished(); bool public mintingFinished = false; modifier canMint() { require(!mintingFinished); _; } /** * @dev Function to mint tokens * @param _to The address that will receive the minted tokens. * @param _amount The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) { require(!locks[_to]); totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(0x0, _to, _amount); return true; } /** * @dev Function to stop minting new tokens. * @return True if the operation was successful. */ function finishMinting() onlyOwner public returns (bool) { mintingFinished = true; MintFinished(); return true; } } contract Crowdsale is Ownable { using SafeMath for uint; uint public fundingGoal = 1000 * 1 ether; uint public hardCap; uint public amountRaisedPreSale = 0; uint public amountRaisedICO = 0; uint public contractDeployedTime; //period after which anyone can close the presale uint presaleDuration = 30 * 1 days; //period between pre-sale and ICO uint countdownDuration = 45 * 1 days; //ICO duration uint icoDuration = 20 * 1 days; uint public presaleEndTime; uint public deadline; uint public price = (1 ether)/1000; MintableToken public token; mapping(address => uint) public balanceOf; bool public icoSuccess = false; bool public crowdsaleClosed = false; //2 vaults that the raised funds are forwarded to address vault1; address vault2 = 0xC0776D495f9Ed916C87c8C48f34f08E2B9506342; //stage 0 - presale, 1 - ICO, 2 - ICO success, 3 - after 1st vote on continuation of the project, 4 - after 2nd vote. ICO funds released in 3 stages uint public stage = 0; //total token stake against the project continuation uint public against = 0; uint public lastVoteTime; uint minVoteTime = 180 * 1 days; event GoalReached(uint amountRaised); event FundTransfer(address backer, uint amount, bool isContribution); /** * Constrctor function * * Setup the owner */ function Crowdsale() { contractDeployedTime = now; vault1 = msg.sender; token = new MintableToken(); } /** * Fallback function * * Called whenever anyone sends funds to the contract */ function () payable { require(!token.lockOf(msg.sender) && !crowdsaleClosed && stage<2 && msg.value >= 1 * (1 ether)/10); if(stage==1 && (now < presaleEndTime.add(countdownDuration) || amountRaisedPreSale+amountRaisedICO+msg.value > hardCap)) { throw; } uint amount = msg.value; balanceOf[msg.sender] += amount; if(stage==0) { //presale amountRaisedPreSale += amount; token.mint(msg.sender, amount.mul(2) / price); } else { amountRaisedICO += amount; token.mint(msg.sender, amount / price); } FundTransfer(msg.sender, amount, true); } /** * Forwards the amount from the contract to the vaults, 67% of the amount to vault1 and 33% to vault2 */ function forward(uint amount) internal { vault1.transfer(amount.mul(67)/100); vault2.transfer(amount.sub(amount.mul(67)/100)); } modifier afterDeadline() { if (stage > 0 && now >= deadline) {_;} } /** * Check after deadline if the goal was reached and ends the campaign */ function checkGoalReached() afterDeadline { require(stage==1 && !crowdsaleClosed); if (amountRaisedPreSale+amountRaisedICO >= fundingGoal) { uint amount = amountRaisedICO/3; if(!icoSuccess) { amount += amountRaisedPreSale/3; //if funding goal hasn't been already reached in pre-sale } uint amountToken1 = token.totalSupply().mul(67)/(100*4); uint amountToken2 = token.totalSupply().mul(33)/(100*4); forward(amount); icoSuccess = true; token.mint(vault1, amountToken1); //67% of the 25% of the total token.mint(vault2, amountToken2); //33% of the 25% of the total stage=2; lastVoteTime = now; GoalReached(amountRaisedPreSale+amountRaisedICO); } crowdsaleClosed = true; token.finishMinting(); } /** * Closes presale */ function closePresale() { require((msg.sender == owner || now.sub(contractDeployedTime) > presaleDuration) && stage==0); stage = 1; presaleEndTime = now; deadline = now.add(icoDuration.add(countdownDuration)); if(amountRaisedPreSale.mul(5) > 10000 * 1 ether) { hardCap = amountRaisedPreSale.mul(5); } else { hardCap = 10000 * 1 ether; } if(amountRaisedPreSale >= fundingGoal) { uint amount = amountRaisedPreSale/3; forward(amount); icoSuccess = true; GoalReached(amountRaisedPreSale); } } /** * Withdraw the funds * * If goal was not reached, each contributor can withdraw the amount they contributed, or less in case project is stopped through voting in later stages. */ function safeWithdrawal() { require(crowdsaleClosed && !icoSuccess); uint amount; if(stage==1) { amount = balanceOf[msg.sender]; } else if(stage==2) { amount = balanceOf[msg.sender].mul(2)/3; //2 thirds of the initial deposit can be withdrawn } else if(stage==3) { amount = balanceOf[msg.sender]/3; //one third of the initial deposit can be withdrawn } balanceOf[msg.sender] = 0; if (amount > 0) { msg.sender.transfer(amount); FundTransfer(msg.sender, amount, false); } } /** * Token stakeholder can vote against the project continuation. Tokens are locked until voteRelease() is called */ function voteAgainst() { require((stage==2 || stage==3) && !token.lockOf(msg.sender)); // If has already voted, cancel token.setLock(msg.sender, true); uint voteWeight = token.balanceOf(msg.sender); against = against.add(voteWeight); } /** * Token stakeholder can release the against-vote, and unlock the tokens */ function voteRelease() { require((stage==2 || stage==3 || stage==4) && token.lockOf(msg.sender)); token.setLock(msg.sender, false); uint voteWeight = token.balanceOf(msg.sender); against = against.sub(voteWeight); } /** * After each voting period, vote stakes can be counted, and in case that more than 50% of token stake is against the continuation, * the remaining eth balances can be withdrawn proportionally */ function countVotes() { require(icoSuccess && (stage==2 || stage==3) && now.sub(lastVoteTime) > minVoteTime); lastVoteTime = now; if(against > token.totalSupply()/2) { icoSuccess = false; } else { uint amount = amountRaisedICO/3 + amountRaisedPreSale/3; forward(amount); stage++; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"checkGoalReached","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presaleEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountRaisedPreSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountRaisedICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"voteRelease","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"closePresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoSuccess","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"voteAgainst","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"countVotes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastVoteTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"against","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractDeployedTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"safeWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amountRaised","type":"uint256"}],"name":"GoalReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"isContribution","type":"bool"}],"name":"FundTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6060604052683635c9adc5dea000006001556000600355600060045562278d00600655623b5380600755621a5e0060085566038d7ea4c68000600b556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff02191690831515021790555073c0776d495f9ed916c87c8c48f34f08e2b9506342600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601055600060115562ed4e0060135534156100e257600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260058190555033600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101726101cd565b604051809103906000f080151561018857600080fd5b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101de565b604051611a198062001ff183390190565b611e0380620001ee6000396000f300606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301cb3b201461059c578063249b7c19146105b1578063255c8244146105da57806329dcb0cf14610603578063344eca751461062c5780635ef3f3d11461065557806363cea4501461066a57806370a082311461067f5780637118f854146106cc5780637a3a0e84146106f95780638da5cb5b146107225780639f396cff14610777578063a035b1fe1461078c578063b647990a146107b5578063c040e6b8146107ca578063ccb07cef146107f3578063dac1743014610820578063dc50af2614610849578063e1727fc614610872578063f2fde38b1461089b578063fb86a404146108d4578063fc0c546a146108fd578063fd6b7ef814610952575b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156101fa57600080fd5b6102c65a03f1151561020b57600080fd5b5050506040518051905015801561022f5750600e60019054906101000a900460ff16155b801561023d57506002601054105b8015610251575067016345785d8a00003410155b151561025c57600080fd5b6001601054148015610297575061028060075460095461096790919063ffffffff16565b4210806102965750600254346004546003540101115b5b156102a157600080fd5b34905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000601054141561041a5780600360008282540192505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933600b5461036260028661098590919063ffffffff16565b81151561036b57fe5b046000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103f957600080fd5b6102c65a03f1151561040a57600080fd5b5050506040518051905050610521565b80600460008282540192505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933600b548481151561047657fe5b046000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561050457600080fd5b6102c65a03f1151561051557600080fd5b50505060405180519050505b7fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633826001604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390a150005b34156105a757600080fd5b6105af6109b8565b005b34156105bc57600080fd5b6105c4610f32565b6040518082815260200191505060405180910390f35b34156105e557600080fd5b6105ed610f38565b6040518082815260200191505060405180910390f35b341561060e57600080fd5b610616610f3e565b6040518082815260200191505060405180910390f35b341561063757600080fd5b61063f610f44565b6040518082815260200191505060405180910390f35b341561066057600080fd5b610668610f4a565b005b341561067557600080fd5b61067d61123c565b005b341561068a57600080fd5b6106b6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113dd565b6040518082815260200191505060405180910390f35b34156106d757600080fd5b6106df6113f5565b604051808215151515815260200191505060405180910390f35b341561070457600080fd5b61070c611408565b6040518082815260200191505060405180910390f35b341561072d57600080fd5b61073561140e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561078257600080fd5b61078a611433565b005b341561079757600080fd5b61079f611719565b6040518082815260200191505060405180910390f35b34156107c057600080fd5b6107c861171f565b005b34156107d557600080fd5b6107dd61189c565b6040518082815260200191505060405180910390f35b34156107fe57600080fd5b6108066118a2565b604051808215151515815260200191505060405180910390f35b341561082b57600080fd5b6108336118b5565b6040518082815260200191505060405180910390f35b341561085457600080fd5b61085c6118bb565b6040518082815260200191505060405180910390f35b341561087d57600080fd5b6108856118c1565b6040518082815260200191505060405180910390f35b34156108a657600080fd5b6108d2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118c7565b005b34156108df57600080fd5b6108e7611a1c565b6040518082815260200191505060405180910390f35b341561090857600080fd5b610910611a22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095d57600080fd5b610965611a48565b005b600080828401905083811015151561097b57fe5b8091505092915050565b600080828402905060008414806109a657508284828115156109a357fe5b04145b15156109ae57fe5b8091505092915050565b6000806000806010541180156109d05750600a544210155b15610f2d5760016010541480156109f45750600e60019054906101000a900460ff16155b15156109ff57600080fd5b60015460045460035401101515610e67576003600454811515610a1e57fe5b049250600e60009054906101000a900460ff161515610a4a5760038054811515610a4457fe5b04830192505b610190610b096043600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610ae057600080fd5b6102c65a03f11515610af157600080fd5b5050506040518051905061098590919063ffffffff16565b811515610b1257fe5b049150610190610bd46021600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610bab57600080fd5b6102c65a03f11515610bbc57600080fd5b5050506040518051905061098590919063ffffffff16565b811515610bdd57fe5b049050610be983611ca7565b6001600e60006101000a81548160ff021916908315150217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610cf357600080fd5b6102c65a03f11515610d0457600080fd5b5050506040518051905050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610dfe57600080fd5b6102c65a03f11515610e0f57600080fd5b50505060405180519050506002601081905550426012819055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b600454600354016040518082815260200191505060405180910390a15b6001600e60016101000a81548160ff021916908315150217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610f1057600080fd5b6102c65a03f11515610f2157600080fd5b50505060405180519050505b505050565b60095481565b60035481565b600a5481565b60045481565b600060026010541480610f5f57506003601054145b80610f6c57506004601054145b80156110545750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561103857600080fd5b6102c65a03f1151561104957600080fd5b505050604051805190505b151561105f57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b03c4b333360006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561112857600080fd5b6102c65a03f1151561113957600080fd5b505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561120157600080fd5b6102c65a03f1151561121257600080fd5b50505060405180519050905061123381601154611dbe90919063ffffffff16565b60118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112ae57506006546112ac60055442611dbe90919063ffffffff16565b115b80156112bc57506000601054145b15156112c757600080fd5b6001601081905550426009819055506112ff6112f060075460085461096790919063ffffffff16565b4261096790919063ffffffff16565b600a8190555069021e19e0c9bab2400000611326600560035461098590919063ffffffff16565b111561134d57611342600560035461098590919063ffffffff16565b60028190555061135f565b69021e19e0c9bab24000006002819055505b6001546003541015156113da576003805481151561137957fe5b04905061138581611ca7565b6001600e60006101000a81548160ff0219169083151502179055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b6003546040518082815260200191505060405180910390a15b50565b600d6020528060005260406000206000915090505481565b600e60009054906101000a900460ff1681565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002601054148061144857506003601054145b80156115315750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561151457600080fd5b6102c65a03f1151561152557600080fd5b50505060405180519050155b151561153c57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b03c4b333360016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561160557600080fd5b6102c65a03f1151561161657600080fd5b505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156116de57600080fd5b6102c65a03f115156116ef57600080fd5b5050506040518051905090506117108160115461096790919063ffffffff16565b60118190555050565b600b5481565b6000600e60009054906101000a900460ff16801561174c57506002601054148061174b57506003601054145b5b801561176d575060135461176b60125442611dbe90919063ffffffff16565b115b151561177857600080fd5b426012819055506002600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561180f57600080fd5b6102c65a03f1151561182057600080fd5b5050506040518051905081151561183357fe5b04601154111561185d576000600e60006101000a81548160ff021916908315150217905550611899565b6003805481151561186a57fe5b04600360045481151561187957fe5b0401905061188681611ca7565b6010600081548092919060010191905055505b50565b60105481565b600e60019054906101000a900460ff1681565b60125481565b60115481565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561192257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561195e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60019054906101000a900460ff168015611a735750600e60009054906101000a900460ff16155b1515611a7e57600080fd5b60016010541415611ad057600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b9d565b60026010541415611b41576003611b306002600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098590919063ffffffff16565b811515611b3957fe5b049050611b9c565b60036010541415611b9b576003600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811515611b9757fe5b0490505b5b5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000811115611ca4573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c2b57600080fd5b7fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633826000604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390a15b50565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064611cf960438561098590919063ffffffff16565b811515611d0257fe5b049081150290604051600060405180830381858888f193505050501515611d2857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d966064611d7d60438661098590919063ffffffff16565b811515611d8657fe5b0484611dbe90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501515611dbb57600080fd5b50565b6000828211151515611dcc57fe5b8183039050929150505600a165627a7a72305820bb6ee12ece21c94ddca86d164787023605dbe59fc7933affe410c70d98bd0373002960606040526000600560006101000a81548160ff02191690831515021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119aa8061006f6000396000f3006060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461010157806306fdde031461012e578063095ea7b3146101bc57806318160ddd1461021657806323b872dd1461023f578063313ce567146102b857806340c10f19146102e75780635a46d3b514610341578063661884631461039257806370a08231146103ec5780637d64bcb4146104395780638da5cb5b1461046657806395d89b41146104bb578063a9059cbb14610549578063b03c4b33146105a3578063d73dd623146105e7578063dd62ed3e14610641578063f2fde38b146106ad575b600080fd5b341561010c57600080fd5b6101146106e6565b604051808215151515815260200191505060405180910390f35b341561013957600080fd5b6101416106f9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610181578082015181840152602081019050610166565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c757600080fd5b6101fc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610732565b604051808215151515815260200191505060405180910390f35b341561022157600080fd5b610229610824565b6040518082815260200191505060405180910390f35b341561024a57600080fd5b61029e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061082a565b604051808215151515815260200191505060405180910390f35b34156102c357600080fd5b6102cb610bc5565b604051808260ff1660ff16815260200191505060405180910390f35b34156102f257600080fd5b610327600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bca565b604051808215151515815260200191505060405180910390f35b341561034c57600080fd5b610378600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610df5565b604051808215151515815260200191505060405180910390f35b341561039d57600080fd5b6103d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610e4b565b604051808215151515815260200191505060405180910390f35b34156103f757600080fd5b610423600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110dc565b6040518082815260200191505060405180910390f35b341561044457600080fd5b61044c611125565b604051808215151515815260200191505060405180910390f35b341561047157600080fd5b6104796111d1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104c657600080fd5b6104ce6111f7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561050e5780820151818401526020810190506104f3565b50505050905090810190601f16801561053b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561055457600080fd5b610589600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611230565b604051808215151515815260200191505060405180910390f35b34156105ae57600080fd5b6105e5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506114b5565b005b34156105f257600080fd5b610627600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061156c565b604051808215151515815260200191505060405180910390f35b341561064c57600080fd5b610697600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611768565b6040518082815260200191505060405180910390f35b34156106b857600080fd5b6106e4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117ef565b005b600560009054906101000a900460ff1681565b6040805190810160405280600a81526020017f43727970746f5461736b0000000000000000000000000000000000000000000081525081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561086957600080fd5b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561090d5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b151561091857600080fd5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506109e983600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7e83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ad4838261194790919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b601281565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c2857600080fd5b600560009054906101000a900460ff16151515610c4457600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c9d57600080fd5b610cb28260005461196090919063ffffffff16565b600081905550610d0a82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115610f5c576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ff0565b610f6f838261194790919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118357600080fd5b6001600560006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f435446000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561126d57600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113115750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b151561131c57600080fd5b61136e82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461194790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140382600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561151157600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115fd82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196090919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561184b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561188757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561195557fe5b818303905092915050565b600080828401905083811015151561197457fe5b80915050929150505600a165627a7a7230582017240107f6471eb4dac80a9a769776a1bb09b912639fb226ab00cabb15a8deac0029
Deployed Bytecode
0x606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301cb3b201461059c578063249b7c19146105b1578063255c8244146105da57806329dcb0cf14610603578063344eca751461062c5780635ef3f3d11461065557806363cea4501461066a57806370a082311461067f5780637118f854146106cc5780637a3a0e84146106f95780638da5cb5b146107225780639f396cff14610777578063a035b1fe1461078c578063b647990a146107b5578063c040e6b8146107ca578063ccb07cef146107f3578063dac1743014610820578063dc50af2614610849578063e1727fc614610872578063f2fde38b1461089b578063fb86a404146108d4578063fc0c546a146108fd578063fd6b7ef814610952575b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156101fa57600080fd5b6102c65a03f1151561020b57600080fd5b5050506040518051905015801561022f5750600e60019054906101000a900460ff16155b801561023d57506002601054105b8015610251575067016345785d8a00003410155b151561025c57600080fd5b6001601054148015610297575061028060075460095461096790919063ffffffff16565b4210806102965750600254346004546003540101115b5b156102a157600080fd5b34905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000601054141561041a5780600360008282540192505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933600b5461036260028661098590919063ffffffff16565b81151561036b57fe5b046000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103f957600080fd5b6102c65a03f1151561040a57600080fd5b5050506040518051905050610521565b80600460008282540192505081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933600b548481151561047657fe5b046000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561050457600080fd5b6102c65a03f1151561051557600080fd5b50505060405180519050505b7fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633826001604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390a150005b34156105a757600080fd5b6105af6109b8565b005b34156105bc57600080fd5b6105c4610f32565b6040518082815260200191505060405180910390f35b34156105e557600080fd5b6105ed610f38565b6040518082815260200191505060405180910390f35b341561060e57600080fd5b610616610f3e565b6040518082815260200191505060405180910390f35b341561063757600080fd5b61063f610f44565b6040518082815260200191505060405180910390f35b341561066057600080fd5b610668610f4a565b005b341561067557600080fd5b61067d61123c565b005b341561068a57600080fd5b6106b6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113dd565b6040518082815260200191505060405180910390f35b34156106d757600080fd5b6106df6113f5565b604051808215151515815260200191505060405180910390f35b341561070457600080fd5b61070c611408565b6040518082815260200191505060405180910390f35b341561072d57600080fd5b61073561140e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561078257600080fd5b61078a611433565b005b341561079757600080fd5b61079f611719565b6040518082815260200191505060405180910390f35b34156107c057600080fd5b6107c861171f565b005b34156107d557600080fd5b6107dd61189c565b6040518082815260200191505060405180910390f35b34156107fe57600080fd5b6108066118a2565b604051808215151515815260200191505060405180910390f35b341561082b57600080fd5b6108336118b5565b6040518082815260200191505060405180910390f35b341561085457600080fd5b61085c6118bb565b6040518082815260200191505060405180910390f35b341561087d57600080fd5b6108856118c1565b6040518082815260200191505060405180910390f35b34156108a657600080fd5b6108d2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118c7565b005b34156108df57600080fd5b6108e7611a1c565b6040518082815260200191505060405180910390f35b341561090857600080fd5b610910611a22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095d57600080fd5b610965611a48565b005b600080828401905083811015151561097b57fe5b8091505092915050565b600080828402905060008414806109a657508284828115156109a357fe5b04145b15156109ae57fe5b8091505092915050565b6000806000806010541180156109d05750600a544210155b15610f2d5760016010541480156109f45750600e60019054906101000a900460ff16155b15156109ff57600080fd5b60015460045460035401101515610e67576003600454811515610a1e57fe5b049250600e60009054906101000a900460ff161515610a4a5760038054811515610a4457fe5b04830192505b610190610b096043600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610ae057600080fd5b6102c65a03f11515610af157600080fd5b5050506040518051905061098590919063ffffffff16565b811515610b1257fe5b049150610190610bd46021600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610bab57600080fd5b6102c65a03f11515610bbc57600080fd5b5050506040518051905061098590919063ffffffff16565b811515610bdd57fe5b049050610be983611ca7565b6001600e60006101000a81548160ff021916908315150217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610cf357600080fd5b6102c65a03f11515610d0457600080fd5b5050506040518051905050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610dfe57600080fd5b6102c65a03f11515610e0f57600080fd5b50505060405180519050506002601081905550426012819055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b600454600354016040518082815260200191505060405180910390a15b6001600e60016101000a81548160ff021916908315150217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d64bcb46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610f1057600080fd5b6102c65a03f11515610f2157600080fd5b50505060405180519050505b505050565b60095481565b60035481565b600a5481565b60045481565b600060026010541480610f5f57506003601054145b80610f6c57506004601054145b80156110545750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561103857600080fd5b6102c65a03f1151561104957600080fd5b505050604051805190505b151561105f57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b03c4b333360006040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561112857600080fd5b6102c65a03f1151561113957600080fd5b505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561120157600080fd5b6102c65a03f1151561121257600080fd5b50505060405180519050905061123381601154611dbe90919063ffffffff16565b60118190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112ae57506006546112ac60055442611dbe90919063ffffffff16565b115b80156112bc57506000601054145b15156112c757600080fd5b6001601081905550426009819055506112ff6112f060075460085461096790919063ffffffff16565b4261096790919063ffffffff16565b600a8190555069021e19e0c9bab2400000611326600560035461098590919063ffffffff16565b111561134d57611342600560035461098590919063ffffffff16565b60028190555061135f565b69021e19e0c9bab24000006002819055505b6001546003541015156113da576003805481151561137957fe5b04905061138581611ca7565b6001600e60006101000a81548160ff0219169083151502179055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b6003546040518082815260200191505060405180910390a15b50565b600d6020528060005260406000206000915090505481565b600e60009054906101000a900460ff1681565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002601054148061144857506003601054145b80156115315750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a46d3b5336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561151457600080fd5b6102c65a03f1151561152557600080fd5b50505060405180519050155b151561153c57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b03c4b333360016040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561160557600080fd5b6102c65a03f1151561161657600080fd5b505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156116de57600080fd5b6102c65a03f115156116ef57600080fd5b5050506040518051905090506117108160115461096790919063ffffffff16565b60118190555050565b600b5481565b6000600e60009054906101000a900460ff16801561174c57506002601054148061174b57506003601054145b5b801561176d575060135461176b60125442611dbe90919063ffffffff16565b115b151561177857600080fd5b426012819055506002600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561180f57600080fd5b6102c65a03f1151561182057600080fd5b5050506040518051905081151561183357fe5b04601154111561185d576000600e60006101000a81548160ff021916908315150217905550611899565b6003805481151561186a57fe5b04600360045481151561187957fe5b0401905061188681611ca7565b6010600081548092919060010191905055505b50565b60105481565b600e60019054906101000a900460ff1681565b60125481565b60115481565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561192257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561195e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60019054906101000a900460ff168015611a735750600e60009054906101000a900460ff16155b1515611a7e57600080fd5b60016010541415611ad057600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b9d565b60026010541415611b41576003611b306002600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098590919063ffffffff16565b811515611b3957fe5b049050611b9c565b60036010541415611b9b576003600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811515611b9757fe5b0490505b5b5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000811115611ca4573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c2b57600080fd5b7fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633826000604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390a15b50565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064611cf960438561098590919063ffffffff16565b811515611d0257fe5b049081150290604051600060405180830381858888f193505050501515611d2857600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d966064611d7d60438661098590919063ffffffff16565b811515611d8657fe5b0484611dbe90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501515611dbb57600080fd5b50565b6000828211151515611dcc57fe5b8183039050929150505600a165627a7a72305820bb6ee12ece21c94ddca86d164787023605dbe59fc7933affe410c70d98bd03730029
Swarm Source
bzzr://17240107f6471eb4dac80a9a769776a1bb09b912639fb226ab00cabb15a8deac
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,984.51 | 0.4 | $1,193.8 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.