ETH Price: $2,359.95 (+5.73%)

Token

Unilot token (UNIT)
 

Overview

Max Total Supply

155,753,038.96402531645499 UNIT

Holders

344

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,262.443 UNIT

Value
$0.00
0x31a570a588DC86fAeB45057e749533FB0cD9622d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UNITv2

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-04
*/

pragma solidity ^0.4.18;

//Interfaces

// https://github.com/ethereum/EIPs/issues/20
interface ERC20 {
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);

    function totalSupply() public constant returns (uint);
    function balanceOf(address _owner) public constant returns (uint balance);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender) public constant returns (uint remaining);
}

contract UnilotToken is ERC20 {
    struct TokenStage {
        string name;
        uint numCoinsStart;
        uint coinsAvailable;
        uint bonus;
        uint startsAt;
        uint endsAt;
        uint balance; //Amount of ether sent during this stage
    }

    //Token symbol
    string public constant symbol = "UNIT";
    //Token name
    string public constant name = "Unilot token";
    //It can be reeeealy small
    uint8 public constant decimals = 18;

    //This one duplicates the above but will have to use it because of
    //solidity bug with power operation
    uint public constant accuracy = 1000000000000000000;

    //500 mln tokens
    uint256 internal _totalSupply = 500 * (10**6) * accuracy;

    //Public investor can buy tokens for 30 ether at maximum
    uint256 public constant singleInvestorCap = 30 ether; //30 ether

    //Distribution units
    uint public constant DST_ICO     = 62; //62%
    uint public constant DST_RESERVE = 10; //10%
    uint public constant DST_BOUNTY  = 3;  //3%
    //Referral and Bonus Program
    uint public constant DST_R_N_B_PROGRAM = 10; //10%
    uint public constant DST_ADVISERS      = 5;  //5%
    uint public constant DST_TEAM          = 10; //10%

    //Referral Bonuses
    uint public constant REFERRAL_BONUS_LEVEL1 = 5; //5%
    uint public constant REFERRAL_BONUS_LEVEL2 = 4; //4%
    uint public constant REFERRAL_BONUS_LEVEL3 = 3; //3%
    uint public constant REFERRAL_BONUS_LEVEL4 = 2; //2%
    uint public constant REFERRAL_BONUS_LEVEL5 = 1; //1%

    //Token amount
    //25 mln tokens
    uint public constant TOKEN_AMOUNT_PRE_ICO = 25 * (10**6) * accuracy;
    //5 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE1 = 5 * (10**6) * accuracy;
    //5 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE2 = 5 * (10**6) * accuracy;
    //5 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE3 = 5 * (10**6) * accuracy;
    //5 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE4 = 5 * (10**6) * accuracy;
    //122.5 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE5 = 1225 * (10**5) * accuracy;
    //265 mln tokens
    uint public constant TOKEN_AMOUNT_ICO_STAGE2 = 1425 * (10**5) * accuracy;

    uint public constant BONUS_PRE_ICO = 40; //40%
    uint public constant BONUS_ICO_STAGE1_PRE_SALE1 = 35; //35%
    uint public constant BONUS_ICO_STAGE1_PRE_SALE2 = 30; //30%
    uint public constant BONUS_ICO_STAGE1_PRE_SALE3 = 25; //25%
    uint public constant BONUS_ICO_STAGE1_PRE_SALE4 = 20; //20%
    uint public constant BONUS_ICO_STAGE1_PRE_SALE5 = 0; //0%
    uint public constant BONUS_ICO_STAGE2 = 0; //No bonus

    //Token Price on Coin Offer
    uint256 public constant price = 79 szabo; //0.000079 ETH

    address public constant ADVISORS_WALLET = 0x77660795BD361Cd43c3627eAdad44dDc2026aD17;
    address public constant RESERVE_WALLET = 0x731B47847352fA2cFf83D5251FD6a5266f90878d;
    address public constant BOUNTY_WALLET = 0x794EF9c680bDD0bEf48Bef46bA68471e449D67Fb;
    address public constant R_N_D_WALLET = 0x794EF9c680bDD0bEf48Bef46bA68471e449D67Fb;
    address public constant STORAGE_WALLET = 0xE2A8F147fc808738Cab152b01C7245F386fD8d89;

    // Owner of this contract
    address public administrator;

    // Balances for each account
    mapping(address => uint256) balances;

    // Owner of account approves the transfer of an amount to another account
    mapping(address => mapping (address => uint256)) allowed;

    //Mostly needed for internal use
    uint256 internal totalCoinsAvailable;

    //All token stages. Total 6 stages
    TokenStage[7] stages;

    //Index of current stage in stage array
    uint currentStage;

    //Enables or disables debug mode. Debug mode is set only in constructor.
    bool isDebug = false;

    event StageUpdated(string from, string to);

    // Functions with this modifier can only be executed by the owner
    modifier onlyAdministrator() {
        require(msg.sender == administrator);
        _;
    }

    modifier notAdministrator() {
        require(msg.sender != administrator);
        _;
    }

    modifier onlyDuringICO() {
        require(currentStage < stages.length);
        _;
    }

    modifier onlyAfterICO(){
        require(currentStage >= stages.length);
        _;
    }

    modifier meetTheCap() {
        require(msg.value >= price); // At least one token
        _;
    }

    modifier isFreezedReserve(address _address) {
        require( ( _address == RESERVE_WALLET ) && now > (stages[ (stages.length - 1) ].endsAt + 182 days));
        _;
    }

    // Constructor
    function UnilotToken()
        public
    {
        administrator = msg.sender;
        totalCoinsAvailable = _totalSupply;
        //Was as fn parameter for debugging
        isDebug = false;

        _setupStages();
        _proceedStage();
    }

    function prealocateCoins()
        public
        onlyAdministrator
    {
        totalCoinsAvailable -= balances[ADVISORS_WALLET] += ( ( _totalSupply * DST_ADVISERS ) / 100 );
        totalCoinsAvailable -= balances[RESERVE_WALLET] += ( ( _totalSupply * DST_RESERVE ) / 100 );

        address[7] memory teamWallets = getTeamWallets();
        uint teamSupply = ( ( _totalSupply * DST_TEAM ) / 100 );
        uint memberAmount = teamSupply / teamWallets.length;

        for(uint i = 0; i < teamWallets.length; i++) {
            if ( i == ( teamWallets.length - 1 ) ) {
                memberAmount = teamSupply;
            }

            balances[teamWallets[i]] += memberAmount;
            teamSupply -= memberAmount;
            totalCoinsAvailable -= memberAmount;
        }
    }

    function getTeamWallets()
        public
        pure
        returns (address[7] memory result)
    {
        result[0] = 0x40e3D8fFc46d73Ab5DF878C751D813a4cB7B388D;
        result[1] = 0x5E065a80f6635B6a46323e3383057cE6051aAcA0;
        result[2] = 0x0cF3585FbAB2a1299F8347a9B87CF7B4fcdCE599;
        result[3] = 0x5fDd3BA5B6Ff349d31eB0a72A953E454C99494aC;
        result[4] = 0xC9be9818eE1B2cCf2E4f669d24eB0798390Ffb54;
        result[5] = 0x77660795BD361Cd43c3627eAdad44dDc2026aD17;
        result[6] = 0xd13289203889bD898d49e31a1500388441C03663;
    }

    function _setupStages()
        internal
    {
        //Presale stage
        stages[0].name = 'Presale stage';
        stages[0].numCoinsStart = totalCoinsAvailable;
        stages[0].coinsAvailable = TOKEN_AMOUNT_PRE_ICO;
        stages[0].bonus = BONUS_PRE_ICO;

        if (isDebug) {
            stages[0].startsAt = now;
            stages[0].endsAt = stages[0].startsAt + 30 seconds;
        } else {
            stages[0].startsAt = 1515610800; //10th of January 2018 at 19:00UTC
            stages[0].endsAt = 1518894000; //17th of February 2018 at 19:00UTC
        }

        //ICO Stage 1 pre-sale 1
        stages[1].name = 'ICO Stage 1 pre-sale 1';
        stages[1].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE1;
        stages[1].bonus = BONUS_ICO_STAGE1_PRE_SALE1;

        if (isDebug) {
            stages[1].startsAt = stages[0].endsAt;
            stages[1].endsAt = stages[1].startsAt + 30 seconds;
        } else {
            stages[1].startsAt = 1519326000; //22th of February 2018 at 19:00UTC
            stages[1].endsAt = 1521745200; //22th of March 2018 at 19:00UTC
        }

        //ICO Stage 1 pre-sale 2
        stages[2].name = 'ICO Stage 1 pre-sale 2';
        stages[2].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE2;
        stages[2].bonus = BONUS_ICO_STAGE1_PRE_SALE2;

        stages[2].startsAt = stages[1].startsAt;
        stages[2].endsAt = stages[1].endsAt;

        //ICO Stage 1 pre-sale 3
        stages[3].name = 'ICO Stage 1 pre-sale 3';
        stages[3].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE3;
        stages[3].bonus = BONUS_ICO_STAGE1_PRE_SALE3;

        stages[3].startsAt = stages[1].startsAt;
        stages[3].endsAt = stages[1].endsAt;

        //ICO Stage 1 pre-sale 4
        stages[4].name = 'ICO Stage 1 pre-sale 4';
        stages[4].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE4;
        stages[4].bonus = BONUS_ICO_STAGE1_PRE_SALE4;

        stages[4].startsAt = stages[1].startsAt;
        stages[4].endsAt = stages[1].endsAt;

        //ICO Stage 1 pre-sale 5
        stages[5].name = 'ICO Stage 1 pre-sale 5';
        stages[5].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE5;
        stages[5].bonus = BONUS_ICO_STAGE1_PRE_SALE5;

        stages[5].startsAt = stages[1].startsAt;
        stages[5].endsAt = stages[1].endsAt;

        //ICO Stage 2
        stages[6].name = 'ICO Stage 2';
        stages[6].coinsAvailable = TOKEN_AMOUNT_ICO_STAGE2;
        stages[6].bonus = BONUS_ICO_STAGE2;

        if (isDebug) {
            stages[6].startsAt = stages[5].endsAt;
            stages[6].endsAt = stages[6].startsAt + 30 seconds;
        } else {
            stages[6].startsAt = 1524250800; //20th of April 2018 at 19:00UTC
            stages[6].endsAt = 1526842800; //20th of May 2018 at 19:00UTC
        }
    }

    function _proceedStage()
        internal
    {
        while (true) {
            if ( currentStage < stages.length
            && (now >= stages[currentStage].endsAt || getAvailableCoinsForCurrentStage() == 0) ) {
                currentStage++;
                uint totalTokensForSale = TOKEN_AMOUNT_PRE_ICO
                                    + TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE1
                                    + TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE2
                                    + TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE3
                                    + TOKEN_AMOUNT_ICO_STAGE1_PRE_SALE4
                                    + TOKEN_AMOUNT_ICO_STAGE2;

                if (currentStage >= stages.length) {
                    //Burning all unsold tokens and proportionally other for deligation
                    _totalSupply -= ( ( ( stages[(stages.length - 1)].coinsAvailable * DST_BOUNTY ) / 100 )
                                    + ( ( stages[(stages.length - 1)].coinsAvailable * DST_R_N_B_PROGRAM ) / 100 ) );

                    balances[BOUNTY_WALLET] = (((totalTokensForSale - stages[(stages.length - 1)].coinsAvailable) * DST_BOUNTY)/100);
                    balances[R_N_D_WALLET] = (((totalTokensForSale - stages[(stages.length - 1)].coinsAvailable) * DST_R_N_B_PROGRAM)/100);

                    totalCoinsAvailable = 0;
                    break; //ICO ended
                }

                stages[currentStage].numCoinsStart = totalCoinsAvailable;

                if ( currentStage > 0 ) {
                    //Move all left tokens to last stage
                    stages[(stages.length - 1)].coinsAvailable += stages[ (currentStage - 1 ) ].coinsAvailable;
                    StageUpdated(stages[currentStage - 1].name, stages[currentStage].name);
                }
            } else {
                break;
            }
        }
    }

    function getTotalCoinsAvailable()
        public
        view
        returns(uint)
    {
        return totalCoinsAvailable;
    }

    function getAvailableCoinsForCurrentStage()
        public
        view
        returns(uint)
    {
        TokenStage memory stage = stages[currentStage];

        return stage.coinsAvailable;
    }

    //------------- ERC20 methods -------------//
    function totalSupply()
        public
        constant
        returns (uint256)
    {
        return _totalSupply;
    }


    // What is the balance of a particular account?
    function balanceOf(address _owner)
        public
        constant
        returns (uint256 balance)
    {
        return balances[_owner];
    }


    // Transfer the balance from owner's account to another account
    function transfer(address _to, uint256 _amount)
        public
        onlyAfterICO
        isFreezedReserve(_to)
        returns (bool success)
    {
        if (balances[msg.sender] >= _amount
            && _amount > 0
            && balances[_to] + _amount > balances[_to]) {
            balances[msg.sender] -= _amount;
            balances[_to] += _amount;
            Transfer(msg.sender, _to, _amount);

            return true;
        } else {
            return false;
        }
    }


    // Send _value amount of tokens from address _from to address _to
    // The transferFrom method is used for a withdraw workflow, allowing contracts to send
    // tokens on your behalf, for example to "deposit" to a contract address and/or to charge
    // fees in sub-currencies; the command should fail unless the _from account has
    // deliberately authorized the sender of the message via some mechanism; we propose
    // these standardized APIs for approval:
    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    )
        public
        onlyAfterICO
        isFreezedReserve(_from)
        isFreezedReserve(_to)
        returns (bool success)
    {
        if (balances[_from] >= _amount
            && allowed[_from][msg.sender] >= _amount
            && _amount > 0
            && balances[_to] + _amount > balances[_to]) {
            balances[_from] -= _amount;
            allowed[_from][msg.sender] -= _amount;
            balances[_to] += _amount;
            Transfer(_from, _to, _amount);
            return true;
        } else {
            return false;
        }
    }


    // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
    // If this function is called again it overwrites the current allowance with _value.
    function approve(address _spender, uint256 _amount)
        public
        onlyAfterICO
        isFreezedReserve(_spender)
        returns (bool success)
    {
        allowed[msg.sender][_spender] = _amount;
        Approval(msg.sender, _spender, _amount);
        return true;
    }


    function allowance(address _owner, address _spender)
        public
        constant
        returns (uint256 remaining)
    {
        return allowed[_owner][_spender];
    }
    //------------- ERC20 Methods END -------------//

    //Returns bonus for certain level of reference
    function calculateReferralBonus(uint amount, uint level)
        public
        pure
        returns (uint bonus)
    {
        bonus = 0;

        if ( level == 1 ) {
            bonus = ( ( amount * REFERRAL_BONUS_LEVEL1 ) / 100 );
        } else if (level == 2) {
            bonus = ( ( amount * REFERRAL_BONUS_LEVEL2 ) / 100 );
        } else if (level == 3) {
            bonus = ( ( amount * REFERRAL_BONUS_LEVEL3 ) / 100 );
        } else if (level == 4) {
            bonus = ( ( amount * REFERRAL_BONUS_LEVEL4 ) / 100 );
        } else if (level == 5) {
            bonus = ( ( amount * REFERRAL_BONUS_LEVEL5 ) / 100 );
        }
    }

    function calculateBonus(uint amountOfTokens)
        public
        view
        returns (uint)
    {
        return ( ( stages[currentStage].bonus * amountOfTokens ) / 100 );
    }

    event TokenPurchased(string stage, uint valueSubmitted, uint valueRefunded, uint tokensPurchased);

    function ()
        public
        payable
        notAdministrator
        onlyDuringICO
        meetTheCap
    {
        _proceedStage();
        require(currentStage < stages.length);
        require(stages[currentStage].startsAt <= now && now < stages[currentStage].endsAt);
        require(getAvailableCoinsForCurrentStage() > 0);

        uint requestedAmountOfTokens = ( ( msg.value * accuracy ) / price );
        uint amountToBuy = requestedAmountOfTokens;
        uint refund = 0;

        if ( amountToBuy > getAvailableCoinsForCurrentStage() ) {
            amountToBuy = getAvailableCoinsForCurrentStage();
            refund = ( ( (requestedAmountOfTokens - amountToBuy) / accuracy ) * price );

            // Returning ETH
            msg.sender.transfer( refund );
        }

        TokenPurchased(stages[currentStage].name, msg.value, refund, amountToBuy);
        stages[currentStage].coinsAvailable -= amountToBuy;
        stages[currentStage].balance += (msg.value - refund);

        uint amountDelivered = amountToBuy + calculateBonus(amountToBuy);

        balances[msg.sender] += amountDelivered;
        totalCoinsAvailable -= amountDelivered;

        if ( getAvailableCoinsForCurrentStage() == 0 ) {
            _proceedStage();
        }

        STORAGE_WALLET.transfer(this.balance);
    }

    //It doesn't really close the stage
    //It just needed to push transaction to update stage and update block.now
    function closeStage()
        public
        onlyAdministrator
    {
        _proceedStage();
    }
}

