ETH Price: $2,681.50 (-1.18%)

Contract

0x3fB8a2213C876f86c1aECde0eA40908c49298c21
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions and > 10 Token Transfers found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
152730252022-08-04 1:44:28930 days ago1659577468
0x3fB8a221...c49298c21
0.5 ETH
152730252022-08-04 1:44:28930 days ago1659577468
0x3fB8a221...c49298c21
0.5 ETH
152730042022-08-04 1:40:29930 days ago1659577229
0x3fB8a221...c49298c21
0.5 ETH
152730042022-08-04 1:40:29930 days ago1659577229
0x3fB8a221...c49298c21
0.5 ETH
152729932022-08-04 1:37:36930 days ago1659577056
0x3fB8a221...c49298c21
0.5 ETH
152729932022-08-04 1:37:36930 days ago1659577056
0x3fB8a221...c49298c21
0.5 ETH
111445132020-10-28 10:05:111574 days ago1603879511
0x3fB8a221...c49298c21
0.00215671 ETH
111445132020-10-28 10:05:111574 days ago1603879511
0x3fB8a221...c49298c21
0.00215671 ETH
111297122020-10-26 3:45:521576 days ago1603683952
0x3fB8a221...c49298c21
0.00209409 ETH
111297122020-10-26 3:45:521576 days ago1603683952
0x3fB8a221...c49298c21
0.00209409 ETH
108269992020-09-09 10:30:491623 days ago1599647449
0x3fB8a221...c49298c21
0.0070105 ETH
108269992020-09-09 10:30:491623 days ago1599647449
0x3fB8a221...c49298c21
0.0070105 ETH
108269922020-09-09 10:29:261623 days ago1599647366
0x3fB8a221...c49298c21
0.004996 ETH
108269922020-09-09 10:29:261623 days ago1599647366
0x3fB8a221...c49298c21
0.004996 ETH
104055172020-07-06 11:05:491688 days ago1594033549
0x3fB8a221...c49298c21
0.133 ETH
104055172020-07-06 11:05:491688 days ago1594033549
0x3fB8a221...c49298c21
0.133 ETH
104037952020-07-06 4:43:571688 days ago1594010637
0x3fB8a221...c49298c21
0.00199086 ETH
104037952020-07-06 4:43:571688 days ago1594010637
0x3fB8a221...c49298c21
0.00199086 ETH
104037282020-07-06 4:29:181688 days ago1594009758
0x3fB8a221...c49298c21
0.02612944 ETH
104037282020-07-06 4:29:181688 days ago1594009758
0x3fB8a221...c49298c21
0.02612944 ETH
104036822020-07-06 4:20:121688 days ago1594009212
0x3fB8a221...c49298c21
0.01088417 ETH
104036822020-07-06 4:20:121688 days ago1594009212
0x3fB8a221...c49298c21
0.01088417 ETH
104036822020-07-06 4:20:121688 days ago1594009212
0x3fB8a221...c49298c21
0.01088417 ETH
104036822020-07-06 4:20:121688 days ago1594009212
0x3fB8a221...c49298c21
0.01088417 ETH
104035752020-07-06 3:55:261688 days ago1594007726
0x3fB8a221...c49298c21
0.17210457 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KyberWethReserve

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-03
*/

/**
 *Submitted for verification at Etherscan.io on 2018-09-13
*/

pragma solidity 0.4.18;

// File: contracts/ERC20Interface.sol

// https://github.com/ethereum/EIPs/issues/20
interface ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf(address _owner) public view 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 view returns (uint remaining);
    function decimals() public view returns(uint digits);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

// File: contracts/KyberReserveInterface.sol

/// @title Kyber Reserve contract
interface KyberReserveInterface {

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool);

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint);
}

// File: contracts/Utils.sol

/// @title Kyber constants contract
contract Utils {

    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    uint  constant internal PRECISION = (10**18);
    uint  constant internal MAX_QTY   = (10**28); // 10B tokens
    uint  constant internal MAX_RATE  = (PRECISION * 10**6); // up to 1M tokens per ETH
    uint  constant internal MAX_DECIMALS = 18;
    uint  constant internal ETH_DECIMALS = 18;
    mapping(address=>uint) internal decimals;

    function setDecimals(ERC20 token) internal {
        if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS;
        else decimals[token] = token.decimals();
    }

    function getDecimals(ERC20 token) internal view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access
        uint tokenDecimals = decimals[token];
        // technically, there might be token with decimals 0
        // moreover, very possible that old tokens have decimals 0
        // these tokens will just have higher gas fees.
        if(tokenDecimals == 0) return token.decimals();

        return tokenDecimals;
    }

    function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(srcQty <= MAX_QTY);
        require(rate <= MAX_RATE);

        if (dstDecimals >= srcDecimals) {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION;
        } else {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals)));
        }
    }

    function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(dstQty <= MAX_QTY);
        require(rate <= MAX_RATE);
        
        //source quantity is rounded up. to avoid dest quantity being too low.
        uint numerator;
        uint denominator;
        if (srcDecimals >= dstDecimals) {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals)));
            denominator = rate;
        } else {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty);
            denominator = (rate * (10**(dstDecimals - srcDecimals)));
        }
        return (numerator + denominator - 1) / denominator; //avoid rounding down errors
    }
}

// File: contracts/Utils2.sol

