ETH Price: $2,000.06 (-0.32%)

Contract

0xa2F44D258b1714463099205EEEdbeE2337b120B5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer45025392017-11-06 17:34:532698 days ago1509989693IN
0xa2F44D25...337b120B5
0 ETH0.0004816521
Transfer42155622017-08-29 7:24:412767 days ago1503991481IN
0xa2F44D25...337b120B5
1 ETH0.004221
Transfer42155072017-08-29 7:05:342767 days ago1503990334IN
0xa2F44D25...337b120B5
1 ETH0.004221
Finish Voting41656932017-08-16 16:34:152780 days ago1502901255IN
0xa2F44D25...337b120B5
0 ETH0.0013017630
Vote41042902017-08-01 15:13:412795 days ago1501600421IN
0xa2F44D25...337b120B5
0 ETH0.0017228420
Start Voting41042582017-08-01 15:03:352795 days ago1501599815IN
0xa2F44D25...337b120B5
0 ETH0.0014923220
Set Migration Ag...41041982017-08-01 14:43:192795 days ago1501598599IN
0xa2F44D25...337b120B5
0 ETH0.000993520
Transfer41022982017-08-01 3:41:512795 days ago1501558911IN
0xa2F44D25...337b120B5
0.043 ETH0.000726
Transfer40987002017-07-31 7:52:442796 days ago1501487564IN
0xa2F44D25...337b120B5
0.478 ETH0.0025200221
Transfer40914592017-07-29 18:57:392797 days ago1501354659IN
0xa2F44D25...337b120B5
1 ETH0.0025200221
Transfer40886582017-07-29 4:27:562798 days ago1501302476IN
0xa2F44D25...337b120B5
1 ETH0.0072000660
Transfer40854382017-07-28 11:56:112799 days ago1501242971IN
0xa2F44D25...337b120B5
1 ETH0.0025200221
Transfer40844482017-07-28 6:49:032799 days ago1501224543IN
0xa2F44D25...337b120B5
0.05 ETH0.0048000440
Transfer40812662017-07-27 14:23:042800 days ago1501165384IN
0xa2F44D25...337b120B5
0.5012456 ETH0.0025200221
Transfer40727862017-07-25 18:33:112801 days ago1501007591IN
0xa2F44D25...337b120B5
0.114 ETH0.0025200221
Transfer40727502017-07-25 18:21:322801 days ago1501006892IN
0xa2F44D25...337b120B5
0.115 ETH0.004242
Change Owner40712492017-07-25 10:50:592802 days ago1500979859IN
0xa2F44D25...337b120B5
0.001 ETH0.001860
Transfer40710082017-07-25 9:27:382802 days ago1500974858IN
0xa2F44D25...337b120B5
0.23 ETH0.0025200221
Transfer40660662017-07-24 7:54:472803 days ago1500882887IN
0xa2F44D25...337b120B5
0.23 ETH0.002525
Transfer40660322017-07-24 7:42:432803 days ago1500882163IN
0xa2F44D25...337b120B5
0.23 ETH0.002121
Transfer40566092017-07-22 7:12:142805 days ago1500707534IN
0xa2F44D25...337b120B5
0.241 ETH0.002121
Transfer40565732017-07-22 7:03:172805 days ago1500706997IN
0xa2F44D25...337b120B5
0.24332882 ETH0.00110
Transfer40549992017-07-21 22:27:392805 days ago1500676059IN
0xa2F44D25...337b120B5
1.15 ETH0.0025200221
Transfer40549642017-07-21 22:16:272805 days ago1500675387IN
0xa2F44D25...337b120B5
0.19 ETH0.0014721
Transfer40546802017-07-21 20:37:232805 days ago1500669443IN
0xa2F44D25...337b120B5
1.11 ETH0.0025200221
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer41656932017-08-16 16:34:152780 days ago1502901255
0xa2F44D25...337b120B5
54.1862456 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proof

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-07-15
*/

/*
This file is part of the PROOF Contract.

The PROOF Contract is free software: you can redistribute it and/or
modify it under the terms of the GNU lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

The PROOF Contract is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU lesser General Public License for more details.

You should have received a copy of the GNU lesser General Public License
along with the PROOF Contract. If not, see <http://www.gnu.org/licenses/>.
*/

pragma solidity ^0.4.0;

contract owned {

    address public owner;

    function owned() payable {
        owner = msg.sender;
    }
    
    modifier onlyOwner {
        require(owner == msg.sender);
        _;
    }

    function changeOwner(address _owner) onlyOwner public {
        require(_owner != 0);
        owner = _owner;
    }
}

contract Crowdsale is owned {
    
    uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;

    uint    public etherPrice;
    address public crowdsaleOwner;
    uint    public totalLimitUSD;
    uint    public minimalSuccessUSD;
    uint    public collectedUSD;

    enum State { Disabled, PreICO, CompletePreICO, Crowdsale, Enabled, Migration }
    event NewState(State state);
    State   public state = State.Disabled;
    uint    public crowdsaleStartTime;
    uint    public crowdsaleFinishTime;

    modifier enabledState {
        require(state == State.Enabled);
        _;
    }

    modifier enabledOrMigrationState {
        require(state == State.Enabled || state == State.Migration);
        _;
    }

    struct Investor {
        uint256 amountTokens;
        uint    amountWei;
    }
    mapping (address => Investor) public investors;
    mapping (uint => address)     public investorsIter;
    uint                          public numberOfInvestors;
    
    function () payable {
        require(state == State.PreICO || state == State.Crowdsale);
        uint256 tokensPerUSD = 0;
        if (state == State.PreICO) {
            tokensPerUSD = 125;
        } else if (state == State.Crowdsale) {
            if (now < crowdsaleStartTime + 1 days) {
                tokensPerUSD = 115;
            } else if (now < crowdsaleStartTime + 1 weeks) {
                tokensPerUSD = 110;
            } else {
                tokensPerUSD = 100;
            }
        }
        if (tokensPerUSD > 0) {
            uint valueWei = msg.value;
            uint valueUSD = valueWei * etherPrice / 1000000000000000000;
            if (collectedUSD + valueUSD > totalLimitUSD) { // don't need so much ether
                valueUSD = totalLimitUSD - collectedUSD;
                valueWei = valueUSD * 1000000000000000000 / etherPrice;
                msg.sender.transfer(msg.value - valueWei);
                collectedUSD = totalLimitUSD; // to be sure!
            } else {
                collectedUSD += valueUSD;
            }
            uint256 tokens = tokensPerUSD * valueUSD;
            require(balanceOf[msg.sender] + tokens > balanceOf[msg.sender]); // overflow
            require(tokens > 0);
            
            Investor storage inv = investors[msg.sender];
            if (inv.amountWei == 0) { // new investor
                investorsIter[numberOfInvestors++] = msg.sender;
            }
            inv.amountTokens += tokens;
            inv.amountWei += valueWei;
            balanceOf[msg.sender] += tokens;
            totalSupply += tokens;
        }
    }
    
    function startTokensSale(address _crowdsaleOwner, uint _etherPrice) public onlyOwner {
        require(state == State.Disabled || state == State.CompletePreICO);
        crowdsaleStartTime = now;
        crowdsaleOwner = _crowdsaleOwner;
        etherPrice = _etherPrice;
        delete numberOfInvestors;
        delete collectedUSD;
        if (state == State.Disabled) {
            crowdsaleFinishTime = now + 14 days;
            state = State.PreICO;
            totalLimitUSD = 300000;
            minimalSuccessUSD = 300000;
        } else {
            crowdsaleFinishTime = now + 30 days;
            state = State.Crowdsale;
            totalLimitUSD = 5200000;
            minimalSuccessUSD = 3600000;
        }
        NewState(state);
    }
    
    function timeToFinishTokensSale() public constant returns(uint t) {
        require(state == State.PreICO || state == State.Crowdsale);
        if (now > crowdsaleFinishTime) {
            t = 0;
        } else {
            t = crowdsaleFinishTime - now;
        }
    }
    
    function finishTokensSale(uint _investorsToProcess) public {
        require(state == State.PreICO || state == State.Crowdsale);
        require(now >= crowdsaleFinishTime || collectedUSD == totalLimitUSD);
        if (collectedUSD < minimalSuccessUSD) {
            // Investors can get their ether calling withdrawBack() function
            while (_investorsToProcess > 0 && numberOfInvestors > 0) {
                address addr = investorsIter[--numberOfInvestors];
                Investor memory inv = investors[addr];
                balanceOf[addr] -= inv.amountTokens;
                totalSupply -= inv.amountTokens;
                --_investorsToProcess;
                delete investorsIter[numberOfInvestors];
            }
            if (numberOfInvestors > 0) {
                return;
            }
            if (state == State.PreICO) {
                state = State.Disabled;
            } else {
                state = State.CompletePreICO;
            }
        } else {
            while (_investorsToProcess > 0 && numberOfInvestors > 0) {
                --numberOfInvestors;
                --_investorsToProcess;
                delete investors[investorsIter[numberOfInvestors]];
                delete investorsIter[numberOfInvestors];
            }
            if (numberOfInvestors > 0) {
                return;
            }
            if (state == State.PreICO) {
                if (!crowdsaleOwner.send(this.balance)) throw;
                state = State.CompletePreICO;
            } else {
                if (!crowdsaleOwner.send(1500000 * 1000000000000000000 / etherPrice)) throw;
                // Create additional tokens for owner (28% of complete totalSupply)
                balanceOf[owner] = totalSupply * 28 / 72;
                totalSupply += totalSupply * 28 / 72;
                state = State.Enabled;
            }
        }
        NewState(state);
    }
    
    // This function must be called by token holder in case of crowdsale failed
    function withdrawBack() public {
        require(state == State.Disabled || state == State.CompletePreICO);
        uint value = investors[msg.sender].amountWei;
        if (value > 0) {
            delete investors[msg.sender];
            msg.sender.transfer(value);
        }
    }
}