contract ERC20Contract is ERC20 {
    //Token symbol
    string public constant symbol = "UNIT";

    //Token name
    string public constant name = "Unilot token";

    //It can be reeeealy small
    uint8 public constant decimals = 18;

    // Balances for each account
    mapping(address => uint96) public balances;

    // Owner of account approves the transfer of an amount to another account
    mapping(address => mapping (address => uint96)) allowed;

    function totalSupply()
        public
        constant
        returns (uint);


    // What is the balance of a particular account?
    function balanceOf(address _owner)
        public
        constant
        returns (uint balance)
    {
        return uint(balances[_owner]);
    }


    // Transfer the balance from owner's account to another account
    function transfer(address _to, uint _amount)
        public
        returns (bool success)
    {
        if (balances[msg.sender] >= _amount
            && _amount > 0
            && balances[_to] + _amount > balances[_to]) {
            balances[msg.sender] -= uint96(_amount);
            balances[_to] += uint96(_amount);
            Transfer(msg.sender, _to, _amount);

            return true;
        } else {
            return false;
        }
    }


    // Send _value amount of tokens from address _from to address _to
    // The transferFrom method is used for a withdraw workflow, allowing contracts to send
    // tokens on your behalf, for example to "deposit" to a contract address and/or to charge
    // fees in sub-currencies; the command should fail unless the _from account has
    // deliberately authorized the sender of the message via some mechanism; we propose
    // these standardized APIs for approval:
    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    )
        public
        returns (bool success)
    {
        if (balances[_from] >= _amount
            && allowed[_from][msg.sender] >= _amount
            && _amount > 0
            && balances[_to] + _amount > balances[_to]) {
            balances[_from] -= uint96(_amount);
            allowed[_from][msg.sender] -= uint96(_amount);
            balances[_to] += uint96(_amount);
            Transfer(_from, _to, _amount);
            return true;
        } else {
            return false;
        }
    }


    // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
    // If this function is called again it overwrites the current allowance with _value.
    function approve(address _spender, uint _amount)
        public
        returns (bool success)
    {
        allowed[msg.sender][_spender] = uint96(_amount);
        Approval(msg.sender, _spender, _amount);
        return true;
    }


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