contract Utils2 is Utils {

    /// @dev get the balance of a user.
    /// @param token The token type
    /// @return The balance
    function getBalance(ERC20 token, address user) public view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS)
            return user.balance;
        else
            return token.balanceOf(user);
    }

    function getDecimalsSafe(ERC20 token) internal returns(uint) {

        if (decimals[token] == 0) {
            setDecimals(token);
        }

        return decimals[token];
    }

    function calcDestAmount(ERC20 src, ERC20 dest, uint srcAmount, uint rate) internal view returns(uint) {
        return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate);
    }

    function calcSrcAmount(ERC20 src, ERC20 dest, uint destAmount, uint rate) internal view returns(uint) {
        return calcSrcQty(destAmount, getDecimals(src), getDecimals(dest), rate);
    }

    function calcRateFromQty(uint srcAmount, uint destAmount, uint srcDecimals, uint dstDecimals)
        internal pure returns(uint)
    {
        require(srcAmount <= MAX_QTY);
        require(destAmount <= MAX_QTY);

        if (dstDecimals >= srcDecimals) {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            return (destAmount * PRECISION / ((10 ** (dstDecimals - srcDecimals)) * srcAmount));
        } else {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            return (destAmount * PRECISION * (10 ** (srcDecimals - dstDecimals)) / srcAmount);
        }
    }
}

// File: contracts/PermissionGroups.sol

contract PermissionGroups {

    address public admin;
    address public pendingAdmin;
    mapping(address=>bool) internal operators;
    mapping(address=>bool) internal alerters;
    address[] internal operatorsGroup;
    address[] internal alertersGroup;
    uint constant internal MAX_GROUP_SIZE = 50;

    function PermissionGroups() public {
        admin = msg.sender;
    }

    modifier onlyAdmin() {
        require(msg.sender == admin);
        _;
    }

    modifier onlyOperator() {
        require(operators[msg.sender]);
        _;
    }

    modifier onlyAlerter() {
        require(alerters[msg.sender]);
        _;
    }

    function getOperators () external view returns(address[]) {
        return operatorsGroup;
    }

    function getAlerters () external view returns(address[]) {
        return alertersGroup;
    }

    event TransferAdminPending(address pendingAdmin);

    /**
     * @dev Allows the current admin to set the pendingAdmin address.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdmin(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(pendingAdmin);
        pendingAdmin = newAdmin;
    }

    /**
     * @dev Allows the current admin to set the admin in one tx. Useful initial deployment.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdminQuickly(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(newAdmin);
        AdminClaimed(newAdmin, admin);
        admin = newAdmin;
    }

    event AdminClaimed( address newAdmin, address previousAdmin);

    /**
     * @dev Allows the pendingAdmin address to finalize the change admin process.
     */
    function claimAdmin() public {
        require(pendingAdmin == msg.sender);
        AdminClaimed(pendingAdmin, admin);
        admin = pendingAdmin;
        pendingAdmin = address(0);
    }

    event AlerterAdded (address newAlerter, bool isAdd);

    function addAlerter(address newAlerter) public onlyAdmin {
        require(!alerters[newAlerter]); // prevent duplicates.
        require(alertersGroup.length < MAX_GROUP_SIZE);

        AlerterAdded(newAlerter, true);
        alerters[newAlerter] = true;
        alertersGroup.push(newAlerter);
    }

    function removeAlerter (address alerter) public onlyAdmin {
        require(alerters[alerter]);
        alerters[alerter] = false;

        for (uint i = 0; i < alertersGroup.length; ++i) {
            if (alertersGroup[i] == alerter) {
                alertersGroup[i] = alertersGroup[alertersGroup.length - 1];
                alertersGroup.length--;
                AlerterAdded(alerter, false);
                break;
            }
        }
    }

    event OperatorAdded(address newOperator, bool isAdd);

    function addOperator(address newOperator) public onlyAdmin {
        require(!operators[newOperator]); // prevent duplicates.
        require(operatorsGroup.length < MAX_GROUP_SIZE);

        OperatorAdded(newOperator, true);
        operators[newOperator] = true;
        operatorsGroup.push(newOperator);
    }

    function removeOperator (address operator) public onlyAdmin {
        require(operators[operator]);
        operators[operator] = false;

        for (uint i = 0; i < operatorsGroup.length; ++i) {
            if (operatorsGroup[i] == operator) {
                operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1];
                operatorsGroup.length -= 1;
                OperatorAdded(operator, false);
                break;
            }
        }
    }
}

// File: contracts/Withdrawable.sol

/**
 * @title Contracts that should be able to recover tokens or ethers
 * @author Ilan Doron
 * @dev This allows to recover any tokens or Ethers received in a contract.
 * This will prevent any accidental loss of tokens.
 */
contract Withdrawable is PermissionGroups {

    event TokenWithdraw(ERC20 token, uint amount, address sendTo);

    /**
     * @dev Withdraw all ERC20 compatible tokens
     * @param token ERC20 The address of the token contract
     */
    function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin {
        require(token.transfer(sendTo, amount));
        TokenWithdraw(token, amount, sendTo);
    }

    event EtherWithdraw(uint amount, address sendTo);

    /**
     * @dev Withdraw Ethers
     */
    function withdrawEther(uint amount, address sendTo) external onlyAdmin {
        sendTo.transfer(amount);
        EtherWithdraw(amount, sendTo);
    }
}

// File: contracts/wethContracts/KyberWethReserve.sol

contract WethInterface is ERC20 {
    function deposit() public payable;
    function withdraw(uint) public;
}