contract Token is Crowdsale {
    
    string  public standard    = 'Token 0.1';
    string  public name        = 'PROOF';
    string  public symbol      = "PF";
    uint8   public decimals    = 0;

    modifier onlyTokenHolders {
        require(balanceOf[msg.sender] != 0);
        _;
    }

    mapping (address => mapping (address => uint256)) public allowed;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function Token() payable Crowdsale() {}

    function transfer(address _to, uint256 _value) public enabledState {
        require(balanceOf[msg.sender] >= _value);
        require(balanceOf[_to] + _value >= balanceOf[_to]); // overflow
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        Transfer(msg.sender, _to, _value);
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public enabledState {
        require(balanceOf[_from] >= _value);
        require(balanceOf[_to] + _value >= balanceOf[_to]); // overflow
        require(allowed[_from][msg.sender] >= _value);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        allowed[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public enabledState {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
    }

    function allowance(address _owner, address _spender) public constant enabledState
        returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
}

contract MigrationAgent {
    function migrateFrom(address _from, uint256 _value);
}

contract TokenMigration is Token {
    
    address public migrationAgent;
    uint256 public totalMigrated;

    event Migrate(address indexed from, address indexed to, uint256 value);

    function TokenMigration() payable Token() {}

    // Migrate _value of tokens to the new token contract
    function migrate(uint256 _value) external {
        require(state == State.Migration);
        require(migrationAgent != 0);
        require(_value != 0);
        require(_value <= balanceOf[msg.sender]);
        balanceOf[msg.sender] -= _value;
        totalSupply -= _value;
        totalMigrated += _value;
        MigrationAgent(migrationAgent).migrateFrom(msg.sender, _value);
        Migrate(msg.sender, migrationAgent, _value);
    }

    function setMigrationAgent(address _agent) external onlyOwner {
        require(migrationAgent == 0);
        migrationAgent = _agent;
        state = State.Migration;
    }
}

contract ProofTeamVote is TokenMigration {

    function ProofTeamVote() payable TokenMigration() {}

    event VotingStarted(uint weiReqFund);
    event Voted(address indexed voter, bool inSupport);
    event VotingFinished(bool inSupport);

    struct Vote {
        bool inSupport;
        bool voted;
    }

    uint public weiReqFund;
    uint public votingDeadline;
    uint public numberOfVotes;
    uint public yea;
    uint public nay;
    mapping (address => Vote) public votes;
    mapping (uint => address) public votesIter;

    function startVoting(uint _weiReqFund) public enabledOrMigrationState onlyOwner {
        require(weiReqFund == 0 && _weiReqFund > 0 && _weiReqFund <= this.balance);
        weiReqFund = _weiReqFund;
        votingDeadline = now + 7 days;
        delete yea;
        delete nay;
        VotingStarted(_weiReqFund);
    }
    
    function votingInfo() public constant enabledOrMigrationState
        returns(uint _weiReqFund, uint _timeToFinish) {
        _weiReqFund = weiReqFund;
        if (votingDeadline <= now) {
            _timeToFinish = 0;
        } else {
            _timeToFinish = votingDeadline - now;
        }
    }

    function vote(bool _inSupport) public onlyTokenHolders enabledOrMigrationState
        returns (uint voteId) {
        require(votes[msg.sender].voted != true);
        require(votingDeadline > now);
        voteId = numberOfVotes++;
        votesIter[voteId] = msg.sender;
        votes[msg.sender] = Vote({inSupport: _inSupport, voted: true});
        Voted(msg.sender, _inSupport);
        return voteId;
    }

    function finishVoting(uint _votesToProcess) public enabledOrMigrationState
        returns (bool _inSupport) {
        require(now >= votingDeadline);

        while (_votesToProcess > 0 && numberOfVotes > 0) {
            address voter = votesIter[--numberOfVotes];
            Vote memory v = votes[voter];
            uint voteWeight = balanceOf[voter];
            if (v.inSupport) {
                yea += voteWeight;
            } else {
                nay += voteWeight;
            }
            delete votes[voter];
            delete votesIter[numberOfVotes];
            --_votesToProcess;
        }
        if (numberOfVotes > 0) {
            _inSupport = false;
            return;
        }

        _inSupport = (yea > nay);
        uint weiForSend = weiReqFund;
        delete weiReqFund;
        delete votingDeadline;
        delete numberOfVotes;

        if (_inSupport) {
            if (migrationAgent == 0) {
                if (!owner.send(weiForSend)) throw;
            } else {
                if (!migrationAgent.send(this.balance)) throw;
            }
        }

        VotingFinished(_inSupport);
    }
}

contract ProofPublicVote is ProofTeamVote {

    function ProofPublicVote() payable ProofTeamVote() {}

    event Deployed(address indexed projectOwner, uint proofReqFund, string urlInfo);
    event Voted(address indexed projectOwner, address indexed voter, bool inSupport);
    event VotingFinished(address indexed projectOwner, bool inSupport);

    struct Project {
        uint   proofReqFund;
        string urlInfo;
        uint   votingDeadline;
        uint   numberOfVotes;
        uint   yea;
        uint   nay;
        mapping (address => Vote) votes;
        mapping (uint => address) votesIter;
    }
    mapping (address => Project) public projects;

    function deployProject(uint _proofReqFund, string _urlInfo) public
        onlyTokenHolders enabledOrMigrationState {
        require(_proofReqFund > 0 && _proofReqFund <= balanceOf[this]);
        require(_proofReqFund <= balanceOf[msg.sender] * 1000);
        require(projects[msg.sender].proofReqFund == 0);
        projects[msg.sender].proofReqFund = _proofReqFund;
        projects[msg.sender].urlInfo = _urlInfo;
        projects[msg.sender].votingDeadline = now + 7 days;
        Deployed(msg.sender, _proofReqFund, _urlInfo);
    }
    
    function projectInfo(address _projectOwner) enabledOrMigrationState constant public 
        returns(uint _proofReqFund, string _urlInfo, uint _timeToFinish) {
        _proofReqFund = projects[_projectOwner].proofReqFund;
        _urlInfo = projects[_projectOwner].urlInfo;
        if (projects[_projectOwner].votingDeadline <= now) {
            _timeToFinish = 0;
        } else {
            _timeToFinish = projects[_projectOwner].votingDeadline - now;
        }
    }

    function vote(address _projectOwner, bool _inSupport) public
        onlyTokenHolders enabledOrMigrationState returns (uint voteId) {
        Project storage p = projects[_projectOwner];
        require(p.proofReqFund > 0);
        require(p.votes[msg.sender].voted != true);
        require(p.votingDeadline > now);
        voteId = p.numberOfVotes++;
        p.votesIter[voteId] = msg.sender;
        p.votes[msg.sender] = Vote({inSupport: _inSupport, voted: true});
        Voted(_projectOwner, msg.sender, _inSupport); 
        return voteId;
    }

    function finishVoting(address _projectOwner, uint _votesToProcess) public
        enabledOrMigrationState returns (bool _inSupport) {
        Project storage p = projects[_projectOwner];
        require(p.proofReqFund > 0);
        require(now >= p.votingDeadline && p.proofReqFund <= balanceOf[this]);

        while (_votesToProcess > 0 && p.numberOfVotes > 0) {
            address voter = p.votesIter[--p.numberOfVotes];
            Vote memory v = p.votes[voter];
            uint voteWeight = balanceOf[voter];
            if (v.inSupport) {
                p.yea += voteWeight;
            } else {
                p.nay += voteWeight;
            }
            delete p.votesIter[p.numberOfVotes];
            delete p.votes[voter];
            --_votesToProcess;
        }
        if (p.numberOfVotes > 0) {
            _inSupport = false;
            return;
        }

        _inSupport = (p.yea > p.nay);

        uint proofReqFund = p.proofReqFund;
        delete projects[_projectOwner];

        if (_inSupport) {
            require(balanceOf[_projectOwner] + proofReqFund >= balanceOf[_projectOwner]); // overflow
            balanceOf[this] -= proofReqFund;
            balanceOf[_projectOwner] += proofReqFund;
            Transfer(this, _projectOwner, proofReqFund);
        }

        VotingFinished(_projectOwner, _inSupport);
    }
}

contract Proof is ProofPublicVote {

    struct Swype {
        uint16  swype;
        uint    timestampSwype;
    }
    
    struct Video {
        uint16  swype;
        uint    timestampSwype;
        uint    timestampHash;
        address owner;
    }

    mapping (address => Swype) public swypes;
    mapping (bytes32 => Video) public videos;

    uint priceInTokens;
    uint teamFee;

    function Proof() payable ProofPublicVote() {}

    function setPrice(uint _priceInTokens) public onlyOwner {
        require(_priceInTokens >= 2);
        teamFee = _priceInTokens / 10;
        if (teamFee == 0) {
            teamFee = 1;
        }
        priceInTokens = _priceInTokens - teamFee;
    }

    function swypeCode() public enabledState returns (uint16 _swype) {
        bytes32 blockHash = block.blockhash(block.number - 1);
        bytes32 shaTemp = sha3(msg.sender, blockHash);
        _swype = uint16(uint256(shaTemp) % 65536);
        swypes[msg.sender] = Swype({swype: _swype, timestampSwype: now});
    }
    
    function setHash(uint16 _swype, bytes32 _hash) public enabledState {
        require(swypes[msg.sender].timestampSwype != 0);
        require(swypes[msg.sender].swype == _swype);
        transfer(owner, teamFee);
        transfer(this, priceInTokens);
        videos[_hash] = Video({swype: _swype, timestampSwype:swypes[msg.sender].timestampSwype, 
            timestampHash: now, owner: msg.sender});
        delete swypes[msg.sender];
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"votingDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investorsIter","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawBack","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfVotes","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minimalSuccessUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"yea","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"votingInfo","outputs":[{"name":"_weiReqFund","type":"uint256"},{"name":"_timeToFinish","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfInvestors","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"collectedUSD","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":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiReqFund","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_weiReqFund","type":"uint256"}],"name":"startVoting","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_projectOwner","type":"address"},{"name":"_votesToProcess","type":"uint256"}],"name":"finishVoting","outputs":[{"name":"_inSupport","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"migrate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"swypeCode","outputs":[{"name":"_swype","type":"uint16"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_investorsToProcess","type":"uint256"}],"name":"finishTokensSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_inSupport","type":"bool"}],"name":"vote","outputs":[{"name":"voteId","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"swypes","outputs":[{"name":"swype","type":"uint16"},{"name":"timestampSwype","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investors","outputs":[{"name":"amountTokens","type":"uint256"},{"name":"amountWei","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_agent","type":"address"}],"name":"setMigrationAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"timeToFinishTokensSale","outputs":[{"name":"t","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalLimitUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"migrationAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"projects","outputs":[{"name":"proofReqFund","type":"uint256"},{"name":"urlInfo","type":"string"},{"name":"votingDeadline","type":"uint256"},{"name":"numberOfVotes","type":"uint256"},{"name":"yea","type":"uint256"},{"name":"nay","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_priceInTokens","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalMigrated","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleFinishTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etherPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"videos","outputs":[{"name":"swype","type":"uint16"},{"name":"timestampSwype","type":"uint256"},{"name":"timestampHash","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_projectOwner","type":"address"}],"name":"projectInfo","outputs":[{"name":"_proofReqFund","type":"uint256"},{"name":"_urlInfo","type":"string"},{"name":"_timeToFinish","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_votesToProcess","type":"uint256"}],"name":"finishVoting","outputs":[{"name":"_inSupport","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_proofReqFund","type":"uint256"},{"name":"_urlInfo","type":"string"}],"name":"deployProject","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_crowdsaleOwner","type":"address"},{"name":"_etherPrice","type":"uint256"}],"name":"startTokensSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_projectOwner","type":"address"},{"name":"_inSupport","type":"bool"}],"name":"vote","outputs":[{"name":"voteId","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_swype","type":"uint16"},{"name":"_hash","type":"bytes32"}],"name":"setHash","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"votes","outputs":[{"name":"inSupport","type":"bool"},{"name":"voted","type":"bool"}],"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":true,"inputs":[],"name":"crowdsaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"nay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"votesIter","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"projectOwner","type":"address"},{"indexed":false,"name":"proofReqFund","type":"uint256"},{"indexed":false,"name":"urlInfo","type":"string"}],"name":"Deployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"projectOwner","type":"address"},{"indexed":true,"name":"voter","type":"address"},{"indexed":false,"name":"inSupport","type":"bool"}],"name":"Voted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"projectOwner","type":"address"},{"indexed":false,"name":"inSupport","type":"bool"}],"name":"VotingFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"weiReqFund","type":"uint256"}],"name":"VotingStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Migrate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"state","type":"uint8"}],"name":"NewState","type":"event"}]