interface TokenStagesManager {
    function isDebug() public constant returns(bool);
    function setToken(address tokenAddress) public;
    function getPool() public constant returns (uint96);
    function getBonus() public constant returns (uint8);
    function isFreezeTimeout() public constant returns (bool);
    function isTimeout() public constant returns (bool);
    function isICO() public view returns(bool);
    function isCanList() public view returns (bool);
    function calculateBonus(uint96 amount) public view returns (uint88);
    function delegateFromPool(uint96 amount) public;
    function delegateFromBonus(uint88 amount) public;
    function delegateFromReferral(uint88 amount) public;

    function getBonusPool() public constant returns(uint88);
    function getReferralPool() public constant returns(uint88);
}

interface Whitelist {
    function add(address _wlAddress) public;
    function addBulk(address[] _wlAddresses) public;
    function remove(address _wlAddresses) public;
    function removeBulk(address[] _wlAddresses) public;
    function getAll() public constant returns(address[]);
    function isInList(address _checkAddress) public constant returns(bool);
}

contract Administrated {
    address public administrator;

    modifier onlyAdministrator() {
        require(administrator == tx.origin);
        _;
    }

    modifier notAdministrator() {
        require(administrator != tx.origin);
        _;
    }

    function setAdministrator(address _administrator)
        internal
    {
        administrator = _administrator;
    }
}