contract KyberWethReserve is KyberReserveInterface, Withdrawable, Utils2 {

    uint constant internal COMMON_DECIMALS = 18;
    address public sanityRatesContract = 0;
    address public kyberNetwork;
    WethInterface public wethToken;
    bool public tradeEnabled;

    function KyberWethReserve(address _kyberNetwork, WethInterface _wethToken, address _admin) public {
        require(_admin != address(0));
        require(_kyberNetwork != address(0));
        require(_wethToken != address(0));
        require(getDecimals(_wethToken) == COMMON_DECIMALS);

        kyberNetwork = _kyberNetwork;
        wethToken = _wethToken;
        tradeEnabled = true;
        admin = _admin;
    }

    function() public payable {
        require(msg.sender == address(wethToken));
    }

    event TradeExecute(
        address indexed sender,
        address src,
        uint srcAmount,
        address destToken,
        uint destAmount,
        address destAddress
    );

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool)
    {

        require(tradeEnabled);
        require(msg.sender == kyberNetwork);

        require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate));

        return true;
    }

    event TradeEnabled(bool enable);

    function enableTrade() public onlyAdmin returns(bool) {
        tradeEnabled = true;
        TradeEnabled(true);

        return true;
    }

    function disableTrade() public onlyAlerter returns(bool) {
        tradeEnabled = false;
        TradeEnabled(false);

        return true;
    }

    event KyberNetworkSet(address kyberNetwork);

    function setKyberNetwork(address _kyberNetwork) public onlyAdmin {
        require(_kyberNetwork != address(0));

        kyberNetwork = _kyberNetwork;
        KyberNetworkSet(kyberNetwork);
    }

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint) {

        srcQty;
        blockNumber;

        if (!tradeEnabled) return 0;
        if ((wethToken != src) && (wethToken != dest)) return 0;
        if ((ETH_TOKEN_ADDRESS != src) && (ETH_TOKEN_ADDRESS != dest)) return 0;

        return 1 * PRECISION;
    }

    function doTrade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        internal
        returns(bool)
    {
        require((ETH_TOKEN_ADDRESS == srcToken) || (ETH_TOKEN_ADDRESS == destToken));
        require((wethToken == srcToken) || (wethToken == destToken));

        // can skip validation if done at kyber network level
        if (validate) {
            require(conversionRate > 0);
            if (srcToken == ETH_TOKEN_ADDRESS)
                require(msg.value == srcAmount);
            else
                require(msg.value == 0);
        }

        uint dstAmount = calcDstQty(srcAmount, COMMON_DECIMALS, COMMON_DECIMALS, conversionRate);
        require(dstAmount > 0); // sanity check

        if (srcToken == ETH_TOKEN_ADDRESS) {
            wethToken.deposit.value(srcAmount)();
            require(wethToken.transfer(destAddress, dstAmount));
        } else {
            require(srcToken.transferFrom(msg.sender, this, srcAmount));
            wethToken.withdraw(dstAmount);
            destAddress.transfer(dstAmount); 
        }

        TradeExecute(msg.sender, srcToken, srcAmount, destToken, dstAmount, destAddress);

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sanityRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wethToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"}],"name":"setKyberNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_wethToken","type":"address"},{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kyberNetwork","type":"address"}],"name":"KyberNetworkSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]