6060604052600880546000919060ff19166001835b02179055506040805180820190915260098082527f546f6b656e20302e31000000000000000000000000000000000000000000000060209092019182526200005f91600e9162000125565b506040805180820190915260058082527f50524f4f460000000000000000000000000000000000000000000000000000006020909201918252620000a691600f9162000125565b506040805180820190915260028082527f50460000000000000000000000000000000000000000000000000000000000006020909201918252620000ed9160109162000125565b506011805460ff191690555b5b5b5b5b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b5b5b5b620001cf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016857805160ff191683800117855562000198565b8280016001018555821562000198579182015b82811115620001985782518255916020019190600101906200017b565b5b50620001a7929150620001ab565b5090565b620001cc91905b80821115620001a75760008155600101620001b2565b5090565b90565b612d5a80620001df6000396000f3006060604052361561027a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663036ee85081146104a0578063052deec5146104c257806306fdde03146104f1578063095ea7b3146105815780630a692347146105a25780630e7d490d146105b4578063105a6356146105d657806314cbb90d146105f857806318160ddd1461061a57806319e7998c1461063c5780631af2c9fd146106655780631ff6c2411461068757806323b872dd146106a95780632fea6915146106d0578063313ce567146106f25780633d2f5bda146107185780633dfca2ad1461072d578063454b06081461076057806346975b9a1461077557806349866ec01461079c5780634b9f5c98146107b15780635a3b7e42146107d85780635b8e48df146108685780635c658165146108a25780636f7bc9be146108d657806370a082311461090b57806375e2ff65146109395780637a26924f146109575780637b25aeca146109795780638328dbcd1461099b578063840e78fd146109c75780638556558514610a925780638da5cb5b14610abe57806391b7f5ed14610aea57806395a0f5eb14610aff57806395d89b4114610b215780639789f9da14610bb15780639e30795514610bd3578063a2d6d38214610bf5578063a3dd2b3e14610c3c578063a6f9dae114610ceb578063a9059cbb14610d09578063abe7c08e14610d2a578063b3aae83014610d51578063b77d487614610daa578063bd041c4d14610dcb578063c19d93fb14610dfe578063c364a25d14610e32578063d8bff5a514610e4e578063dd62ed3e14610e85578063e2fc421d14610eb9578063ea2fe1a214610edb578063f7efd40814610efd575b61049e5b60008080808060015b60085460ff16600581111561029857fe5b14806102b5575060035b60085460ff1660058111156102b357fe5b145b15156102c15760006000fd5b6000945060015b60085460ff1660058111156102d957fe5b14156102e857607d9450610337565b60035b60085460ff1660058111156102fc57fe5b141561033757600954620151800142101561031a5760739450610337565b60095462093a800142101561033257606e9450610337565b606494505b5b5b5b600085111561049657600354349450670de0b6b3a76400009085025b049250600554836007540111156103c65760075460055403925060035483670de0b6b3a76400000281151561038757fe5b6040519190049450600160a060020a033316903486900380156108fc02916000818181858888f1935050505015156103bb57fe5b6005546007556103cf565b60078054840190555b600160a060020a0333166000908152600260205260409020548584029250808301116103fb5760006000fd5b600082116104095760006000fd5b50600160a060020a0333166000908152600b602052604090206001810154151561046057600d8054600181019091556000908152600c602052604090208054600160a060020a03191633600160a060020a03161790555b8054820181556001808201805486019055600160a060020a03331660009081526002602052604090208054840190558054830190555b5b5050505050565b005b34156104a857fe5b6104b0610f2c565b60408051918252519081900360200190f35b34156104ca57fe5b6104d5600435610f32565b60408051600160a060020a039092168252519081900360200190f35b34156104f957fe5b610501610f4d565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561058957fe5b61049e600160a060020a0360043516602435610fdb565b005b34156105aa57fe5b61049e61105d565b005b34156105bc57fe5b6104b0611106565b60408051918252519081900360200190f35b34156105de57fe5b6104b061110c565b60408051918252519081900360200190f35b341561060057fe5b6104b0611112565b60408051918252519081900360200190f35b341561062257fe5b6104b0611118565b60408051918252519081900360200190f35b341561064457fe5b61064c61111e565b6040805192835260208301919091528051918290030190f35b341561066d57fe5b6104b0611184565b60408051918252519081900360200190f35b341561068f57fe5b6104b061118a565b60408051918252519081900360200190f35b34156106b157fe5b61049e600160a060020a0360043581169060243516604435611190565b005b34156106d857fe5b6104b06112bb565b60408051918252519081900360200190f35b34156106fa57fe5b6107026112c1565b6040805160ff9092168252519081900360200190f35b341561072057fe5b61049e6004356112ca565b005b341561073557fe5b61074c600160a060020a03600435166024356113a6565b604080519115158252519081900360200190f35b341561076857fe5b61049e60043561169e565b005b341561077d57fe5b6107856117f1565b6040805161ffff9092168252519081900360200190f35b34156107a457fe5b61049e6004356118ab565b005b34156107b957fe5b6104b06004351515611c05565b60408051918252519081900360200190f35b34156107e057fe5b610501611d62565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561087057fe5b610884600160a060020a0360043516611df0565b6040805161ffff909316835260208301919091528051918290030190f35b34156108aa57fe5b6104b0600160a060020a0360043581169060243516611e10565b60408051918252519081900360200190f35b34156108de57fe5b61064c600160a060020a0360043516611e2d565b6040805192835260208301919091528051918290030190f35b341561091357fe5b6104b0600160a060020a0360043516611e46565b60408051918252519081900360200190f35b341561094157fe5b61049e600160a060020a0360043516611e58565b005b341561095f57fe5b6104b0611ec0565b60408051918252519081900360200190f35b341561098157fe5b6104b0611f1d565b60408051918252519081900360200190f35b34156109a357fe5b6104d5611f23565b60408051600160a060020a039092168252519081900360200190f35b34156109cf57fe5b6109e3600160a060020a0360043516611f32565b60408051878152908101859052606081018490526080810183905260a0810182905260c0602082018181528754600260001961010060018416150201909116049183018290529060e083019088908015610a7e5780601f10610a5357610100808354040283529160200191610a7e565b820191906000526020600020905b815481529060010190602001808311610a6157829003601f168201915b505097505050505050505060405180910390f35b3415610a9a57fe5b6104d5611f5f565b60408051600160a060020a039092168252519081900360200190f35b3415610ac657fe5b6104d5611f6e565b60408051600160a060020a039092168252519081900360200190f35b3415610af257fe5b61049e600435611f7d565b005b3415610b0757fe5b6104b0611fcb565b60408051918252519081900360200190f35b3415610b2957fe5b610501611fd1565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bb957fe5b6104b061205f565b60408051918252519081900360200190f35b3415610bdb57fe5b6104b0612065565b60408051918252519081900360200190f35b3415610bfd57fe5b610c0860043561206b565b6040805161ffff9095168552602085019390935283830191909152600160a060020a03166060830152519081900360800190f35b3415610c4457fe5b610c58600160a060020a03600435166120a0565b6040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360008314610caf575b805182526020831115610caf57601f199092019160209182019101610c8f565b505050905090810190601f168015610cdb5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3415610cf357fe5b61049e600160a060020a03600435166121ed565b005b3415610d1157fe5b61049e600160a060020a036004351660243561223f565b005b3415610d3257fe5b61074c60043561231a565b604080519115158252519081900360200190f35b3415610d5957fe5b60408051602060046024803582810135601f810185900485028601850190965285855261049e958335959394604494939290920191819084018382808284375094965061255595505050505050565b005b3415610db257fe5b61049e600160a060020a0360043516602435612744565b005b3415610dd357fe5b6104b0600160a060020a03600435166024351515612892565b60408051918252519081900360200190f35b3415610e0657fe5b610e0e612a2a565b60405180826005811115610e1e57fe5b60ff16815260200191505060405180910390f35b3415610e3a57fe5b61049e61ffff60043516602435612a33565b005b3415610e5657fe5b610e6a600160a060020a0360043516612b71565b60408051921515835290151560208301528051918290030190f35b3415610e8d57fe5b6104b0600160a060020a0360043581169060243516612b8f565b60408051918252519081900360200190f35b3415610ec157fe5b6104b0612bdf565b60408051918252519081900360200190f35b3415610ee357fe5b6104b0612be5565b60408051918252519081900360200190f35b3415610f0557fe5b6104d5600435612beb565b60408051600160a060020a039092168252519081900360200190f35b60165481565b600c60205260009081526040902054600160a060020a031681565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b60045b60085460ff166005811115610fef57fe5b14610ffa5760006000fd5b600160a060020a03338116600081815260126020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5b5050565b6000805b60085460ff16600581111561107257fe5b148061108f575060025b60085460ff16600581111561108d57fe5b145b151561109b5760006000fd5b50600160a060020a0333166000908152600b60205260408120600101549081111561110157600160a060020a0333166000818152600b60205260408082208281556001018290555183156108fc0291849190818181858888f19350505050151561110157fe5b5b5b50565b60175481565b60065481565b60185481565b60015481565b60008060045b60085460ff16600581111561113557fe5b1480611152575060055b60085460ff16600581111561115057fe5b145b151561115e5760006000fd5b6015549150426016541115156111765750600061117e565b426016540390505b5b5b9091565b600d5481565b60075481565b60045b60085460ff1660058111156111a457fe5b146111af5760006000fd5b600160a060020a038316600090815260026020526040902054819010156111d65760006000fd5b600160a060020a03821660009081526002602052604090205481810110156111fe5760006000fd5b600160a060020a0380841660009081526012602090815260408083203390941683529290522054819010156112335760006000fd5b600160a060020a03808416600081815260026020908152604080832080548790039055868516808452818420805488019055848452601283528184203390961684529482529182902080548690039055815185815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35b5b505050565b60155481565b60115460ff1681565b60045b60085460ff1660058111156112de57fe5b14806112fb575060055b60085460ff1660058111156112f957fe5b145b15156113075760006000fd5b60005433600160a060020a039081169116146113235760006000fd5b6015541580156113335750600081115b8015611349575030600160a060020a0316318111155b15156113555760006000fd5b601581905562093a804201601655600060188190556019556040805182815290517fcf33babc496bb6dc2942b39cb7b75766bbbadf7da50d176ff8c513e9911402399181900360200190a15b5b5b50565b6000600060006113b4612c06565b60008060045b60085460ff1660058111156113cb57fe5b14806113e8575060055b60085460ff1660058111156113e657fe5b145b15156113f45760006000fd5b600160a060020a0388166000908152601c6020526040812080549096501161141c5760006000fd5b846002015442101580156114495750600160a060020a033016600090815260026020526040902054855411155b15156114555760006000fd5b5b60008711801561146a575060008560030154115b156115495760038501805460001901908190556000908152600786016020908152604080832054600160a060020a031680845260068901835281842082518084018452905460ff8082161515835261010090910416151581850152818552600290935292205481519296509094509250156114ee57600485018054830190556114f9565b600585018054830190555b6003850154600090815260078601602090815260408083208054600160a060020a0319169055600160a060020a0387168352600688019091529020805461ffff1916905560001990960195611455565b60008560030154111561155f5760009550611692565b50600584015460048501548554600160a060020a038a166000908152601c60205260408120818155939092119750919061159c6001830182612c1d565b506000600282018190556003820181905560048201819055600590910155851561165057600160a060020a03881660009081526002602052604090205481810110156115e85760006000fd5b600160a060020a03308116600081815260026020908152604080832080548790039055938c16808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35b6040805187151581529051600160a060020a038a16917f6116ec491e93496f9d49c081f6fae5133f9ebac8478b3305431ec45797cc84ee919081900360200190a25b5b505050505092915050565b60055b60085460ff1660058111156116b257fe5b146116bd5760006000fd5b601354600160a060020a031615156116d55760006000fd5b8015156116e25760006000fd5b600160a060020a0333166000908152600260205260409020548111156117085760006000fd5b600160a060020a0333811660008181526002602052604080822080548690039055600180548690039055601480548601905560135481517f7a3130e30000000000000000000000000000000000000000000000000000000081526004810194909452602484018690529051931692637a3130e392604480820193929182900301818387803b151561179557fe5b6102c65a03f115156117a357fe5b5050601354604080518481529051600160a060020a03928316935033909216917f18df02dcc52b9c494f391df09661519c0069bd8540141946280399408205ca1a9181900360200190a35b50565b6000808060045b60085460ff16600581111561180957fe5b146118145760006000fd5b5050604080516c01000000000000000000000000600160a060020a03331602815260001943014060148201819052915190819003603401902062010000815b6040805180820182529290910661ffff818116845242602080860191825233600160a060020a03166000908152601d909152939093209351845461ffff19169116178355905160019092019190915592505b5b505090565b60006118b5612c06565b60015b60085460ff1660058111156118c957fe5b14806118e6575060035b60085460ff1660058111156118e457fe5b145b15156118f25760006000fd5b600a54421015806119065750600554600754145b15156119125760006000fd5b6006546007541015611a1b575b60008311801561193157506000600d54115b156119bc575050600d80546000199081018083556000908152600c6020818152604080842054600160a060020a0316808552600b835281852082518084018452815480825260019283015482870152838852600286528488208054919091039055805182540390915596548552929091529091208054600160a060020a03191690559201919061191f565b6000600d5411156119cc576112b5565b60015b60085460ff1660058111156119e057fe5b1415611a0057600880546000919060ff19166001835b0217905550611a16565b600880546002919060ff19166001835b02179055505b611bb2565b5b600083118015611a2e57506000600d54115b15611a8e57600d80546000199081018083556000908152600c6020818152604080842054600160a060020a03168452600b82528084208481556001018490559454835252919091208054600160a060020a03191690559290920191611a1c565b6000600d541115611a9e576112b5565b60015b60085460ff166005811115611ab257fe5b1415611b0c57600454604051600160a060020a039182169130163180156108fc02916000818181858888f193505050501515611a005760006000fd5b600880546002919060ff1916600183611a10565b0217905550611bb2565b600454600354600160a060020a03909116906108fc906a013da329b6336471800000811515611b3757fe5b604051919004801590920291906000818181858888f193505050501515611b5e5760006000fd5b600154604890601c025b60008054600160a060020a031681526002602052604090209190049055600154604890601c025b600180549290910490910181556008805460049260ff1990911690835b02179055505b5b6008546040517fc9393c620dc0ed7b95591e2354866fb78b5ebff006e01bdd4cbcfb9f6024b4839160ff169080826005811115611bec57fe5b60ff16815260200191505060405180910390a15b505050565b600160a060020a0333166000908152600260205260408120541515611c2a5760006000fd5b60045b60085460ff166005811115611c3e57fe5b1480611c5b575060055b60085460ff166005811115611c5957fe5b145b1515611c675760006000fd5b600160a060020a0333166000908152601a602052604090205460ff61010090910416151560011415611c995760006000fd5b601654429011611ca95760006000fd5b506017805460018082019092556000818152601b602090815260408083208054600160a060020a033316600160a060020a0319909116811790915581518083018352871515808252818501978852828652601a85529483902090518154975115156101000261ff001991151560ff199099169890981716969096179095558051928352519293927f8eb81cb806dbb3d8a2f94981614331a55dfd90e06a42fdc362ca3ca96981d92f9281900390910190a25b5b5b919050565b600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b601d602052600090815260409020805460019091015461ffff9091169082565b601260209081526000928352604080842090915290825290205481565b600b602052600090815260409020805460019091015482565b60026020526000908152604090205481565b60005433600160a060020a03908116911614611e745760006000fd5b601354600160a060020a031615611e8b5760006000fd5b60138054600160a060020a031916600160a060020a038316179055600880546005919060ff19166001835b02179055505b5b50565b600060015b60085460ff166005811115611ed657fe5b1480611ef3575060035b60085460ff166005811115611ef157fe5b145b1515611eff5760006000fd5b600a54421115611f1157506000611f19565b42600a540390505b5b90565b60055481565b601354600160a060020a031681565b601c6020526000908152604090208054600282015460038301546004840154600585015493946001019386565b600454600160a060020a031681565b600054600160a060020a031681565b60005433600160a060020a03908116911614611f995760006000fd5b6002811015611fa85760006000fd5b600a815b0460208190551515611fbe5760016020555b6020548103601f555b5b50565b60145481565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b600a5481565b60035481565b601e60205260009081526040902080546001820154600283015460039093015461ffff909216929091600160a060020a031684565b60006120aa612c7c565b600060045b60085460ff1660058111156120c057fe5b14806120dd575060055b60085460ff1660058111156120db57fe5b145b15156120e95760006000fd5b600160a060020a0384166000908152601c60209081526040918290208054600191820180548551600294821615610100026000190190911693909304601f8101859004850284018501909552848352909650909290918301828280156121905780601f1061216557610100808354040283529160200191612190565b820191906000526020600020905b81548152906001019060200180831161217357829003601f168201915b50505050600160a060020a0386166000908152601c6020526040902060020154919350504290116121c3575060006121e4565b50600160a060020a0383166000908152601c60205260409020600201544290035b5b5b9193909250565b60005433600160a060020a039081169116146122095760006000fd5b600160a060020a038116151561221f5760006000fd5b60008054600160a060020a031916600160a060020a0383161790555b5b50565b60045b60085460ff16600581111561225357fe5b1461225e5760006000fd5b600160a060020a033316600090815260026020526040902054819010156122855760006000fd5b600160a060020a03821660009081526002602052604090205481810110156122ad5760006000fd5b600160a060020a03338116600081815260026020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35b5b5050565b60006000612326612c06565b60008060045b60085460ff16600581111561233d57fe5b148061235a575060055b60085460ff16600581111561235857fe5b145b15156123665760006000fd5b6016544210156123765760006000fd5b5b60008611801561238957506000601754115b15612458576017805460001901908190556000908152601b6020908152604080832054600160a060020a0316808452601a835281842082518084018452905460ff80821615158352610100909104161515818501528185526002909352922054815192965090945092501561240557601880548301905561240e565b60198054830190555b600160a060020a0384166000908152601a60209081526040808320805461ffff191690556017548352601b90915290208054600160a060020a031916905560001990950194612376565b6000601754111561246c576000945061254b565b6019546018541194506015549050601560009055601660009055601760009055841561251357601354600160a060020a031615156124dd5760008054604051600160a060020a039091169183156108fc02918491818181858888f1935050505015156124d85760006000fd5b612513565b601354604051600160a060020a039182169130163180156108fc02916000818181858888f1935050505015156125135760006000fd5b5b5b60408051861515815290517fa645a33a6706739d95d9785acab71f06d2b89c02d601ef8c380e6fe4ee5223b99181900360200190a15b5b50505050919050565b600160a060020a033316600090815260026020526040902054151561257a5760006000fd5b60045b60085460ff16600581111561258e57fe5b14806125ab575060055b60085460ff1660058111156125a957fe5b145b15156125b75760006000fd5b6000821180156125df5750600160a060020a0330166000908152600260205260409020548211155b15156125eb5760006000fd5b600160a060020a0333166000908152600260205260409020546103e8028211156126155760006000fd5b600160a060020a0333166000908152601c6020526040902054156126395760006000fd5b600160a060020a0333166000908152601c60209081526040909120838155825161266b92600190920191840190612c8e565b50600160a060020a0333166000818152601c602090815260409182902062093a804201600290910155815185815280820183815285519382019390935284517ff0bbe877a87290e236ea898bbce0d78d6ac7d54d62e32744b129798a2669e39b93879387939260608401918501908083838215612703575b80518252602083111561270357601f1990920191602091820191016126e3565b505050905090810190601f16801561272f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050565b60005433600160a060020a039081169116146127605760006000fd5b60005b60085460ff16600581111561277457fe5b1480612791575060025b60085460ff16600581111561278f57fe5b145b151561279d5760006000fd5b4260095560048054600160a060020a031916600160a060020a03841617905560038190556000600d81905560078190555b60085460ff1660058111156127df57fe5b141561281357621275004201600a55600880546001919060ff191682805b0217905550620493e06005819055600655612840565b62278d004201600a55600880546003919060ff19166001835b0217905550624f58806005556236ee806006555b6008546040517fc9393c620dc0ed7b95591e2354866fb78b5ebff006e01bdd4cbcfb9f6024b4839160ff16908082600581111561287957fe5b60ff16815260200191505060405180910390a15b5b5050565b600160a060020a033316600090815260026020526040812054819015156128b95760006000fd5b60045b60085460ff1660058111156128cd57fe5b14806128ea575060055b60085460ff1660058111156128e857fe5b145b15156128f65760006000fd5b50600160a060020a0383166000908152601c6020526040812080549091901161291f5760006000fd5b600160a060020a033316600090815260068201602052604090205460ff610100909104161515600114156129535760006000fd5b60028101544290116129655760006000fd5b6003810180546001808201909255600081815260078401602090815260408083208054600160a060020a03338116600160a060020a03199092168217909255825180840184528a151580825281860198895282875260068a0186529584902090518154985115156101000261ff001991151560ff19909a16999099171697909717909655815193845290519396508816927ff01e0648b75d055c003bb115baaa99af91e34a86a5405eb8b96e451bcb1c79f09281900390910190a35b5b5b5092915050565b60085460ff1681565b60045b60085460ff166005811115612a4757fe5b14612a525760006000fd5b600160a060020a0333166000908152601d60205260409020600101541515612a7a5760006000fd5b33600160a060020a03166000908152601d602052604090205461ffff838116911614612aa65760006000fd5b600054602054612abf91600160a060020a03169061223f565b612acb30601f5461223f565b6040805160808101825261ffff8085168252600160a060020a033381166000818152601d602081815287832060018082018054848b01908152428b8d0190815260608c018981528e8952601e87529c88209b518c549b1661ffff199b8c16178c559051928b0192909255905160028a015598516003909801805498909616600160a060020a0319909816979097179094559181529152825490911690915590555b5b5050565b601a6020526000908152604090205460ff8082169161010090041682565b600060045b60085460ff166005811115612ba557fe5b14612bb05760006000fd5b50600160a060020a038083166000908152601260209081526040808320938516835292905220545b5b92915050565b60095481565b60195481565b601b60205260009081526040902054600160a060020a031681565b604080518082019091526000808252602082015290565b50805460018160011615610100020316600290046000825580601f10612c435750611101565b601f0160209004906000526020600020908101906111019190612d0d565b5b50565b604080518082019091526000808252602082015290565b60408051602081019091526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ccf57805160ff1916838001178555612cfc565b82800160010185558215612cfc579182015b82811115612cfc578251825591602001919060010190612ce1565b5b50612d09929150612d0d565b5090565b611f1991905b80821115612d095760008155600101612d13565b5090565b905600a165627a7a723058206ef4e8e523104f4c27fbd1761689f727c734cb9bfd4072eabd2736571a82a3a10029