contract UNITv2 is ERC20Contract,Administrated {
    //Token symbol
    string public constant symbol = "UNIT";
    //Token name
    string public constant name = "Unilot token";
    //It can be reeeealy small
    uint8 public constant decimals = 18;

    //Total supply 500mln in the start
    uint96 public _totalSupply = uint96(500000000 * (10**18));

    UnilotToken public sourceToken;

    Whitelist public transferWhiteList;

    Whitelist public paymentGateways;

    TokenStagesManager public stagesManager;

    bool public unlocked = false;

    bool public burned = false;

    //tokenImport[tokenHolder][sourceToken] = true/false;
    mapping ( address => mapping ( address => bool ) ) public tokenImport;

    event TokensImported(address indexed tokenHolder, uint96 amount, address indexed source);
    event TokensDelegated(address indexed tokenHolder, uint96 amount, address indexed source);
    event Unlocked();
    event Burned(uint96 amount);

    modifier isLocked() {
        require(unlocked == false);
        _;
    }

    modifier isNotBurned() {
        require(burned == false);
        _;
    }

    modifier isTransferAllowed(address _from, address _to) {
        if ( sourceToken.RESERVE_WALLET() == _from ) {
            require( stagesManager.isFreezeTimeout() );
        }
        require(unlocked
                || ( stagesManager != address(0) && stagesManager.isCanList() )
                || ( transferWhiteList != address(0) && ( transferWhiteList.isInList(_from) || transferWhiteList.isInList(_to) ) )
        );
        _;
    }

    function UNITv2(address _sourceToken)
        public
    {
        setAdministrator(tx.origin);
        sourceToken = UnilotToken(_sourceToken);

        /*Transactions:
        0x99c28675adbd0d0cb7bd783ae197492078d4063f40c11139dd07c015a543ffcc
        0x86038d11ee8da46703309d2fb45d150f1dc4e2bba6d0a8fee158016111104ff1
        0x0340a8a2fb89513c0086a345973470b7bc33424e818ca6a32dcf9ad66bf9d75c
        */
        balances[0xd13289203889bD898d49e31a1500388441C03663] += 1400000000000000000 * 3;
        markAsImported(0xdBF98dF5DAd9077f457e1dcf85Aa9420BcA8B761, 0xd13289203889bD898d49e31a1500388441C03663);

        //Tx: 0xec9b7b4c0f1435282e2e98a66efbd7610de7eacce3b2448cd5f503d70a64a895
        balances[0xE33305B2EFbcB302DA513C38671D01646651a868] += 1400000000000000000;
        markAsImported(0xdBF98dF5DAd9077f457e1dcf85Aa9420BcA8B761, 0xE33305B2EFbcB302DA513C38671D01646651a868);

        //Assigning bounty
        balances[0x794EF9c680bDD0bEf48Bef46bA68471e449D67Fb] += uint96(
            ( uint(_totalSupply) * uint8( sourceToken.DST_BOUNTY() ) ) / 100
        );

        //Don't import bounty and R&B tokens
        markAsImported(0xdBF98dF5DAd9077f457e1dcf85Aa9420BcA8B761, 0x794EF9c680bDD0bEf48Bef46bA68471e449D67Fb);
        markAsImported(sourceToken, 0x794EF9c680bDD0bEf48Bef46bA68471e449D67Fb);

        markAsImported(0xdBF98dF5DAd9077f457e1dcf85Aa9420BcA8B761, 0x91D740D87A8AeED1fc3EA3C346843173c529D63e);
    }

    function setTransferWhitelist(address whiteListAddress)
        public
        onlyAdministrator
        isNotBurned
    {
        transferWhiteList = Whitelist(whiteListAddress);
    }

    function disableTransferWhitelist()
        public
        onlyAdministrator
        isNotBurned
    {
        transferWhiteList = Whitelist(address(0));
    }

    function setStagesManager(address stagesManagerContract)
        public
        onlyAdministrator
        isNotBurned
    {
        stagesManager = TokenStagesManager(stagesManagerContract);
    }

    function setPaymentGatewayList(address paymentGatewayListContract)
        public
        onlyAdministrator
        isNotBurned
    {
        paymentGateways = Whitelist(paymentGatewayListContract);
    }

    //START Import related methods
    function isImported(address _sourceToken, address _tokenHolder)
        internal
        constant
        returns (bool)
    {
        return tokenImport[_tokenHolder][_sourceToken];
    }

    function markAsImported(address _sourceToken, address _tokenHolder)
        internal
    {
        tokenImport[_tokenHolder][_sourceToken] = true;
    }

    function importFromSource(ERC20 _sourceToken, address _tokenHolder)
        internal
    {
        if ( !isImported(_sourceToken, _tokenHolder) ) {
            uint96 oldBalance = uint96(_sourceToken.balanceOf(_tokenHolder));
            balances[_tokenHolder] += oldBalance;
            markAsImported(_sourceToken, _tokenHolder);

            TokensImported(_tokenHolder, oldBalance, _sourceToken);
        }
    }

    //Imports from source token
    function importTokensFromSourceToken(address _tokenHolder)
        internal
    {
        importFromSource(ERC20(sourceToken), _tokenHolder);
    }

    function importFromExternal(ERC20 _sourceToken, address _tokenHolder)
        public
        onlyAdministrator
        isNotBurned
    {
        return importFromSource(_sourceToken, _tokenHolder);
    }

    //Imports from provided token
    function importTokensSourceBulk(ERC20 _sourceToken, address[] _tokenHolders)
        public
        onlyAdministrator
        isNotBurned
    {
        require(_tokenHolders.length <= 256);

        for (uint8 i = 0; i < _tokenHolders.length; i++) {
            importFromSource(_sourceToken, _tokenHolders[i]);
        }
    }
    //END Import related methods

    //START ERC20
    function totalSupply()
        public
        constant
        returns (uint)
    {
        return uint(_totalSupply);
    }

    function balanceOf(address _owner)
        public
        constant
        returns (uint balance)
    {
        balance = super.balanceOf(_owner);

        if (!isImported(sourceToken, _owner)) {
            balance += sourceToken.balanceOf(_owner);
        }
    }

    function transfer(address _to, uint _amount)
        public
        isTransferAllowed(msg.sender, _to)
        returns (bool success)
    {
        return super.transfer(_to, _amount);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    )
        public
        isTransferAllowed(_from, _to)
        returns (bool success)
    {
        return super.transferFrom(_from, _to, _amount);
    }

    function approve(address _spender, uint _amount)
        public
        isTransferAllowed(msg.sender, _spender)
        returns (bool success)
    {
        return super.approve(_spender, _amount);
    }
    //END ERC20

    function delegateTokens(address tokenHolder, uint96 amount)
        public
        isNotBurned
    {
        require(paymentGateways.isInList(msg.sender));
        require(stagesManager.isICO());
        require(stagesManager.getPool() >= amount);

        uint88 bonus = stagesManager.calculateBonus(amount);
        stagesManager.delegateFromPool(amount);

        balances[tokenHolder] += amount + uint96(bonus);

        TokensDelegated(tokenHolder, amount, msg.sender);
    }

    function delegateBonusTokens(address tokenHolder, uint88 amount)
        public
        isNotBurned
    {
        require(paymentGateways.isInList(msg.sender) || tx.origin == administrator);
        require(stagesManager.getBonusPool() >= amount);

        stagesManager.delegateFromBonus(amount);

        balances[tokenHolder] += amount;

        TokensDelegated(tokenHolder, uint96(amount), msg.sender);
    }

    function delegateReferalTokens(address tokenHolder, uint88 amount)
        public
        isNotBurned
    {
        require(paymentGateways.isInList(msg.sender) || tx.origin == administrator);
        require(stagesManager.getReferralPool() >= amount);

        stagesManager.delegateFromReferral(amount);

        balances[tokenHolder] += amount;

        TokensDelegated(tokenHolder, amount, msg.sender);
    }

    function delegateReferralTokensBulk(address[] tokenHolders, uint88[] amounts)
        public
        isNotBurned
    {
        require(paymentGateways.isInList(msg.sender) || tx.origin == administrator);
        require(tokenHolders.length <= 256);
        require(tokenHolders.length == amounts.length);

        for ( uint8 i = 0; i < tokenHolders.length; i++ ) {
            delegateReferalTokens(tokenHolders[i], amounts[i]);
        }
    }

    function unlock()
        public
        isLocked
        onlyAdministrator
    {
        unlocked = true;
        Unlocked();
    }

    function burn()
        public
        onlyAdministrator
    {
        require(!stagesManager.isICO());

        uint96 burnAmount = stagesManager.getPool()
                        + stagesManager.getBonusPool()
                        + stagesManager.getReferralPool();

        _totalSupply -= burnAmount;
        burned = true;
        Burned(burnAmount);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paymentGateways","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stagesManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenHolder","type":"address"},{"name":"amount","type":"uint88"}],"name":"delegateBonusTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"stagesManagerContract","type":"address"}],"name":"setStagesManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferWhiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"paymentGatewayListContract","type":"address"}],"name":"setPaymentGatewayList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sourceToken","type":"address"},{"name":"_tokenHolder","type":"address"}],"name":"importFromExternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sourceToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTransferWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unlocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenHolder","type":"address"},{"name":"amount","type":"uint96"}],"name":"delegateTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenHolders","type":"address[]"},{"name":"amounts","type":"uint88[]"}],"name":"delegateReferralTokensBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sourceToken","type":"address"},{"name":"_tokenHolders","type":"address[]"}],"name":"importTokensSourceBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"whiteListAddress","type":"address"}],"name":"setTransferWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"administrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokenImport","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenHolder","type":"address"},{"name":"amount","type":"uint88"}],"name":"delegateReferalTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_sourceToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenHolder","type":"address"},{"indexed":false,"name":"amount","type":"uint96"},{"indexed":true,"name":"source","type":"address"}],"name":"TokensImported","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenHolder","type":"address"},{"indexed":false,"name":"amount","type":"uint96"},{"indexed":true,"name":"source","type":"address"}],"name":"TokensDelegated","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint96"}],"name":"Burned","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"}]