606060405260078054600160a060020a031916905534156200002057600080fd5b6040516060806200189b83398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a03908116919091179091559092508216151590506200007657600080fd5b600160a060020a03831615156200008c57600080fd5b600160a060020a0382161515620000a257600080fd5b6012620000bd836401000000006200158c6200012c82021704565b14620000c857600080fd5b60088054600160a060020a03948516600160a060020a0319918216179091556009805460a060020a60ff021994861690831617939093167401000000000000000000000000000000000000000017909255600080549190931691161790556200020f565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156200015f576012915062000209565b50600160a060020a038216600090815260066020526040902054801515620002055782600160a060020a031663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620001e157600080fd5b6102c65a03f11515620001f357600080fd5b50505060405180519050915062000209565b8091505b50919050565b61167c806200021f6000396000f3006060604052600436106101185763ffffffff60e060020a60003504166299d386811461013557806301a12fd31461015c578063267822471461017b57806327a099d8146101aa5780633ccdbb2814610210578063408ee7fe1461023957806347e6924f146102585780634b57b0be1461026b57806354a325a61461027e5780636940030f1461029d5780636cf69811146102b057806375829def146102dc57806377f50f97146102fb5780637acc86781461030e5780637c423f541461032d5780637cd44272146103405780639870d7fe1461037d578063ac8a584a1461039c578063b78b842d146103bb578063ce56c454146103ce578063d4fac45d146103f0578063d621e81314610415578063f851a44014610428575b60095433600160a060020a0390811691161461013357600080fd5b005b341561014057600080fd5b61014861043b565b604051901515815260200160405180910390f35b341561016757600080fd5b610133600160a060020a03600435166104b8565b341561018657600080fd5b61018e610628565b604051600160a060020a03909116815260200160405180910390f35b34156101b557600080fd5b6101bd610637565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101fc5780820151838201526020016101e4565b505050509050019250505060405180910390f35b341561021b57600080fd5b610133600160a060020a03600435811690602435906044351661069f565b341561024457600080fd5b610133600160a060020a0360043516610796565b341561026357600080fd5b61018e610892565b341561027657600080fd5b61018e6108a1565b341561028957600080fd5b610133600160a060020a03600435166108b0565b34156102a857600080fd5b610148610942565b610148600160a060020a03600435811690602435906044358116906064351660843560a43515156109c3565b34156102e757600080fd5b610133600160a060020a0360043516610a1f565b341561030657600080fd5b610133610aba565b341561031957600080fd5b610133600160a060020a0360043516610b54565b341561033857600080fd5b6101bd610c36565b341561034b57600080fd5b61036b600160a060020a0360043581169060243516604435606435610c9c565b60405190815260200160405180910390f35b341561038857600080fd5b610133600160a060020a0360043516610d5d565b34156103a757600080fd5b610133600160a060020a0360043516610e2d565b34156103c657600080fd5b61018e610f99565b34156103d957600080fd5b610133600435600160a060020a0360243516610fa8565b34156103fb57600080fd5b61036b600160a060020a036004358116906024351661103b565b341561042057600080fd5b6101486110ed565b341561043357600080fd5b61018e6110fd565b6000805433600160a060020a0390811691161461045757600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a1790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a039081169116146104d457600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156104fb57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106245781600160a060020a031660058281548110151561054057fe5b600091825260209091200154600160a060020a0316141561061c5760058054600019810190811061056d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061059357fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906105cf906000198301611533565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610624565b60010161051d565b5050565b600154600160a060020a031681565b61063f61155c565b600480548060200260200160405190810160405280929190818152602001828054801561069557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610677575b5050505050905090565b60005433600160a060020a039081169116146106ba57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071757600080fd5b6102c65a03f1151561072857600080fd5b50505060405180519050151561073d57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146107b157600080fd5b600160a060020a03811660009081526003602052604090205460ff16156107d757600080fd5b600554603290106107e757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016108668382611533565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600754600160a060020a031681565b600954600160a060020a031681565b60005433600160a060020a039081169116146108cb57600080fd5b600160a060020a03811615156108e057600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff16151561096957600080fd5b6009805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60095460009060a060020a900460ff1615156109de57600080fd5b60085433600160a060020a039081169116146109f957600080fd5b610a0787878787878761110c565b1515610a1257600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610a3a57600080fd5b600160a060020a0381161515610a4f57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610ad557600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610b6f57600080fd5b600160a060020a0381161515610b8457600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610c3e61155c565b600580548060200260200160405190810160405280929190818152602001828054801561069557602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610677575050505050905090565b60095460009060a060020a900460ff161515610cba57506000610d55565b600954600160a060020a03868116911614801590610ce65750600954600160a060020a03858116911614155b15610cf357506000610d55565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a03861614801590610d3d575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a03851614155b15610d4a57506000610d55565b50670de0b6b3a76400005b949350505050565b60005433600160a060020a03908116911614610d7857600080fd5b600160a060020a03811660009081526002602052604090205460ff1615610d9e57600080fd5b60045460329010610dae57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016108668382611533565b6000805433600160a060020a03908116911614610e4957600080fd5b600160a060020a03821660009081526002602052604090205460ff161515610e7057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106245781600160a060020a0316600482815481101515610eb557fe5b600091825260209091200154600160a060020a03161415610f9157600480546000198101908110610ee257fe5b60009182526020909120015460048054600160a060020a039092169183908110610f0857fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190610f449082611533565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610624565b600101610e92565b600854600160a060020a031681565b60005433600160a060020a03908116911614610fc357600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515610ff457600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156110735750600160a060020a038116316110e7565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156110ca57600080fd5b6102c65a03f115156110db57600080fd5b50505060405180519150505b92915050565b60095460a060020a900460ff1681565b600054600160a060020a031681565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a0389161480611156575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038716145b151561116157600080fd5b600954600160a060020a038981169116148061118a5750600954600160a060020a038781169116145b151561119557600080fd5b82156111e957600084116111a857600080fd5b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156111de573487146111d957600080fd5b6111e9565b34156111e957600080fd5b6111f687601280876114a2565b90506000811161120557600080fd5b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561130a57600954600160a060020a031663d0e30db0886040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561126957600080fd5b6125ee5a03f1151561127a57600080fd5b5050600954600160a060020a0316915063a9059cbb9050868360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112df57600080fd5b6102c65a03f115156112f057600080fd5b50505060405180519050151561130557600080fd5b611427565b87600160a060020a03166323b872dd33308a60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561137457600080fd5b6102c65a03f1151561138557600080fd5b50505060405180519050151561139a57600080fd5b600954600160a060020a0316632e1a7d4d8260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156113e257600080fd5b6102c65a03f115156113f357600080fd5b505050600160a060020a0385166108fc82150282604051600060405180830381858888f19350505050151561142757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de898989858a604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a2506001979650505050505050565b60006b204fce5e3e250261100000008511156114bd57600080fd5b69d3c21bcecceda10000008211156114d457600080fd5b83831061150757601284840311156114eb57600080fd5b670de0b6b3a7640000858302858503600a0a025b049050610d55565b6012838503111561151757600080fd5b828403600a0a670de0b6b3a7640000028286028115156114ff57fe5b8154818355818115116115575760008381526020902061155791810190830161156e565b505050565b60206040519081016040526000815290565b6104b591905b808211156115885760008155600101611574565b5090565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156115bd576012915061164a565b50600160a060020a0382166000908152600660205260409020548015156116465782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561162457600080fd5b6102c65a03f1151561163557600080fd5b50505060405180519050915061164a565b8091505b509190505600a165627a7a72305820e570054c53458f06521704bb92dc6ac441b6b891ca092d4a0414c0feedd2d27e00290000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54

Deployed Bytecode