Deployed Bytecode

0x6060604052361561027a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663036ee85081146104a0578063052deec5146104c257806306fdde03146104f1578063095ea7b3146105815780630a692347146105a25780630e7d490d146105b4578063105a6356146105d657806314cbb90d146105f857806318160ddd1461061a57806319e7998c1461063c5780631af2c9fd146106655780631ff6c2411461068757806323b872dd146106a95780632fea6915146106d0578063313ce567146106f25780633d2f5bda146107185780633dfca2ad1461072d578063454b06081461076057806346975b9a1461077557806349866ec01461079c5780634b9f5c98146107b15780635a3b7e42146107d85780635b8e48df146108685780635c658165146108a25780636f7bc9be146108d657806370a082311461090b57806375e2ff65146109395780637a26924f146109575780637b25aeca146109795780638328dbcd1461099b578063840e78fd146109c75780638556558514610a925780638da5cb5b14610abe57806391b7f5ed14610aea57806395a0f5eb14610aff57806395d89b4114610b215780639789f9da14610bb15780639e30795514610bd3578063a2d6d38214610bf5578063a3dd2b3e14610c3c578063a6f9dae114610ceb578063a9059cbb14610d09578063abe7c08e14610d2a578063b3aae83014610d51578063b77d487614610daa578063bd041c4d14610dcb578063c19d93fb14610dfe578063c364a25d14610e32578063d8bff5a514610e4e578063dd62ed3e14610e85578063e2fc421d14610eb9578063ea2fe1a214610edb578063f7efd40814610efd575b61049e5b60008080808060015b60085460ff16600581111561029857fe5b14806102b5575060035b60085460ff1660058111156102b357fe5b145b15156102c15760006000fd5b6000945060015b60085460ff1660058111156102d957fe5b14156102e857607d9450610337565b60035b60085460ff1660058111156102fc57fe5b141561033757600954620151800142101561031a5760739450610337565b60095462093a800142101561033257606e9450610337565b606494505b5b5b5b600085111561049657600354349450670de0b6b3a76400009085025b049250600554836007540111156103c65760075460055403925060035483670de0b6b3a76400000281151561038757fe5b6040519190049450600160a060020a033316903486900380156108fc02916000818181858888f1935050505015156103bb57fe5b6005546007556103cf565b60078054840190555b600160a060020a0333166000908152600260205260409020548584029250808301116103fb5760006000fd5b600082116104095760006000fd5b50600160a060020a0333166000908152600b602052604090206001810154151561046057600d8054600181019091556000908152600c602052604090208054600160a060020a03191633600160a060020a03161790555b8054820181556001808201805486019055600160a060020a03331660009081526002602052604090208054840190558054830190555b5b5050505050565b005b34156104a857fe5b6104b0610f2c565b60408051918252519081900360200190f35b34156104ca57fe5b6104d5600435610f32565b60408051600160a060020a039092168252519081900360200190f35b34156104f957fe5b610501610f4d565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561058957fe5b61049e600160a060020a0360043516602435610fdb565b005b34156105aa57fe5b61049e61105d565b005b34156105bc57fe5b6104b0611106565b60408051918252519081900360200190f35b34156105de57fe5b6104b061110c565b60408051918252519081900360200190f35b341561060057fe5b6104b0611112565b60408051918252519081900360200190f35b341561062257fe5b6104b0611118565b60408051918252519081900360200190f35b341561064457fe5b61064c61111e565b6040805192835260208301919091528051918290030190f35b341561066d57fe5b6104b0611184565b60408051918252519081900360200190f35b341561068f57fe5b6104b061118a565b60408051918252519081900360200190f35b34156106b157fe5b61049e600160a060020a0360043581169060243516604435611190565b005b34156106d857fe5b6104b06112bb565b60408051918252519081900360200190f35b34156106fa57fe5b6107026112c1565b6040805160ff9092168252519081900360200190f35b341561072057fe5b61049e6004356112ca565b005b341561073557fe5b61074c600160a060020a03600435166024356113a6565b604080519115158252519081900360200190f35b341561076857fe5b61049e60043561169e565b005b341561077d57fe5b6107856117f1565b6040805161ffff9092168252519081900360200190f35b34156107a457fe5b61049e6004356118ab565b005b34156107b957fe5b6104b06004351515611c05565b60408051918252519081900360200190f35b34156107e057fe5b610501611d62565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561087057fe5b610884600160a060020a0360043516611df0565b6040805161ffff909316835260208301919091528051918290030190f35b34156108aa57fe5b6104b0600160a060020a0360043581169060243516611e10565b60408051918252519081900360200190f35b34156108de57fe5b61064c600160a060020a0360043516611e2d565b6040805192835260208301919091528051918290030190f35b341561091357fe5b6104b0600160a060020a0360043516611e46565b60408051918252519081900360200190f35b341561094157fe5b61049e600160a060020a0360043516611e58565b005b341561095f57fe5b6104b0611ec0565b60408051918252519081900360200190f35b341561098157fe5b6104b0611f1d565b60408051918252519081900360200190f35b34156109a357fe5b6104d5611f23565b60408051600160a060020a039092168252519081900360200190f35b34156109cf57fe5b6109e3600160a060020a0360043516611f32565b60408051878152908101859052606081018490526080810183905260a0810182905260c0602082018181528754600260001961010060018416150201909116049183018290529060e083019088908015610a7e5780601f10610a5357610100808354040283529160200191610a7e565b820191906000526020600020905b815481529060010190602001808311610a6157829003601f168201915b505097505050505050505060405180910390f35b3415610a9a57fe5b6104d5611f5f565b60408051600160a060020a039092168252519081900360200190f35b3415610ac657fe5b6104d5611f6e565b60408051600160a060020a039092168252519081900360200190f35b3415610af257fe5b61049e600435611f7d565b005b3415610b0757fe5b6104b0611fcb565b60408051918252519081900360200190f35b3415610b2957fe5b610501611fd1565b604080516020808252835181830152835191928392908301918501908083838215610547575b80518252602083111561054757601f199092019160209182019101610527565b505050905090810190601f1680156105735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610bb957fe5b6104b061205f565b60408051918252519081900360200190f35b3415610bdb57fe5b6104b0612065565b60408051918252519081900360200190f35b3415610bfd57fe5b610c0860043561206b565b6040805161ffff9095168552602085019390935283830191909152600160a060020a03166060830152519081900360800190f35b3415610c4457fe5b610c58600160a060020a03600435166120a0565b6040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360008314610caf575b805182526020831115610caf57601f199092019160209182019101610c8f565b505050905090810190601f168015610cdb5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3415610cf357fe5b61049e600160a060020a03600435166121ed565b005b3415610d1157fe5b61049e600160a060020a036004351660243561223f565b005b3415610d3257fe5b61074c60043561231a565b604080519115158252519081900360200190f35b3415610d5957fe5b60408051602060046024803582810135601f810185900485028601850190965285855261049e958335959394604494939290920191819084018382808284375094965061255595505050505050565b005b3415610db257fe5b61049e600160a060020a0360043516602435612744565b005b3415610dd357fe5b6104b0600160a060020a03600435166024351515612892565b60408051918252519081900360200190f35b3415610e0657fe5b610e0e612a2a565b60405180826005811115610e1e57fe5b60ff16815260200191505060405180910390f35b3415610e3a57fe5b61049e61ffff60043516602435612a33565b005b3415610e5657fe5b610e6a600160a060020a0360043516612b71565b60408051921515835290151560208301528051918290030190f35b3415610e8d57fe5b6104b0600160a060020a0360043581169060243516612b8f565b60408051918252519081900360200190f35b3415610ec157fe5b6104b0612bdf565b60408051918252519081900360200190f35b3415610ee357fe5b6104b0612be5565b60408051918252519081900360200190f35b3415610f0557fe5b6104d5600435612beb565b60408051600160a060020a039092168252519081900360200190f35b60165481565b600c60205260009081526040902054600160a060020a031681565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b60045b60085460ff166005811115610fef57fe5b14610ffa5760006000fd5b600160a060020a03338116600081815260126020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5b5050565b6000805b60085460ff16600581111561107257fe5b148061108f575060025b60085460ff16600581111561108d57fe5b145b151561109b5760006000fd5b50600160a060020a0333166000908152600b60205260408120600101549081111561110157600160a060020a0333166000818152600b60205260408082208281556001018290555183156108fc0291849190818181858888f19350505050151561110157fe5b5b5b50565b60175481565b60065481565b60185481565b60015481565b60008060045b60085460ff16600581111561113557fe5b1480611152575060055b60085460ff16600581111561115057fe5b145b151561115e5760006000fd5b6015549150426016541115156111765750600061117e565b426016540390505b5b5b9091565b600d5481565b60075481565b60045b60085460ff1660058111156111a457fe5b146111af5760006000fd5b600160a060020a038316600090815260026020526040902054819010156111d65760006000fd5b600160a060020a03821660009081526002602052604090205481810110156111fe5760006000fd5b600160a060020a0380841660009081526012602090815260408083203390941683529290522054819010156112335760006000fd5b600160a060020a03808416600081815260026020908152604080832080548790039055868516808452818420805488019055848452601283528184203390961684529482529182902080548690039055815185815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35b5b505050565b60155481565b60115460ff1681565b60045b60085460ff1660058111156112de57fe5b14806112fb575060055b60085460ff1660058111156112f957fe5b145b15156113075760006000fd5b60005433600160a060020a039081169116146113235760006000fd5b6015541580156113335750600081115b8015611349575030600160a060020a0316318111155b15156113555760006000fd5b601581905562093a804201601655600060188190556019556040805182815290517fcf33babc496bb6dc2942b39cb7b75766bbbadf7da50d176ff8c513e9911402399181900360200190a15b5b5b50565b6000600060006113b4612c06565b60008060045b60085460ff1660058111156113cb57fe5b14806113e8575060055b60085460ff1660058111156113e657fe5b145b15156113f45760006000fd5b600160a060020a0388166000908152601c6020526040812080549096501161141c5760006000fd5b846002015442101580156114495750600160a060020a033016600090815260026020526040902054855411155b15156114555760006000fd5b5b60008711801561146a575060008560030154115b156115495760038501805460001901908190556000908152600786016020908152604080832054600160a060020a031680845260068901835281842082518084018452905460ff8082161515835261010090910416151581850152818552600290935292205481519296509094509250156114ee57600485018054830190556114f9565b600585018054830190555b6003850154600090815260078601602090815260408083208054600160a060020a0319169055600160a060020a0387168352600688019091529020805461ffff1916905560001990960195611455565b60008560030154111561155f5760009550611692565b50600584015460048501548554600160a060020a038a166000908152601c60205260408120818155939092119750919061159c6001830182612c1d565b506000600282018190556003820181905560048201819055600590910155851561165057600160a060020a03881660009081526002602052604090205481810110156115e85760006000fd5b600160a060020a03308116600081815260026020908152604080832080548790039055938c16808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35b6040805187151581529051600160a060020a038a16917f6116ec491e93496f9d49c081f6fae5133f9ebac8478b3305431ec45797cc84ee919081900360200190a25b5b505050505092915050565b60055b60085460ff1660058111156116b257fe5b146116bd5760006000fd5b601354600160a060020a031615156116d55760006000fd5b8015156116e25760006000fd5b600160a060020a0333166000908152600260205260409020548111156117085760006000fd5b600160a060020a0333811660008181526002602052604080822080548690039055600180548690039055601480548601905560135481517f7a3130e30000000000000000000000000000000000000000000000000000000081526004810194909452602484018690529051931692637a3130e392604480820193929182900301818387803b151561179557fe5b6102c65a03f115156117a357fe5b5050601354604080518481529051600160a060020a03928316935033909216917f18df02dcc52b9c494f391df09661519c0069bd8540141946280399408205ca1a9181900360200190a35b50565b6000808060045b60085460ff16600581111561180957fe5b146118145760006000fd5b5050604080516c01000000000000000000000000600160a060020a03331602815260001943014060148201819052915190819003603401902062010000815b6040805180820182529290910661ffff818116845242602080860191825233600160a060020a03166000908152601d909152939093209351845461ffff19169116178355905160019092019190915592505b5b505090565b60006118b5612c06565b60015b60085460ff1660058111156118c957fe5b14806118e6575060035b60085460ff1660058111156118e457fe5b145b15156118f25760006000fd5b600a54421015806119065750600554600754145b15156119125760006000fd5b6006546007541015611a1b575b60008311801561193157506000600d54115b156119bc575050600d80546000199081018083556000908152600c6020818152604080842054600160a060020a0316808552600b835281852082518084018452815480825260019283015482870152838852600286528488208054919091039055805182540390915596548552929091529091208054600160a060020a03191690559201919061191f565b6000600d5411156119cc576112b5565b60015b60085460ff1660058111156119e057fe5b1415611a0057600880546000919060ff19166001835b0217905550611a16565b600880546002919060ff19166001835b02179055505b611bb2565b5b600083118015611a2e57506000600d54115b15611a8e57600d80546000199081018083556000908152600c6020818152604080842054600160a060020a03168452600b82528084208481556001018490559454835252919091208054600160a060020a03191690559290920191611a1c565b6000600d541115611a9e576112b5565b60015b60085460ff166005811115611ab257fe5b1415611b0c57600454604051600160a060020a039182169130163180156108fc02916000818181858888f193505050501515611a005760006000fd5b600880546002919060ff1916600183611a10565b0217905550611bb2565b600454600354600160a060020a03909116906108fc906a013da329b6336471800000811515611b3757fe5b604051919004801590920291906000818181858888f193505050501515611b5e5760006000fd5b600154604890601c025b60008054600160a060020a031681526002602052604090209190049055600154604890601c025b600180549290910490910181556008805460049260ff1990911690835b02179055505b5b6008546040517fc9393c620dc0ed7b95591e2354866fb78b5ebff006e01bdd4cbcfb9f6024b4839160ff169080826005811115611bec57fe5b60ff16815260200191505060405180910390a15b505050565b600160a060020a0333166000908152600260205260408120541515611c2a5760006000fd5b60045b60085460ff166005811115611c3e57fe5b1480611c5b575060055b60085460ff166005811115611c5957fe5b145b1515611c675760006000fd5b600160a060020a0333166000908152601a602052604090205460ff61010090910416151560011415611c995760006000fd5b601654429011611ca95760006000fd5b506017805460018082019092556000818152601b602090815260408083208054600160a060020a033316600160a060020a0319909116811790915581518083018352871515808252818501978852828652601a85529483902090518154975115156101000261ff001991151560ff199099169890981716969096179095558051928352519293927f8eb81cb806dbb3d8a2f94981614331a55dfd90e06a42fdc362ca3ca96981d92f9281900390910190a25b5b5b919050565b600e805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b601d602052600090815260409020805460019091015461ffff9091169082565b601260209081526000928352604080842090915290825290205481565b600b602052600090815260409020805460019091015482565b60026020526000908152604090205481565b60005433600160a060020a03908116911614611e745760006000fd5b601354600160a060020a031615611e8b5760006000fd5b60138054600160a060020a031916600160a060020a038316179055600880546005919060ff19166001835b02179055505b5b50565b600060015b60085460ff166005811115611ed657fe5b1480611ef3575060035b60085460ff166005811115611ef157fe5b145b1515611eff5760006000fd5b600a54421115611f1157506000611f19565b42600a540390505b5b90565b60055481565b601354600160a060020a031681565b601c6020526000908152604090208054600282015460038301546004840154600585015493946001019386565b600454600160a060020a031681565b600054600160a060020a031681565b60005433600160a060020a03908116911614611f995760006000fd5b6002811015611fa85760006000fd5b600a815b0460208190551515611fbe5760016020555b6020548103601f555b5b50565b60145481565b6010805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610fd35780601f10610fa857610100808354040283529160200191610fd3565b820191906000526020600020905b815481529060010190602001808311610fb657829003601f168201915b505050505081565b600a5481565b60035481565b601e60205260009081526040902080546001820154600283015460039093015461ffff909216929091600160a060020a031684565b60006120aa612c7c565b600060045b60085460ff1660058111156120c057fe5b14806120dd575060055b60085460ff1660058111156120db57fe5b145b15156120e95760006000fd5b600160a060020a0384166000908152601c60209081526040918290208054600191820180548551600294821615610100026000190190911693909304601f8101859004850284018501909552848352909650909290918301828280156121905780601f1061216557610100808354040283529160200191612190565b820191906000526020600020905b81548152906001019060200180831161217357829003601f168201915b50505050600160a060020a0386166000908152601c6020526040902060020154919350504290116121c3575060006121e4565b50600160a060020a0383166000908152601c60205260409020600201544290035b5b5b9193909250565b60005433600160a060020a039081169116146122095760006000fd5b600160a060020a038116151561221f5760006000fd5b60008054600160a060020a031916600160a060020a0383161790555b5b50565b60045b60085460ff16600581111561225357fe5b1461225e5760006000fd5b600160a060020a033316600090815260026020526040902054819010156122855760006000fd5b600160a060020a03821660009081526002602052604090205481810110156122ad5760006000fd5b600160a060020a03338116600081815260026020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35b5b5050565b60006000612326612c06565b60008060045b60085460ff16600581111561233d57fe5b148061235a575060055b60085460ff16600581111561235857fe5b145b15156123665760006000fd5b6016544210156123765760006000fd5b5b60008611801561238957506000601754115b15612458576017805460001901908190556000908152601b6020908152604080832054600160a060020a0316808452601a835281842082518084018452905460ff80821615158352610100909104161515818501528185526002909352922054815192965090945092501561240557601880548301905561240e565b60198054830190555b600160a060020a0384166000908152601a60209081526040808320805461ffff191690556017548352601b90915290208054600160a060020a031916905560001990950194612376565b6000601754111561246c576000945061254b565b6019546018541194506015549050601560009055601660009055601760009055841561251357601354600160a060020a031615156124dd5760008054604051600160a060020a039091169183156108fc02918491818181858888f1935050505015156124d85760006000fd5b612513565b601354604051600160a060020a039182169130163180156108fc02916000818181858888f1935050505015156125135760006000fd5b5b5b60408051861515815290517fa645a33a6706739d95d9785acab71f06d2b89c02d601ef8c380e6fe4ee5223b99181900360200190a15b5b50505050919050565b600160a060020a033316600090815260026020526040902054151561257a5760006000fd5b60045b60085460ff16600581111561258e57fe5b14806125ab575060055b60085460ff1660058111156125a957fe5b145b15156125b75760006000fd5b6000821180156125df5750600160a060020a0330166000908152600260205260409020548211155b15156125eb5760006000fd5b600160a060020a0333166000908152600260205260409020546103e8028211156126155760006000fd5b600160a060020a0333166000908152601c6020526040902054156126395760006000fd5b600160a060020a0333166000908152601c60209081526040909120838155825161266b92600190920191840190612c8e565b50600160a060020a0333166000818152601c602090815260409182902062093a804201600290910155815185815280820183815285519382019390935284517ff0bbe877a87290e236ea898bbce0d78d6ac7d54d62e32744b129798a2669e39b93879387939260608401918501908083838215612703575b80518252602083111561270357601f1990920191602091820191016126e3565b505050905090810190601f16801561272f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050565b60005433600160a060020a039081169116146127605760006000fd5b60005b60085460ff16600581111561277457fe5b1480612791575060025b60085460ff16600581111561278f57fe5b145b151561279d5760006000fd5b4260095560048054600160a060020a031916600160a060020a03841617905560038190556000600d81905560078190555b60085460ff1660058111156127df57fe5b141561281357621275004201600a55600880546001919060ff191682805b0217905550620493e06005819055600655612840565b62278d004201600a55600880546003919060ff19166001835b0217905550624f58806005556236ee806006555b6008546040517fc9393c620dc0ed7b95591e2354866fb78b5ebff006e01bdd4cbcfb9f6024b4839160ff16908082600581111561287957fe5b60ff16815260200191505060405180910390a15b5b5050565b600160a060020a033316600090815260026020526040812054819015156128b95760006000fd5b60045b60085460ff1660058111156128cd57fe5b14806128ea575060055b60085460ff1660058111156128e857fe5b145b15156128f65760006000fd5b50600160a060020a0383166000908152601c6020526040812080549091901161291f5760006000fd5b600160a060020a033316600090815260068201602052604090205460ff610100909104161515600114156129535760006000fd5b60028101544290116129655760006000fd5b6003810180546001808201909255600081815260078401602090815260408083208054600160a060020a03338116600160a060020a03199092168217909255825180840184528a151580825281860198895282875260068a0186529584902090518154985115156101000261ff001991151560ff19909a16999099171697909717909655815193845290519396508816927ff01e0648b75d055c003bb115baaa99af91e34a86a5405eb8b96e451bcb1c79f09281900390910190a35b5b5b5092915050565b60085460ff1681565b60045b60085460ff166005811115612a4757fe5b14612a525760006000fd5b600160a060020a0333166000908152601d60205260409020600101541515612a7a5760006000fd5b33600160a060020a03166000908152601d602052604090205461ffff838116911614612aa65760006000fd5b600054602054612abf91600160a060020a03169061223f565b612acb30601f5461223f565b6040805160808101825261ffff8085168252600160a060020a033381166000818152601d602081815287832060018082018054848b01908152428b8d0190815260608c018981528e8952601e87529c88209b518c549b1661ffff199b8c16178c559051928b0192909255905160028a015598516003909801805498909616600160a060020a0319909816979097179094559181529152825490911690915590555b5b5050565b601a6020526000908152604090205460ff8082169161010090041682565b600060045b60085460ff166005811115612ba557fe5b14612bb05760006000fd5b50600160a060020a038083166000908152601260209081526040808320938516835292905220545b5b92915050565b60095481565b60195481565b601b60205260009081526040902054600160a060020a031681565b604080518082019091526000808252602082015290565b50805460018160011615610100020316600290046000825580601f10612c435750611101565b601f0160209004906000526020600020908101906111019190612d0d565b5b50565b604080518082019091526000808252602082015290565b60408051602081019091526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ccf57805160ff1916838001178555612cfc565b82800160010185558215612cfc579182015b82811115612cfc578251825591602001919060010190612ce1565b5b50612d09929150612d0d565b5090565b611f1991905b80821115612d095760008155600101612d13565b5090565b905600a165627a7a723058206ef4e8e523104f4c27fbd1761689f727c734cb9bfd4072eabd2736571a82a3a10029

Swarm Source

bzzr://6ef4e8e523104f4c27fbd1761689f727c734cb9bfd4072eabd2736571a82a3a1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.