606060405260028054600160a060020a03167f019d971e4fe8401e7400000000000000000000000000000000000000000000001790556006805460a060020a61ffff021916905534156200005257600080fd5b6040516020806200271183398101604052808051915062000083905032640100000000620022bc6200039382021704565b60038054600160a060020a031916600160a060020a03831617905573d13289203889bd898d49e31a1500388441c0366360008181526020527f2647e172a57ae6e6bde8300064e614d890512645468220ee283d2bd0c261742a80546001606060020a03198116673a4965bf58a400006001606060020a0392831601909116179055620001339073dbf98df5dad9077f457e1dcf85aa9420bca8b76190640100000000620003b58102620022871704565b73e33305b2efbcb302da513c38671d01646651a86860008181526020527fdd8c27f2e49333a76cd8b5173ca39606069b4bb8d5f9c492ccacff6a22da457580546001606060020a0380821667136dcc951d8c000001166001606060020a0319909116179055620001c79073dbf98df5dad9077f457e1dcf85aa9420bca8b7619064010000000062002287620003b582021704565b600354606490600160a060020a031663fe7f0d146000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200022c57600080fd5b6102c65a03f115156200023e57600080fd5b50505060405180516002546001606060020a03740100000000000000000000000000000000000000009091041660ff9091160290508115156200027d57fe5b73794ef9c680bdd0bef48bef46ba68471e449d67fb60008181526020527f8d4c9ab396c4278b82d201cb62fc2fd72469ea598aba1e49c008acb74f08ae3780546001606060020a03198116949093046001606060020a0393841601909216929092179055620003109073dbf98df5dad9077f457e1dcf85aa9420bca8b76190640100000000620003b58102620022871704565b6003546200034a90600160a060020a031673794ef9c680bdd0bef48bef46ba68471e449d67fb64010000000062002287620003b582021704565b6200038c73dbf98df5dad9077f457e1dcf85aa9420bca8b7617391d740d87a8aeed1fc3ea3c346843173c529d63e64010000000062002287620003b582021704565b50620003ea565b60028054600160a060020a031916600160a060020a0392909216919091179055565b600160a060020a039081166000908152600760209081526040808320949093168252929092529020805460ff19166001179055565b61231780620003fa6000396000f3006060604052600436106101715763ffffffff60e060020a60003504166306fdde038114610176578063095ea7b3146102005780630ac5a67f146102365780630b5ba0821461026557806311ef8d4b14610278578063159218d2146102a957806318160ddd146102c85780631875aa22146102ed57806323b872dd1461030057806327e235e314610328578063313ce567146103635780633c8a321c1461038c5780633eaaf86b146103ab57806344df8e70146103be5780635109a95c146103d15780635f8aaa69146103f65780636766fafe146104095780636a5e26501461041c5780636af1fdf71461042f57806370a082311461045a57806373f425611461047957806374b26fa11461048c578063889d33241461051b57806395d89b4114610578578063a69df4b51461058b578063a9059cbb1461059e578063da08c5a3146105c0578063dd62ed3e146105df578063f53d0a8e14610604578063f7b0ed0e14610617578063f875c4211461063c575b600080fd5b341561018157600080fd5b61018961066b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101c55780820151838201526020016101ad565b50505050905090810190601f1680156101f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020b57600080fd5b610222600160a060020a03600435166024356106a2565b604051901515815260200160405180910390f35b341561024157600080fd5b610249610940565b604051600160a060020a03909116815260200160405180910390f35b341561027057600080fd5b61024961094f565b341561028357600080fd5b6102a7600160a060020a03600435166affffffffffffffffffffff6024351661095e565b005b34156102b457600080fd5b6102a7600160a060020a0360043516610b94565b34156102d357600080fd5b6102db610bf5565b60405190815260200160405180910390f35b34156102f857600080fd5b610249610c0b565b341561030b57600080fd5b610222600160a060020a0360043581169060243516604435610c1a565b341561033357600080fd5b610347600160a060020a0360043516610eba565b6040516001606060020a03909116815260200160405180910390f35b341561036e57600080fd5b610376610ed5565b60405160ff909116815260200160405180910390f35b341561039757600080fd5b6102a7600160a060020a0360043516610eda565b34156103b657600080fd5b610347610f3b565b34156103c957600080fd5b6102a7610f51565b34156103dc57600080fd5b6102a7600160a060020a03600435811690602435166111c1565b341561040157600080fd5b610249611201565b341561041457600080fd5b6102a7611210565b341561042757600080fd5b610222611261565b341561043a57600080fd5b6102a7600160a060020a03600435166001606060020a0360243516611271565b341561046557600080fd5b6102db600160a060020a036004351661156c565b341561048457600080fd5b610222611614565b341561049757600080fd5b6102a760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061162495505050505050565b341561052657600080fd5b6102a760048035600160a060020a031690604460248035908101908301358060208082020160405190810160405280939291908181526020018383602002808284375094965061174b95505050505050565b341561058357600080fd5b6101896117ca565b341561059657600080fd5b6102a7611801565b34156105a957600080fd5b610222600160a060020a0360043516602435611885565b34156105cb57600080fd5b6102a7600160a060020a0360043516611b1a565b34156105ea57600080fd5b6102db600160a060020a0360043581169060243516611b7b565b341561060f57600080fd5b610249611bb1565b341561062257600080fd5b610222600160a060020a0360043581169060243516611bc0565b341561064757600080fd5b6102a7600160a060020a03600435166affffffffffffffffffffff60243516611be0565b60408051908101604052600c81527f556e696c6f7420746f6b656e0000000000000000000000000000000000000000602082015281565b60035460009033908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f457600080fd5b6102c65a03f1151561070557600080fd5b50505060405180519050600160a060020a0316141561078c57600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561076657600080fd5b6102c65a03f1151561077757600080fd5b50505060405180519050151561078c57600080fd5b60065460a060020a900460ff16806108185750600654600160a060020a0316158015906108185750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156107fc57600080fd5b6102c65a03f1151561080d57600080fd5b505050604051805190505b806109225750600454600160a060020a0316158015906109225750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561088c57600080fd5b6102c65a03f1151561089d57600080fd5b50505060405180519050806109225750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561090657600080fd5b6102c65a03f1151561091757600080fd5b505050604051805190505b151561092d57600080fd5b6109378585611e19565b95945050505050565b600554600160a060020a031681565b600654600160a060020a031681565b60065460a860020a900460ff161561097557600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156109ce57600080fd5b6102c65a03f115156109df57600080fd5b5050506040518051905080610a02575060025432600160a060020a039081169116145b1515610a0d57600080fd5b6006546affffffffffffffffffffff821690600160a060020a031663d6aab0156000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a6457600080fd5b6102c65a03f11515610a7557600080fd5b505050604051805190506affffffffffffffffffffff1610151515610a9957600080fd5b600654600160a060020a0316634db3eef88260405160e060020a63ffffffff84160281526affffffffffffffffffffff9091166004820152602401600060405180830381600087803b1515610aed57600080fd5b6102c65a03f11515610afe57600080fd5b505050600160a060020a038281166000818152602081905260409081902080546bffffffffffffffffffffffff1981166affffffffffffffffffffff87166001606060020a0392831681019092161790915533909316927f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb3691516001606060020a03909116815260200160405180910390a35050565b60025432600160a060020a03908116911614610baf57600080fd5b60065460a860020a900460ff1615610bc657600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a90046001606060020a031690565b600454600160a060020a031681565b60035460009084908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c6c57600080fd5b6102c65a03f11515610c7d57600080fd5b50505060405180519050600160a060020a03161415610d0457600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610cde57600080fd5b6102c65a03f11515610cef57600080fd5b505050604051805190501515610d0457600080fd5b60065460a060020a900460ff1680610d905750600654600160a060020a031615801590610d905750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d7457600080fd5b6102c65a03f11515610d8557600080fd5b505050604051805190505b80610e9a5750600454600160a060020a031615801590610e9a5750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610e0457600080fd5b6102c65a03f11515610e1557600080fd5b5050506040518051905080610e9a5750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610e7e57600080fd5b6102c65a03f11515610e8f57600080fd5b505050604051805190505b1515610ea557600080fd5b610eb0868686611ea1565b9695505050505050565b6000602081905290815260409020546001606060020a031681565b601281565b60025432600160a060020a03908116911614610ef557600080fd5b60065460a860020a900460ff1615610f0c57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a90046001606060020a031681565b60025460009032600160a060020a03908116911614610f6f57600080fd5b600654600160a060020a0316637ee55c976000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fb757600080fd5b6102c65a03f11515610fc857600080fd5b5050506040518051159050610fdc57600080fd5b600654600160a060020a0316638250ea7d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561102457600080fd5b6102c65a03f1151561103557600080fd5b50505060405180516006546affffffffffffffffffffff9091169150600160a060020a031663d6aab0156000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561109657600080fd5b6102c65a03f115156110a757600080fd5b50505060405180516006546affffffffffffffffffffff9091169150600160a060020a031663026b1d5f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561110857600080fd5b6102c65a03f1151561111957600080fd5b50505060405180516002805493909101939093016001606060020a0360a060020a808504821683900390911602600160a060020a03909316929092179092556006805475ff000000000000000000000000000000000000000000191660a860020a17905591507f59150ca680a8e022464c7b4f5317dc2a06d8d1059d9f63558f0b1512160ac8d89050816040516001606060020a03909116815260200160405180910390a150565b60025432600160a060020a039081169116146111dc57600080fd5b60065460a860020a900460ff16156111f357600080fd5b6111fd828261200c565b5050565b600354600160a060020a031681565b60025432600160a060020a0390811691161461122b57600080fd5b60065460a860020a900460ff161561124257600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff19169055565b60065460a060020a900460ff1681565b60065460009060a860020a900460ff161561128b57600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112e457600080fd5b6102c65a03f115156112f557600080fd5b50505060405180519050151561130a57600080fd5b600654600160a060020a0316637ee55c976000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561135257600080fd5b6102c65a03f1151561136357600080fd5b50505060405180519050151561137857600080fd5b6006546001606060020a03831690600160a060020a031663026b1d5f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113cb57600080fd5b6102c65a03f115156113dc57600080fd5b505050604051805190506001606060020a0316101515156113fc57600080fd5b600654600160a060020a03166313e33fb68360006040516020015260405160e060020a63ffffffff84160281526001606060020a039091166004820152602401602060405180830381600087803b151561145557600080fd5b6102c65a03f1151561146657600080fd5b5050506040518051600654909250600160a060020a03169050638b4e79c28360405160e060020a63ffffffff84160281526001606060020a039091166004820152602401600060405180830381600087803b15156114c357600080fd5b6102c65a03f115156114d457600080fd5b505050600160a060020a038084166000818152602081905260409081902080546001606060020a038082166affffffffffffffffffffff8816890101166bffffffffffffffffffffffff1990911617905533909216917f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb36908590516001606060020a03909116815260200160405180910390a3505050565b60006115778261212e565b60035490915061159090600160a060020a031683612152565b151561160f57600354600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156115ef57600080fd5b6102c65a03f1151561160057600080fd5b50505060405180519050810190505b919050565b60065460a860020a900460ff1681565b60065460009060a860020a900460ff161561163e57600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561169757600080fd5b6102c65a03f115156116a857600080fd5b50505060405180519050806116cb575060025432600160a060020a039081169116145b15156116d657600080fd5b610100835111156116e657600080fd5b81518351146116f457600080fd5b5060005b82518160ff1610156117465761173e838260ff168151811061171657fe5b90602001906020020151838360ff168151811061172f57fe5b90602001906020020151611be0565b6001016116f8565b505050565b60025460009032600160a060020a0390811691161461176957600080fd5b60065460a860020a900460ff161561178057600080fd5b6101008251111561179057600080fd5b5060005b81518160ff161015611746576117c283838360ff16815181106117b357fe5b9060200190602002015161200c565b600101611794565b60408051908101604052600481527f554e495400000000000000000000000000000000000000000000000000000000602082015281565b60065460a060020a900460ff161561181857600080fd5b60025432600160a060020a0390811691161461183357600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b60035460009033908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118d757600080fd5b6102c65a03f115156118e857600080fd5b50505060405180519050600160a060020a0316141561196f57600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561194957600080fd5b6102c65a03f1151561195a57600080fd5b50505060405180519050151561196f57600080fd5b60065460a060020a900460ff16806119fb5750600654600160a060020a0316158015906119fb5750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119df57600080fd5b6102c65a03f115156119f057600080fd5b505050604051805190505b80611b055750600454600160a060020a031615801590611b055750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a6f57600080fd5b6102c65a03f11515611a8057600080fd5b5050506040518051905080611b055750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ae957600080fd5b6102c65a03f11515611afa57600080fd5b505050604051805190505b1515611b1057600080fd5b6109378585612181565b60025432600160a060020a03908116911614611b3557600080fd5b60065460a860020a900460ff1615611b4c57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038083166000908152600160209081526040808320938516835292905220546001606060020a03165b92915050565b600254600160a060020a031681565b600760209081526000928352604080842090915290825290205460ff1681565b60065460a860020a900460ff1615611bf757600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611c5057600080fd5b6102c65a03f11515611c6157600080fd5b5050506040518051905080611c84575060025432600160a060020a039081169116145b1515611c8f57600080fd5b6006546affffffffffffffffffffff821690600160a060020a0316638250ea7d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ce657600080fd5b6102c65a03f11515611cf757600080fd5b505050604051805190506affffffffffffffffffffff1610151515611d1b57600080fd5b600654600160a060020a03166377a282258260405160e060020a63ffffffff84160281526affffffffffffffffffffff9091166004820152602401600060405180830381600087803b1515611d6f57600080fd5b6102c65a03f11515611d8057600080fd5b505050600160a060020a038083166000818152602081905260409081902080546001606060020a038082166affffffffffffffffffffff881601166bffffffffffffffffffffffff1990911617905533909216917f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb36908490516affffffffffffffffffffff909116815260200160405180910390a35050565b33600160a060020a0390811660008181526001602090815260408083209487168084529490915280822080546bffffffffffffffffffffffff19166001606060020a038716179055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600160a060020a0383166000908152602081905260408120546001606060020a0316829010801590611f035750600160a060020a03808516600090815260016020908152604080832033909416835292905220546001606060020a0316829010155b8015611f0f5750600082115b8015611f3d5750600160a060020a0383166000908152602081905260409020546001606060020a0316828101115b1561200157600160a060020a0384811660008181526020818152604080832080546bffffffffffffffffffffffff198082166001606060020a039283168b9003831617909255600184528285203388168652845282852080548084169083168b90038316179055958916808552928490529281902080549384169386168801909516929092179093557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001612005565b5060005b9392505050565b60006120188383612152565b15156117465782600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561207557600080fd5b6102c65a03f1151561208657600080fd5b5050506040518051600160a060020a038416600090815260208190526040902080546001606060020a038082168401166bffffffffffffffffffffffff1990911617905591506120d890508383612287565b82600160a060020a031682600160a060020a03167fee59b52394ea9c1c9633ad32e72680306fdbaea38a34ae988cc90948f99f533a836040516001606060020a03909116815260200160405180910390a3505050565b600160a060020a03166000908152602081905260409020546001606060020a031690565b600160a060020a0380821660009081526007602090815260408083209386168352929052205460ff1692915050565b600160a060020a0333166000908152602081905260408120546001606060020a03168290108015906121b35750600082115b80156121e15750600160a060020a0383166000908152602081905260409020546001606060020a0316828101115b1561227f57600160a060020a0333811660008181526020819052604080822080546001606060020a0380821689900381166bffffffffffffffffffffffff199283161790925594881680845292829020805480831689019092169190951617909355917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001611bab565b506000611bab565b600160a060020a039081166000908152600760209081526040808320949093168252929092529020805460ff19166001179055565b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582042c85132247b322ebf265aae5169659b063c68f0d6a0e65eec415f3e3ef7c62f0029000000000000000000000000378356e2391cbaccb1cb11d9f7b1fe6b244819f1