0x6060604052600436106101185763ffffffff60e060020a60003504166299d386811461013557806301a12fd31461015c578063267822471461017b57806327a099d8146101aa5780633ccdbb2814610210578063408ee7fe1461023957806347e6924f146102585780634b57b0be1461026b57806354a325a61461027e5780636940030f1461029d5780636cf69811146102b057806375829def146102dc57806377f50f97146102fb5780637acc86781461030e5780637c423f541461032d5780637cd44272146103405780639870d7fe1461037d578063ac8a584a1461039c578063b78b842d146103bb578063ce56c454146103ce578063d4fac45d146103f0578063d621e81314610415578063f851a44014610428575b60095433600160a060020a0390811691161461013357600080fd5b005b341561014057600080fd5b61014861043b565b604051901515815260200160405180910390f35b341561016757600080fd5b610133600160a060020a03600435166104b8565b341561018657600080fd5b61018e610628565b604051600160a060020a03909116815260200160405180910390f35b34156101b557600080fd5b6101bd610637565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101fc5780820151838201526020016101e4565b505050509050019250505060405180910390f35b341561021b57600080fd5b610133600160a060020a03600435811690602435906044351661069f565b341561024457600080fd5b610133600160a060020a0360043516610796565b341561026357600080fd5b61018e610892565b341561027657600080fd5b61018e6108a1565b341561028957600080fd5b610133600160a060020a03600435166108b0565b34156102a857600080fd5b610148610942565b610148600160a060020a03600435811690602435906044358116906064351660843560a43515156109c3565b34156102e757600080fd5b610133600160a060020a0360043516610a1f565b341561030657600080fd5b610133610aba565b341561031957600080fd5b610133600160a060020a0360043516610b54565b341561033857600080fd5b6101bd610c36565b341561034b57600080fd5b61036b600160a060020a0360043581169060243516604435606435610c9c565b60405190815260200160405180910390f35b341561038857600080fd5b610133600160a060020a0360043516610d5d565b34156103a757600080fd5b610133600160a060020a0360043516610e2d565b34156103c657600080fd5b61018e610f99565b34156103d957600080fd5b610133600435600160a060020a0360243516610fa8565b34156103fb57600080fd5b61036b600160a060020a036004358116906024351661103b565b341561042057600080fd5b6101486110ed565b341561043357600080fd5b61018e6110fd565b6000805433600160a060020a0390811691161461045757600080fd5b6009805474ff0000000000000000000000000000000000000000191660a060020a1790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a039081169116146104d457600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156104fb57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106245781600160a060020a031660058281548110151561054057fe5b600091825260209091200154600160a060020a0316141561061c5760058054600019810190811061056d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061059357fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906105cf906000198301611533565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610624565b60010161051d565b5050565b600154600160a060020a031681565b61063f61155c565b600480548060200260200160405190810160405280929190818152602001828054801561069557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610677575b5050505050905090565b60005433600160a060020a039081169116146106ba57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561071757600080fd5b6102c65a03f1151561072857600080fd5b50505060405180519050151561073d57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146107b157600080fd5b600160a060020a03811660009081526003602052604090205460ff16156107d757600080fd5b600554603290106107e757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016108668382611533565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600754600160a060020a031681565b600954600160a060020a031681565b60005433600160a060020a039081169116146108cb57600080fd5b600160a060020a03811615156108e057600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff16151561096957600080fd5b6009805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60095460009060a060020a900460ff1615156109de57600080fd5b60085433600160a060020a039081169116146109f957600080fd5b610a0787878787878761110c565b1515610a1257600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610a3a57600080fd5b600160a060020a0381161515610a4f57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610ad557600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610b6f57600080fd5b600160a060020a0381161515610b8457600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610c3e61155c565b600580548060200260200160405190810160405280929190818152602001828054801561069557602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610677575050505050905090565b60095460009060a060020a900460ff161515610cba57506000610d55565b600954600160a060020a03868116911614801590610ce65750600954600160a060020a03858116911614155b15610cf357506000610d55565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a03861614801590610d3d575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a03851614155b15610d4a57506000610d55565b50670de0b6b3a76400005b949350505050565b60005433600160a060020a03908116911614610d7857600080fd5b600160a060020a03811660009081526002602052604090205460ff1615610d9e57600080fd5b60045460329010610dae57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016108668382611533565b6000805433600160a060020a03908116911614610e4957600080fd5b600160a060020a03821660009081526002602052604090205460ff161515610e7057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106245781600160a060020a0316600482815481101515610eb557fe5b600091825260209091200154600160a060020a03161415610f9157600480546000198101908110610ee257fe5b60009182526020909120015460048054600160a060020a039092169183908110610f0857fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190610f449082611533565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610624565b600101610e92565b600854600160a060020a031681565b60005433600160a060020a03908116911614610fc357600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515610ff457600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156110735750600160a060020a038116316110e7565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156110ca57600080fd5b6102c65a03f115156110db57600080fd5b50505060405180519150505b92915050565b60095460a060020a900460ff1681565b600054600160a060020a031681565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a0389161480611156575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038716145b151561116157600080fd5b600954600160a060020a038981169116148061118a5750600954600160a060020a038781169116145b151561119557600080fd5b82156111e957600084116111a857600080fd5b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156111de573487146111d957600080fd5b6111e9565b34156111e957600080fd5b6111f687601280876114a2565b90506000811161120557600080fd5b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561130a57600954600160a060020a031663d0e30db0886040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561126957600080fd5b6125ee5a03f1151561127a57600080fd5b5050600954600160a060020a0316915063a9059cbb9050868360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112df57600080fd5b6102c65a03f115156112f057600080fd5b50505060405180519050151561130557600080fd5b611427565b87600160a060020a03166323b872dd33308a60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561137457600080fd5b6102c65a03f1151561138557600080fd5b50505060405180519050151561139a57600080fd5b600954600160a060020a0316632e1a7d4d8260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156113e257600080fd5b6102c65a03f115156113f357600080fd5b505050600160a060020a0385166108fc82150282604051600060405180830381858888f19350505050151561142757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de898989858a604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a2506001979650505050505050565b60006b204fce5e3e250261100000008511156114bd57600080fd5b69d3c21bcecceda10000008211156114d457600080fd5b83831061150757601284840311156114eb57600080fd5b670de0b6b3a7640000858302858503600a0a025b049050610d55565b6012838503111561151757600080fd5b828403600a0a670de0b6b3a7640000028286028115156114ff57fe5b8154818355818115116115575760008381526020902061155791810190830161156e565b505050565b60206040519081016040526000815290565b6104b591905b808211156115885760008155600101611574565b5090565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156115bd576012915061164a565b50600160a060020a0382166000908152600660205260409020548015156116465782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561162457600080fd5b6102c65a03f1151561163557600080fd5b50505060405180519050915061164a565b8091505b509190505600a165627a7a72305820e570054c53458f06521704bb92dc6ac441b6b891ca092d4a0414c0feedd2d27e0029

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