Deployed Bytecode

0x6060604052600436106101715763ffffffff60e060020a60003504166306fdde038114610176578063095ea7b3146102005780630ac5a67f146102365780630b5ba0821461026557806311ef8d4b14610278578063159218d2146102a957806318160ddd146102c85780631875aa22146102ed57806323b872dd1461030057806327e235e314610328578063313ce567146103635780633c8a321c1461038c5780633eaaf86b146103ab57806344df8e70146103be5780635109a95c146103d15780635f8aaa69146103f65780636766fafe146104095780636a5e26501461041c5780636af1fdf71461042f57806370a082311461045a57806373f425611461047957806374b26fa11461048c578063889d33241461051b57806395d89b4114610578578063a69df4b51461058b578063a9059cbb1461059e578063da08c5a3146105c0578063dd62ed3e146105df578063f53d0a8e14610604578063f7b0ed0e14610617578063f875c4211461063c575b600080fd5b341561018157600080fd5b61018961066b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101c55780820151838201526020016101ad565b50505050905090810190601f1680156101f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020b57600080fd5b610222600160a060020a03600435166024356106a2565b604051901515815260200160405180910390f35b341561024157600080fd5b610249610940565b604051600160a060020a03909116815260200160405180910390f35b341561027057600080fd5b61024961094f565b341561028357600080fd5b6102a7600160a060020a03600435166affffffffffffffffffffff6024351661095e565b005b34156102b457600080fd5b6102a7600160a060020a0360043516610b94565b34156102d357600080fd5b6102db610bf5565b60405190815260200160405180910390f35b34156102f857600080fd5b610249610c0b565b341561030b57600080fd5b610222600160a060020a0360043581169060243516604435610c1a565b341561033357600080fd5b610347600160a060020a0360043516610eba565b6040516001606060020a03909116815260200160405180910390f35b341561036e57600080fd5b610376610ed5565b60405160ff909116815260200160405180910390f35b341561039757600080fd5b6102a7600160a060020a0360043516610eda565b34156103b657600080fd5b610347610f3b565b34156103c957600080fd5b6102a7610f51565b34156103dc57600080fd5b6102a7600160a060020a03600435811690602435166111c1565b341561040157600080fd5b610249611201565b341561041457600080fd5b6102a7611210565b341561042757600080fd5b610222611261565b341561043a57600080fd5b6102a7600160a060020a03600435166001606060020a0360243516611271565b341561046557600080fd5b6102db600160a060020a036004351661156c565b341561048457600080fd5b610222611614565b341561049757600080fd5b6102a760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061162495505050505050565b341561052657600080fd5b6102a760048035600160a060020a031690604460248035908101908301358060208082020160405190810160405280939291908181526020018383602002808284375094965061174b95505050505050565b341561058357600080fd5b6101896117ca565b341561059657600080fd5b6102a7611801565b34156105a957600080fd5b610222600160a060020a0360043516602435611885565b34156105cb57600080fd5b6102a7600160a060020a0360043516611b1a565b34156105ea57600080fd5b6102db600160a060020a0360043581169060243516611b7b565b341561060f57600080fd5b610249611bb1565b341561062257600080fd5b610222600160a060020a0360043581169060243516611bc0565b341561064757600080fd5b6102a7600160a060020a03600435166affffffffffffffffffffff60243516611be0565b60408051908101604052600c81527f556e696c6f7420746f6b656e0000000000000000000000000000000000000000602082015281565b60035460009033908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f457600080fd5b6102c65a03f1151561070557600080fd5b50505060405180519050600160a060020a0316141561078c57600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561076657600080fd5b6102c65a03f1151561077757600080fd5b50505060405180519050151561078c57600080fd5b60065460a060020a900460ff16806108185750600654600160a060020a0316158015906108185750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156107fc57600080fd5b6102c65a03f1151561080d57600080fd5b505050604051805190505b806109225750600454600160a060020a0316158015906109225750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561088c57600080fd5b6102c65a03f1151561089d57600080fd5b50505060405180519050806109225750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561090657600080fd5b6102c65a03f1151561091757600080fd5b505050604051805190505b151561092d57600080fd5b6109378585611e19565b95945050505050565b600554600160a060020a031681565b600654600160a060020a031681565b60065460a860020a900460ff161561097557600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156109ce57600080fd5b6102c65a03f115156109df57600080fd5b5050506040518051905080610a02575060025432600160a060020a039081169116145b1515610a0d57600080fd5b6006546affffffffffffffffffffff821690600160a060020a031663d6aab0156000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610a6457600080fd5b6102c65a03f11515610a7557600080fd5b505050604051805190506affffffffffffffffffffff1610151515610a9957600080fd5b600654600160a060020a0316634db3eef88260405160e060020a63ffffffff84160281526affffffffffffffffffffff9091166004820152602401600060405180830381600087803b1515610aed57600080fd5b6102c65a03f11515610afe57600080fd5b505050600160a060020a038281166000818152602081905260409081902080546bffffffffffffffffffffffff1981166affffffffffffffffffffff87166001606060020a0392831681019092161790915533909316927f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb3691516001606060020a03909116815260200160405180910390a35050565b60025432600160a060020a03908116911614610baf57600080fd5b60065460a860020a900460ff1615610bc657600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a90046001606060020a031690565b600454600160a060020a031681565b60035460009084908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c6c57600080fd5b6102c65a03f11515610c7d57600080fd5b50505060405180519050600160a060020a03161415610d0457600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610cde57600080fd5b6102c65a03f11515610cef57600080fd5b505050604051805190501515610d0457600080fd5b60065460a060020a900460ff1680610d905750600654600160a060020a031615801590610d905750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d7457600080fd5b6102c65a03f11515610d8557600080fd5b505050604051805190505b80610e9a5750600454600160a060020a031615801590610e9a5750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610e0457600080fd5b6102c65a03f11515610e1557600080fd5b5050506040518051905080610e9a5750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610e7e57600080fd5b6102c65a03f11515610e8f57600080fd5b505050604051805190505b1515610ea557600080fd5b610eb0868686611ea1565b9695505050505050565b6000602081905290815260409020546001606060020a031681565b601281565b60025432600160a060020a03908116911614610ef557600080fd5b60065460a860020a900460ff1615610f0c57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a90046001606060020a031681565b60025460009032600160a060020a03908116911614610f6f57600080fd5b600654600160a060020a0316637ee55c976000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fb757600080fd5b6102c65a03f11515610fc857600080fd5b5050506040518051159050610fdc57600080fd5b600654600160a060020a0316638250ea7d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561102457600080fd5b6102c65a03f1151561103557600080fd5b50505060405180516006546affffffffffffffffffffff9091169150600160a060020a031663d6aab0156000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561109657600080fd5b6102c65a03f115156110a757600080fd5b50505060405180516006546affffffffffffffffffffff9091169150600160a060020a031663026b1d5f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561110857600080fd5b6102c65a03f1151561111957600080fd5b50505060405180516002805493909101939093016001606060020a0360a060020a808504821683900390911602600160a060020a03909316929092179092556006805475ff000000000000000000000000000000000000000000191660a860020a17905591507f59150ca680a8e022464c7b4f5317dc2a06d8d1059d9f63558f0b1512160ac8d89050816040516001606060020a03909116815260200160405180910390a150565b60025432600160a060020a039081169116146111dc57600080fd5b60065460a860020a900460ff16156111f357600080fd5b6111fd828261200c565b5050565b600354600160a060020a031681565b60025432600160a060020a0390811691161461122b57600080fd5b60065460a860020a900460ff161561124257600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff19169055565b60065460a060020a900460ff1681565b60065460009060a860020a900460ff161561128b57600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156112e457600080fd5b6102c65a03f115156112f557600080fd5b50505060405180519050151561130a57600080fd5b600654600160a060020a0316637ee55c976000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561135257600080fd5b6102c65a03f1151561136357600080fd5b50505060405180519050151561137857600080fd5b6006546001606060020a03831690600160a060020a031663026b1d5f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113cb57600080fd5b6102c65a03f115156113dc57600080fd5b505050604051805190506001606060020a0316101515156113fc57600080fd5b600654600160a060020a03166313e33fb68360006040516020015260405160e060020a63ffffffff84160281526001606060020a039091166004820152602401602060405180830381600087803b151561145557600080fd5b6102c65a03f1151561146657600080fd5b5050506040518051600654909250600160a060020a03169050638b4e79c28360405160e060020a63ffffffff84160281526001606060020a039091166004820152602401600060405180830381600087803b15156114c357600080fd5b6102c65a03f115156114d457600080fd5b505050600160a060020a038084166000818152602081905260409081902080546001606060020a038082166affffffffffffffffffffff8816890101166bffffffffffffffffffffffff1990911617905533909216917f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb36908590516001606060020a03909116815260200160405180910390a3505050565b60006115778261212e565b60035490915061159090600160a060020a031683612152565b151561160f57600354600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156115ef57600080fd5b6102c65a03f1151561160057600080fd5b50505060405180519050810190505b919050565b60065460a860020a900460ff1681565b60065460009060a860020a900460ff161561163e57600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561169757600080fd5b6102c65a03f115156116a857600080fd5b50505060405180519050806116cb575060025432600160a060020a039081169116145b15156116d657600080fd5b610100835111156116e657600080fd5b81518351146116f457600080fd5b5060005b82518160ff1610156117465761173e838260ff168151811061171657fe5b90602001906020020151838360ff168151811061172f57fe5b90602001906020020151611be0565b6001016116f8565b505050565b60025460009032600160a060020a0390811691161461176957600080fd5b60065460a860020a900460ff161561178057600080fd5b6101008251111561179057600080fd5b5060005b81518160ff161015611746576117c283838360ff16815181106117b357fe5b9060200190602002015161200c565b600101611794565b60408051908101604052600481527f554e495400000000000000000000000000000000000000000000000000000000602082015281565b60065460a060020a900460ff161561181857600080fd5b60025432600160a060020a0390811691161461183357600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b60035460009033908490600160a060020a03808416911663d1e9822c85604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118d757600080fd5b6102c65a03f115156118e857600080fd5b50505060405180519050600160a060020a0316141561196f57600654600160a060020a03166373086e586000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561194957600080fd5b6102c65a03f1151561195a57600080fd5b50505060405180519050151561196f57600080fd5b60065460a060020a900460ff16806119fb5750600654600160a060020a0316158015906119fb5750600654600160a060020a03166323c731f56000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156119df57600080fd5b6102c65a03f115156119f057600080fd5b505050604051805190505b80611b055750600454600160a060020a031615801590611b055750600454600160a060020a031663fa33bcf38360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a6f57600080fd5b6102c65a03f11515611a8057600080fd5b5050506040518051905080611b055750600454600160a060020a031663fa33bcf38260006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611ae957600080fd5b6102c65a03f11515611afa57600080fd5b505050604051805190505b1515611b1057600080fd5b6109378585612181565b60025432600160a060020a03908116911614611b3557600080fd5b60065460a860020a900460ff1615611b4c57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038083166000908152600160209081526040808320938516835292905220546001606060020a03165b92915050565b600254600160a060020a031681565b600760209081526000928352604080842090915290825290205460ff1681565b60065460a860020a900460ff1615611bf757600080fd5b600554600160a060020a031663fa33bcf33360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611c5057600080fd5b6102c65a03f11515611c6157600080fd5b5050506040518051905080611c84575060025432600160a060020a039081169116145b1515611c8f57600080fd5b6006546affffffffffffffffffffff821690600160a060020a0316638250ea7d6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ce657600080fd5b6102c65a03f11515611cf757600080fd5b505050604051805190506affffffffffffffffffffff1610151515611d1b57600080fd5b600654600160a060020a03166377a282258260405160e060020a63ffffffff84160281526affffffffffffffffffffff9091166004820152602401600060405180830381600087803b1515611d6f57600080fd5b6102c65a03f11515611d8057600080fd5b505050600160a060020a038083166000818152602081905260409081902080546001606060020a038082166affffffffffffffffffffff881601166bffffffffffffffffffffffff1990911617905533909216917f8e1a3ecc96dbc3c1e2179fe0513a940e5a68863708af619cce4a0f654cd5cb36908490516affffffffffffffffffffff909116815260200160405180910390a35050565b33600160a060020a0390811660008181526001602090815260408083209487168084529490915280822080546bffffffffffffffffffffffff19166001606060020a038716179055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600160a060020a0383166000908152602081905260408120546001606060020a0316829010801590611f035750600160a060020a03808516600090815260016020908152604080832033909416835292905220546001606060020a0316829010155b8015611f0f5750600082115b8015611f3d5750600160a060020a0383166000908152602081905260409020546001606060020a0316828101115b1561200157600160a060020a0384811660008181526020818152604080832080546bffffffffffffffffffffffff198082166001606060020a039283168b9003831617909255600184528285203388168652845282852080548084169083168b90038316179055958916808552928490529281902080549384169386168801909516929092179093557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001612005565b5060005b9392505050565b60006120188383612152565b15156117465782600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561207557600080fd5b6102c65a03f1151561208657600080fd5b5050506040518051600160a060020a038416600090815260208190526040902080546001606060020a038082168401166bffffffffffffffffffffffff1990911617905591506120d890508383612287565b82600160a060020a031682600160a060020a03167fee59b52394ea9c1c9633ad32e72680306fdbaea38a34ae988cc90948f99f533a836040516001606060020a03909116815260200160405180910390a3505050565b600160a060020a03166000908152602081905260409020546001606060020a031690565b600160a060020a0380821660009081526007602090815260408083209386168352929052205460ff1692915050565b600160a060020a0333166000908152602081905260408120546001606060020a03168290108015906121b35750600082115b80156121e15750600160a060020a0383166000908152602081905260409020546001606060020a0316828101115b1561227f57600160a060020a0333811660008181526020819052604080822080546001606060020a0380821689900381166bffffffffffffffffffffffff199283161790925594881680845292829020805480831689019092169190951617909355917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001611bab565b506000611bab565b600160a060020a039081166000908152600760209081526040808320949093168252929092529020805460ff19166001179055565b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582042c85132247b322ebf265aae5169659b063c68f0d6a0e65eec415f3e3ef7c62f0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000378356e2391cbaccb1cb11d9f7b1fe6b244819f1

-----Decoded View---------------
Arg [0] : _sourceToken (address): 0x378356e2391cBaccB1cB11d9F7B1fe6B244819f1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000378356e2391cbaccb1cb11d9f7b1fe6b244819f1


Swarm Source

bzzr://42c85132247b322ebf265aae5169659b063c68f0d6a0e65eec415f3e3ef7c62f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.