0000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54

-----Decoded View---------------
Arg [0] : _kyberNetwork (address): 0x9CB7bB6D4795A281860b9Bfb7B1441361Cc9A794
Arg [1] : _wethToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _admin (address): 0xBE2F0354D970265BFc36D383af77F72736b81B54

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54


Deployed Bytecode Sourcemap

10605:3795:0:-;;;;;;;;;-1:-1:-1;;;10605:3795:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11389:9;;11367:10;-1:-1:-1;;;;;11367:32:0;;;11389:9;;11367:32;11359:41;;;;;;10605:3795;12117:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8100:463;;;;;;;;;;-1:-1:-1;;;;;8100:463:0;;;;;5724:27;;;;;;;;;;;;;;;-1:-1:-1;;;;;5724:27:0;;;;;;;;;;;;;;6335:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;9968:189:0;;;;;;;;;;-1:-1:-1;;;;;9968:189:0;;;;;;;;;;;;;7784:308;;;;;;;;;;-1:-1:-1;;;;;7784:308:0;;;;;10737:38;;;;;;;;;;;;10816:30;;;;;;;;;;;;12480:201;;;;;;;;;;-1:-1:-1;;;;;12480:201:0;;;;;12270:150;;;;;;;;;;;;11614:455;;-1:-1:-1;;;;;11614:455:0;;;;;;;;;;;;;;;;;;;;;;;;6753:187;;;;;;;;;;-1:-1:-1;;;;;6753:187:0;;;;;7522:194;;;;;;;;;;;;7121:223;;;;;;;;;;-1:-1:-1;;;;;7121:223:0;;;;;6441:96;;;;;;;;;;;;12689:377;;;;;;;;;;-1:-1:-1;;;;;12689:377:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8632:319;;;;;;;;;;-1:-1:-1;;;;;8632:319:0;;;;;8959:481;;;;;;;;;;-1:-1:-1;;;;;8959:481:0;;;;;10782:27;;;;;;;;;;;;10269:153;;;;;;;;;;;;-1:-1:-1;;;;;10269:153:0;;;;;4168:213;;;;;;;;;;-1:-1:-1;;;;;4168:213:0;;;;;;;;;;10853:24;;;;;;;;;;;;5697:20;;;;;;;;;;;;12117:145;12165:4;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;12182:12;:19;;-1:-1:-1;;12182:19:0;-1:-1:-1;;;12182:19:0;;;12212:18;12197:4;12212:18;;;;;;;;;;;;;;;;-1:-1:-1;12250:4:0;6134:1;12117:145;:::o;8100:463::-;8249:6;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;8177:17:0;;;;;;:8;:17;;;;;;;;8169:26;;;;;;;;-1:-1:-1;;;;;;8206:17:0;;8226:5;8206:17;;;:8;:17;;;;;:25;;-1:-1:-1;;8206:25:0;;;8244:312;8265:13;:20;8261:24;;8244:312;;;8331:7;-1:-1:-1;;;;;8311:27:0;:13;8325:1;8311:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8311:16:0;:27;8307:238;;;8378:13;8392:20;;-1:-1:-1;;8392:24:0;;;8378:39;;;;;;;;;;;;;;;;8359:13;:16;;-1:-1:-1;;;;;8378:39:0;;;;8373:1;;8359:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;8359:58:0;-1:-1:-1;;;;;8359:58:0;;;;;;;;;;8436:13;:22;;;;;-1:-1:-1;;8436:22:0;;;:::i;:::-;;8477:28;8490:7;8499:5;8477:28;;-1:-1:-1;;;;;8477:28:0;;;;;;;;;;;;;;;;;;;;;;8524:5;;8307:238;8287:3;;8244:312;;;8100:463;;:::o;5724:27::-;;;-1:-1:-1;;;;;5724:27:0;;:::o;6335:98::-;6382:9;;:::i;:::-;6411:14;6404:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6404:21:0;;;;;;;;;;;;;;;;;;;;;;;6335:98;:::o;9968:189::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;10071:5;-1:-1:-1;;;;;10071:14:0;;10086:6;10094;10071:30;;;;;;;;-1:-1:-1;;;10071:30:0;;;;;;-1:-1:-1;;;;;10071:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10063:39;;;;;;;;10113:36;10127:5;10134:6;10142;10113:36;;-1:-1:-1;;;;;10113:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:189;;;:::o;7784:308::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;7861:20:0;;;;;;:8;:20;;;;;;;;7860:21;7852:30;;;;;;7924:13;:20;5972:2;7924:37;;7916:46;;;;;;7975:30;7988:10;8000:4;7975:30;;-1:-1:-1;;;;;7975:30:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8016:20:0;;;;;;:8;:20;;;;;:27;;-1:-1:-1;;8016:27:0;8039:4;8016:27;;;;;;8054:13;:30;;:13;;:30;;;:13;:30;;:::i;:::-;-1:-1:-1;8054:30:0;;;;;;;;;;;-1:-1:-1;;;;;;8054:30:0;-1:-1:-1;;;;;8054:30:0;;;;;;;;;;7784:308::o;10737:38::-;;;-1:-1:-1;;;;;10737:38:0;;:::o;10816:30::-;;;-1:-1:-1;;;;;10816:30:0;;:::o;12480:201::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;12564:27:0;;;;12556:36;;;;;;12605:12;:28;;-1:-1:-1;;;;;;12605:28:0;-1:-1:-1;;;;;12605:28:0;;;;;;;;;;;12644:29;;12660:12;12644:29;;-1:-1:-1;;;;;12644:29:0;;;;;;;;;;;;;;12480:201;:::o;12270:150::-;-1:-1:-1;;;;;6295:10:0;6286:20;12321:4;6286:20;;;:8;:20;;;;;;;;6278:29;;;;;;;;12338:12;:20;;-1:-1:-1;;12338:20:0;;;12369:19;12353:5;12369:19;;;;;;;;;;;;;;;;-1:-1:-1;12408:4:0;12270:150;:::o;11614:455::-;11878:12;;11846:4;;-1:-1:-1;;;11878:12:0;;;;11870:21;;;;;;;;11924:12;;11910:10;-1:-1:-1;;;;;11910:26:0;;;11924:12;;11910:26;11902:35;;;;;;11958:78;11966:8;11976:9;11987;11998:11;12011:14;12027:8;11958:7;:78::i;:::-;11950:87;;;;;;;;-1:-1:-1;12057:4:0;11614:455;;;;;;;;:::o;6753:187::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;6830:22:0;;;;6822:31;;;;;;6885:12;;6864:34;;-1:-1:-1;;;;;6885:12:0;6864:34;;-1:-1:-1;;;;;6864:34:0;;;;;;;;;;;;;;6909:12;:23;;-1:-1:-1;;;;;;6909:23:0;-1:-1:-1;;;;;6909:23:0;;;;;;;;;;6753:187::o;7522:194::-;7570:12;;7586:10;-1:-1:-1;;;;;7570:26:0;;;:12;;:26;7562:35;;;;;;7621:12;;;7635:5;7608:33;;-1:-1:-1;;;;;7621:12:0;;;;7635:5;7608:33;;-1:-1:-1;;;;;7608:33:0;;;;;;;;;;;;;;;;;;;;;;7660:12;;;;7652:20;;-1:-1:-1;;;;;;7652:20:0;;;-1:-1:-1;;;;;7660:12:0;;7652:20;;;;7683:25;;;7522:194::o;7121:223::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;7205:22:0;;;;7197:31;;;;;;7239:30;7260:8;7239:30;;-1:-1:-1;;;;;7239:30:0;;;;;;;;;;;;;;7303:5;;7280:29;;7293:8;;-1:-1:-1;;;;;7303:5:0;7280:29;;-1:-1:-1;;;;;7280:29:0;;;;;;;;;;;;;;;;;;;;;;7320:5;:16;;-1:-1:-1;;;;;;7320:16:0;-1:-1:-1;;;;;7320:16:0;;;;;;;;;;7121:223::o;6441:96::-;6487:9;;:::i;:::-;6516:13;6509:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6509:20:0;;;;;;;;;;;;;;;;;;;;;;6441:96;:::o;12689:377::-;12855:12;;12790:4;;-1:-1:-1;;;12855:12:0;;;;12854:13;12850:27;;;-1:-1:-1;12876:1:0;12869:8;;12850:27;12893:9;;-1:-1:-1;;;;;12893:16:0;;;:9;;:16;;;;12892:41;;-1:-1:-1;12915:9:0;;-1:-1:-1;;;;;12915:17:0;;;:9;;:17;;12892:41;12888:55;;;-1:-1:-1;12942:1:0;12935:8;;12888:55;1478:44;-1:-1:-1;;;;;12959:24:0;;;;;;12958:57;;-1:-1:-1;1478:44:0;-1:-1:-1;;;;;12989:25:0;;;;12958:57;12954:71;;;-1:-1:-1;13024:1:0;13017:8;;12954:71;-1:-1:-1;1567:6:0;12689:377;;;;;;;:::o;8632:319::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;8711:22:0;;;;;;:9;:22;;;;;;;;8710:23;8702:32;;;;;;8776:14;:21;5972:2;8776:38;;8768:47;;;;;;8828:32;8842:11;8855:4;8828:32;;-1:-1:-1;;;;;8828:32:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8871:22:0;;;;;;:9;:22;;;;;:29;;-1:-1:-1;;8871:29:0;8896:4;8871:29;;;;;;8911:14;:32;;:14;;:32;;;:14;:32;;:::i;8959:481::-;9114:6;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;9038:19:0;;;;;;:9;:19;;;;;;;;9030:28;;;;;;;;-1:-1:-1;;;;;;9069:19:0;;9091:5;9069:19;;;:9;:19;;;;;:27;;-1:-1:-1;;9069:27:0;;;9109:324;9130:14;:21;9126:25;;9109:324;;;9198:8;-1:-1:-1;;;;;9177:29:0;:14;9192:1;9177:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9177:17:0;:29;9173:249;;;9247:14;9262:21;;-1:-1:-1;;9262:25:0;;;9247:41;;;;;;;;;;;;;;;;9227:14;:17;;-1:-1:-1;;;;;9247:41:0;;;;9242:1;;9227:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;9227:61:0;-1:-1:-1;;;;;9227:61:0;;;;;;;;;;9307:14;:26;;-1:-1:-1;;9307:26:0;;;;;;:::i;:::-;;9352:30;9366:8;9376:5;9352:30;;-1:-1:-1;;;;;9352:30:0;;;;;;;;;;;;;;;;;;;;;;9401:5;;9173:249;9153:3;;9109:324;;10782:27;;;-1:-1:-1;;;;;10782:27:0;;:::o;10269:153::-;6117:5;;6103:10;-1:-1:-1;;;;;6103:19:0;;;6117:5;;6103:19;6095:28;;;;;;-1:-1:-1;;;;;10351:15:0;;:23;;;;10367:6;10351:23;;;;;;;;;;;;;;;;;;;;;;;;;;10385:29;10399:6;10407;10385:29;;;;;-1:-1:-1;;;;;10385:29:0;;;;;;;;;;;;;;;;10269:153;;:::o;4168:213::-;4235:4;-1:-1:-1;;;;;4256:26:0;;1478:44;4256:26;4252:121;;;-1:-1:-1;;;;;;4304:12:0;;;4297:19;;4252:121;4352:5;-1:-1:-1;;;;;4352:15:0;;4368:4;4352:21;;;;;;;;-1:-1:-1;;;4352:21:0;;;;;;-1:-1:-1;;;;;4352:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4252:121:0;4168:213;;;;:::o;10853:24::-;;;-1:-1:-1;;;10853:24:0;;;;;:::o;5697:20::-;;;-1:-1:-1;;;;;5697:20:0;;:::o;13074:1323::-;13293:4;;1478:44;-1:-1:-1;;;;;13324:29:0;;;;13323:67;;-1:-1:-1;1478:44:0;-1:-1:-1;;;;;13359:30:0;;;13323:67;13315:76;;;;;;;;13411:9;;-1:-1:-1;;;;;13411:21:0;;;:9;;:21;;13410:51;;-1:-1:-1;13438:9:0;;-1:-1:-1;;;;;13438:22:0;;;:9;;:22;13410:51;13402:60;;;;;;;;13542:8;13538:226;;;13592:1;13575:18;;13567:27;;;;;;-1:-1:-1;;;;;13613:29:0;;1478:44;13613:29;13609:143;;;13669:9;:22;;13661:31;;;;;;13609:143;;;13737:9;:14;13729:23;;;;;;13793:71;13804:9;10728:2;;13849:14;13793:10;:71::i;:::-;13776:88;-1:-1:-1;13895:1:0;13883:13;;13875:22;;;;;;-1:-1:-1;;;;;13930:29:0;;1478:44;13930:29;13926:347;;;13976:9;;-1:-1:-1;;;;;13976:9:0;:17;14000:9;13976:36;;;;;-1:-1:-1;;;13976:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14035:9:0;;-1:-1:-1;;;;;14035:9:0;;-1:-1:-1;14035:18:0;;-1:-1:-1;14054:11:0;14067:9;14035;:42;;;;;;;-1:-1:-1;;;14035:42:0;;;;;;-1:-1:-1;;;;;14035:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14027:51;;;;;;;;13926:347;;;14119:8;-1:-1:-1;;;;;14119:21:0;;14141:10;14153:4;14159:9;14119:50;;;;;;;;-1:-1:-1;;;14119:50:0;;;;;;-1:-1:-1;;;;;14119:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14111:59;;;;;;;;14185:9;;-1:-1:-1;;;;;14185:9:0;:18;14204:9;14185:29;;-1:-1:-1;;;14185:29:0;;;;;;;;;;;;;;;-1:-1:-1;14185:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;14229:20:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14298:10;-1:-1:-1;;;;;14285:80:0;;14310:8;14320:9;14331;14342;14353:11;14285:80;;-1:-1:-1;;;;;14285:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14385:4:0;;13074:1323;-1:-1:-1;;;;;;;13074:1323:0:o;2549:569::-;2651:4;1618:6;2676:17;;;2668:26;;;;;;1683:17;2713:16;;;2705:25;;;;;;2747:26;;;2743:368;;1774:2;2799:25;;;2798:43;;2790:52;;;;;;1567:6;2865:13;;;2887:25;;;2882:2;:31;2865:49;2864:63;;2857:70;;;;2743:368;1774:2;2969:25;;;2968:43;;2960:52;;;;;;3085:11;3071;:25;3066:2;:31;1567:6;3053:45;3044:4;3035:6;:13;3034:65;;;;;;10605:3795;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;2062:479;2118:4;;-1:-1:-1;;;;;2139:26:0;;1478:44;2139:26;2135:51;;;1822:2;2167:19;;;;2135:51;-1:-1:-1;;;;;;2241:15:0;;;;;;:8;:15;;;;;;2457:18;;2454:46;;;2484:5;-1:-1:-1;;;;;2484:14:0;;:16;;;;;;;;;;;-1:-1:-1;;;2484:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2477:23;;;;2454:46;2520:13;2513:20;;2062:479;;;;;:::o

Swarm Source

bzzr://e570054c53458f06521704bb92dc6ac441b6b891ca092d4a0414c0feedd2d27e

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  ]

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.