ETH Price: $3,351.96 (+0.52%)

Contract

0x19a67cc6f2ce24822a8119e5439DCB527d4E93f8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake140162352022-01-16 11:26:271076 days ago1642332387IN
0x19a67cc6...27d4E93f8
0 ETH0.0141178387.55135053
Unstake136712562021-11-23 14:00:121130 days ago1637676012IN
0x19a67cc6...27d4E93f8
0 ETH0.04334006228
Claim132874932021-09-24 8:42:411190 days ago1632472961IN
0x19a67cc6...27d4E93f8
0 ETH0.003891642.06781421
Claim125892722021-06-07 19:32:391298 days ago1623094359IN
0x19a67cc6...27d4E93f8
0 ETH0.002312725
Unstake123807182021-05-06 12:24:401331 days ago1620303880IN
0x19a67cc6...27d4E93f8
0 ETH0.001102246
Unstake123805462021-05-06 11:44:561331 days ago1620301496IN
0x19a67cc6...27d4E93f8
0 ETH0.0009584440
Unstake123502862021-05-01 19:48:131335 days ago1619898493IN
0x19a67cc6...27d4E93f8
0 ETH0.007680650
Stake123490442021-05-01 15:15:021336 days ago1619882102IN
0x19a67cc6...27d4E93f8
0 ETH0.0067530643
Unstake123477172021-05-01 10:28:101336 days ago1619864890IN
0x19a67cc6...27d4E93f8
0 ETH0.0059123435
Unstake123466542021-05-01 6:24:141336 days ago1619850254IN
0x19a67cc6...27d4E93f8
0 ETH0.0027289535
Unstake123429662021-04-30 16:43:021337 days ago1619800982IN
0x19a67cc6...27d4E93f8
0 ETH0.0087217581
Unstake123400362021-04-30 5:43:551337 days ago1619761435IN
0x19a67cc6...27d4E93f8
0 ETH0.005255438
Unstake123378292021-04-29 21:29:101337 days ago1619731750IN
0x19a67cc6...27d4E93f8
0 ETH0.006797745
Unstake123288682021-04-28 12:11:231339 days ago1619611883IN
0x19a67cc6...27d4E93f8
0 ETH0.0136714689
Unstake123093382021-04-25 12:04:141342 days ago1619352254IN
0x19a67cc6...27d4E93f8
0 ETH0.0045203343
Unstake123012242021-04-24 6:06:391343 days ago1619244399IN
0x19a67cc6...27d4E93f8
0 ETH0.0118106257
Unstake122991462021-04-23 22:18:441343 days ago1619216324IN
0x19a67cc6...27d4E93f8
0 ETH0.00242006101
Unstake122991462021-04-23 22:18:441343 days ago1619216324IN
0x19a67cc6...27d4E93f8
0 ETH0.010925779
Unstake122666132021-04-18 21:45:151348 days ago1618782315IN
0x19a67cc6...27d4E93f8
0 ETH0.0096255698
Unstake122588682021-04-17 17:14:311350 days ago1618679671IN
0x19a67cc6...27d4E93f8
0 ETH0.01795222143
Unstake122446352021-04-15 12:27:041352 days ago1618489624IN
0x19a67cc6...27d4E93f8
0 ETH0.0091011174
Unstake122446332021-04-15 12:26:301352 days ago1618489590IN
0x19a67cc6...27d4E93f8
0 ETH0.0122889680
Unstake122436652021-04-15 8:52:181352 days ago1618476738IN
0x19a67cc6...27d4E93f8
0 ETH0.01399216104
Unstake122391342021-04-14 15:51:481353 days ago1618415508IN
0x19a67cc6...27d4E93f8
0 ETH0.01332068101
Unstake122280522021-04-12 22:44:051354 days ago1618267445IN
0x19a67cc6...27d4E93f8
0 ETH0.02092552110
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BSKTStaker

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-16
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.6.0;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
}

interface BSKToken {
    function balanceOf(address owner) external view returns (uint);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

abstract contract RewardContract {
    function getBalance() external view virtual returns (uint256);
    function giveReward(address recipient, uint256 amount) external virtual returns (bool);
}

contract BSKTStaker is Ownable {
    using SafeMath for uint256;

    BSKToken public immutable _bskToken;    		        // BSKT contract
    RewardContract public _rewardContract;                  // reward contract

    mapping (address => StakerInfo) private _stakeMap;      // map for stakers

    address[] private _stakers;                             // staker's array
    
    uint256 private _totalStakedAmount = 0;                 // total staked amount
    uint256 private _minStakeAmount = 10000e18;             // min stakable amount
    
    uint256 private _rewardPortion = 10;                    // reward portion 10%
    
    struct StakerInfo {
        uint256 stakedAmount;
        uint256 rewardAmount;
        uint256 lastClaimTimestamp;
    }
    
    // Events
    event Staked(address staker, uint256 amount);
    event Unstaked(address staker, uint256 amount);
    event Claim(address staker, uint256 amount);
    
    constructor (BSKToken bskToken) public {
        _bskToken = bskToken;
        
    }
    
    function stake(uint256 amount) public {
        require(
            amount >= _minStakeAmount,
            "BSKTStaker: stake amount is less than min stake amount."
        );

        uint256 initialBalance = _bskToken.balanceOf(address(this));
        
        require(
            _bskToken.transferFrom(
                _msgSender(),
                address(this),
                amount
            ),
            "BSKTStaker: stake failed."
        );

        uint256 realStakedAmount = _bskToken.balanceOf(address(this)).sub(initialBalance);
        uint256 currentTimestamp = uint256(now);

        if(_stakeMap[_msgSender()].stakedAmount == 0)
            _stakers.push(_msgSender());
        else
            _stakeMap[_msgSender()].rewardAmount = calcReward(_msgSender(), currentTimestamp);
        _stakeMap[_msgSender()].lastClaimTimestamp = currentTimestamp;
            
        _stakeMap[_msgSender()].stakedAmount = _stakeMap[_msgSender()].stakedAmount.add(realStakedAmount);
        _totalStakedAmount = _totalStakedAmount.add(realStakedAmount);
        
        emit Staked(_msgSender(), realStakedAmount);
    }
    
    function unstake(uint256 amount) public {
        require(
            _stakeMap[_msgSender()].stakedAmount >= amount,
            "BSKTStaker: unstake amount exceededs the staked amount."
        );

        uint256 currentTimestamp = uint256(now);
        _stakeMap[_msgSender()].rewardAmount = calcReward(_msgSender(), currentTimestamp);
        _stakeMap[_msgSender()].lastClaimTimestamp = currentTimestamp;
        _stakeMap[_msgSender()].stakedAmount = _stakeMap[_msgSender()].stakedAmount.sub(amount);
        _totalStakedAmount = _totalStakedAmount.sub(amount);

        require(
            _bskToken.transfer(
                _msgSender(),
                amount
            ),
            "BSKTStaker: unstake failed."
        );
        
        if(_stakeMap[_msgSender()].stakedAmount == 0) {
            for(uint i=0; i<_stakers.length; i++) {
                if(_stakers[i] == _msgSender()) {
                    _stakers[i] = _stakers[_stakers.length-1];
                    _stakers.pop();
                    break;
                }
            }
        }
        emit Unstaked(_msgSender(), amount);
    }
    
    function claim() public {
        uint256 currentTimestamp = uint256(now);
        uint256 rewardAmount = calcReward(_msgSender(), currentTimestamp);
        _stakeMap[_msgSender()].lastClaimTimestamp = currentTimestamp;
        _stakeMap[_msgSender()].rewardAmount = 0;
        
        require(
            _rewardContract.giveReward(_msgSender(), rewardAmount),
            "BSKTStaker: claim failed."
        );
        
	    emit Claim(_msgSender(), rewardAmount);
    }
    
    function endStake() external {
        unstake(_stakeMap[_msgSender()].stakedAmount);
        claim();
    }
    
    function calcReward(address account, uint256 currentTimestamp) internal view returns (uint256) {
        if(_totalStakedAmount == 0)
            return 0;
        uint256 rewardPoolBalance = _rewardContract.getBalance();
        uint256 passTime = currentTimestamp.sub(_stakeMap[account].lastClaimTimestamp);
        uint256 rewardAmountForStakers = rewardPoolBalance.mul(_rewardPortion).div(100);
        uint256 rewardAmount = rewardAmountForStakers.mul(passTime).div(86400).mul(_stakeMap[account].stakedAmount).div(_totalStakedAmount);
        return _stakeMap[account].rewardAmount.add(rewardAmount);
    }
    
    /**
     * Get store wallet
     */
    function getRewardContract() external view returns (address) {
        return address(_rewardContract);
    }
     
    /**
     * Get total staked amount
     */
    function getTotalStakedAmount() external view returns (uint256) {
        return _totalStakedAmount;
    }
    
    /**
     * Get reward amount of staker
     */
    function getReward(address account) external view returns (uint256) {
        return calcReward(account, now);
    }
    
    /**
     * Get reward pool balance (LAVA)
     */
    function getRewardPoolBalance() external view returns (uint256) {
        return _rewardContract.getBalance();
    }
    
    /**
     * Get last claim timestamp
     */
    function getLastClaimTimestamp() external view returns (uint256) {
        return _stakeMap[_msgSender()].lastClaimTimestamp;
    }
    
    /**
     * Get staked amount of staker
     */
    function getStakedAmount(address staker) external view returns (uint256) {
        return _stakeMap[staker].stakedAmount;
    }
    
    /**
     * Get min stake amount
     */
    function getMinStakeAmount() external view returns (uint256) {
        return _minStakeAmount;
    }
    
    /**
     * Get rewards portion
     */
    function getRewardPortion() external view returns (uint256) {
        return _rewardPortion;
    }
    
    /**
     * Get staker count
     */
    function getStakerCount() external view returns (uint256) {
        return _stakers.length;
    }

    /**
     * Get staked rank
     */
    function getStakedRank(address account) external view returns (uint256) {
        uint256 rank = 1;
        uint256 senderStakedAmount = _stakeMap[account].stakedAmount;
        
        for(uint i=0; i<_stakers.length; i++) {
            if(_stakers[i] != account && senderStakedAmount < _stakeMap[_stakers[i]].stakedAmount)
                rank = rank.add(1);
        }
        return rank;
    }
    
    /**
     * Set store wallet contract address
     */
    function setRewardContract(RewardContract rewardContract) external onlyOwner returns (bool) {
        require(address(rewardContract) != address(0), 'BSKTStaker: reward contract address should not be zero address.');

        _rewardContract = rewardContract;
        return true;
    }

    /**
     * Set rewards portion in store balance. 
     */
    function setRewardPortion(uint256 rewardPortion) external onlyOwner returns (bool) {
        require(rewardPortion >= 10 && rewardPortion <= 100, 'BSKTStaker: reward portion should be in 10 ~ 100.');

        _rewardPortion = rewardPortion;
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract BSKToken","name":"bskToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"_bskToken","outputs":[{"internalType":"contract BSKToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardContract","outputs":[{"internalType":"contract RewardContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLastClaimTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardPoolBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardPortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getStakedRank","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract RewardContract","name":"rewardContract","type":"address"}],"name":"setRewardContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardPortion","type":"uint256"}],"name":"setRewardPortion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a0604052600060045569021e19e0c9bab2400000600555600a60065534801561002857600080fd5b5060405161217e38038061217e8339818101604052602081101561004b57600080fd5b8101908080519060200190929190505050600061006c61014760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505061014f565b600033905090565b60805160601c611ffe610180600039806106f05280610a5c528061123852806112fc52806114655250611ffe6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063564bffd7116100ad578063bcee761211610071578063bcee7612146103ee578063c00007b0146103f8578063d11bdeaf14610450578063d854fb7514610484578063f2a0c37a146104a257610121565b8063564bffd7146102bc5780637d608349146103145780638da5cb5b1461035857806394071f281461038c578063a694fc3a146103c057610121565b806345905648116100f457806345905648146101ae5780634da6a556146101e25780634e71d92d1461023a57806351508f0a14610244578063527cb1d71461029e57610121565b80631319649d1461012657806326da9141146101445780632e17de781461016257806338adb6f014610190575b600080fd5b61012e6104c0565b6040518082815260200191505060405180910390f35b61014c6104cd565b6040518082815260200191505060405180910390f35b61018e6004803603602081101561017857600080fd5b81019080803590602001909291905050506104d7565b005b610198610a50565b6040518082815260200191505060405180910390f35b6101b6610a5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610224600480360360208110156101f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a7e565b6040518082815260200191505060405180910390f35b610242610aca565b005b6102866004803603602081101561025a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d28565b60405180821515815260200191505060405180910390f35b6102a6610ec2565b6040518082815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ecc565b6040518082815260200191505060405180910390f35b6103406004803603602081101561032a57600080fd5b8101908080359060200190929190505050611049565b60405180821515815260200191505060405180910390f35b61036061118a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103946111b3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ec600480360360208110156103d657600080fd5b81019080803590602001909291905050506111d9565b005b6103f66117ce565b005b61043a6004803603602081101561040e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182a565b6040518082815260200191505060405180910390f35b61045861183d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61048c611867565b6040518082815260200191505060405180910390f35b6104aa611911565b6040518082815260200191505060405180910390f35b6000600380549050905090565b6000600654905090565b80600260006104e4611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015610579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611efb6037913960400191505060405180910390fd5b600042905061058f610589611962565b8261196a565b6002600061059b611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080600260006105e9611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610686826002600061063a611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ba190919063ffffffff16565b60026000610692611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106e882600454611ba190919063ffffffff16565b6004819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610732611962565b846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d60208110156107b057600080fd5b8101908080519060200190929190505050610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f42534b545374616b65723a20756e7374616b65206661696c65642e000000000081525060200191505060405180910390fd5b600060026000610841611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109f05760005b6003805490508110156109ee5761089d611962565b73ffffffffffffffffffffffffffffffffffffffff16600382815481106108c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109e15760036001600380549050038154811061091c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003828154811061095457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038054806109a757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556109ee565b8080600101915050610888565b505b7f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75610a19611962565b83604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600454905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60004290506000610ae2610adc611962565b8361196a565b90508160026000610af1611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600060026000610b40611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce8ae9f3610bc7611962565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b505050506040513d6020811015610c4557600080fd5b8101908080519060200190929190505050610cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f42534b545374616b65723a20636c61696d206661696c65642e0000000000000081525060200191505060405180910390fd5b7f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4610cf1611962565b82604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000610d32611962565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180611f32603f913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600554905090565b600080600190506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060005b60038054905081101561103e578473ffffffffffffffffffffffffffffffffffffffff1660038281548110610f4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561101557506002600060038381548110610fa957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015482105b156110315761102e600184611beb90919063ffffffff16565b92505b8080600101915050610f1d565b508192505050919050565b6000611053611962565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a8210158015611125575060648211155b61117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eca6031913960400191505060405180910390fd5b8160068190555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600554811015611234576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611f926037913960400191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d60208110156112e757600080fd5b810190808051906020019092919050505090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd61133e611962565b30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156113b057600080fd5b505af11580156113c4573d6000803e3d6000fd5b505050506040513d60208110156113da57600080fd5b810190808051906020019092919050505061145d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f42534b545374616b65723a207374616b65206661696c65642e0000000000000081525060200191505060405180910390fd5b6000611533827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b8101908080519060200190929190505050611ba190919063ffffffff16565b90506000429050600060026000611548611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156115fb576003611596611962565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061165a565b61160c611606611962565b8261196a565b60026000611618611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b8060026000611667611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061170482600260006116b8611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611beb90919063ffffffff16565b60026000611710611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061176682600454611beb90919063ffffffff16565b6004819055507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d611795611962565b83604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b611820600260006117dd611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546104d7565b611828610aca565b565b6000611836824261196a565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312065fe06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d157600080fd5b505afa1580156118e5573d6000803e3d6000fd5b505050506040513d60208110156118fb57600080fd5b8101908080519060200190929190505050905090565b60006002600061191f611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154905090565b600033905090565b600080600454141561197f5760009050611b9b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312065fe06040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d6020811015611a1357600080fd5b810190808051906020019092919050505090506000611a7d600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015485611ba190919063ffffffff16565b90506000611aa96064611a9b60065486611c7390919063ffffffff16565b611cf990919063ffffffff16565b90506000611b3d600454611b2f600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611b2162015180611b138989611c7390919063ffffffff16565b611cf990919063ffffffff16565b611c7390919063ffffffff16565b611cf990919063ffffffff16565b9050611b9481600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611beb90919063ffffffff16565b9450505050505b92915050565b6000611be383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d43565b905092915050565b600080828401905083811015611c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415611c865760009050611cf3565b6000828402905082848281611c9757fe5b0414611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f716021913960400191505060405180910390fd5b809150505b92915050565b6000611d3b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e03565b905092915050565b6000838311158290611df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611db5578082015181840152602081019050611d9a565b50505050905090810190601f168015611de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611eaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e74578082015181840152602081019050611e59565b50505050905090810190601f168015611ea15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611ebb57fe5b04905080915050939250505056fe42534b545374616b65723a2072657761726420706f7274696f6e2073686f756c6420626520696e203130207e203130302e42534b545374616b65723a20756e7374616b6520616d6f756e742065786365656465647320746865207374616b656420616d6f756e742e42534b545374616b65723a2072657761726420636f6e747261637420616464726573732073686f756c64206e6f74206265207a65726f20616464726573732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7742534b545374616b65723a207374616b6520616d6f756e74206973206c657373207468616e206d696e207374616b6520616d6f756e742ea2646970667358221220e348e9775966c5736d4149faa215e8344ba512572b47edcf309fd48d5bba076e64736f6c634300060c0033000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a91

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063564bffd7116100ad578063bcee761211610071578063bcee7612146103ee578063c00007b0146103f8578063d11bdeaf14610450578063d854fb7514610484578063f2a0c37a146104a257610121565b8063564bffd7146102bc5780637d608349146103145780638da5cb5b1461035857806394071f281461038c578063a694fc3a146103c057610121565b806345905648116100f457806345905648146101ae5780634da6a556146101e25780634e71d92d1461023a57806351508f0a14610244578063527cb1d71461029e57610121565b80631319649d1461012657806326da9141146101445780632e17de781461016257806338adb6f014610190575b600080fd5b61012e6104c0565b6040518082815260200191505060405180910390f35b61014c6104cd565b6040518082815260200191505060405180910390f35b61018e6004803603602081101561017857600080fd5b81019080803590602001909291905050506104d7565b005b610198610a50565b6040518082815260200191505060405180910390f35b6101b6610a5a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610224600480360360208110156101f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a7e565b6040518082815260200191505060405180910390f35b610242610aca565b005b6102866004803603602081101561025a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d28565b60405180821515815260200191505060405180910390f35b6102a6610ec2565b6040518082815260200191505060405180910390f35b6102fe600480360360208110156102d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ecc565b6040518082815260200191505060405180910390f35b6103406004803603602081101561032a57600080fd5b8101908080359060200190929190505050611049565b60405180821515815260200191505060405180910390f35b61036061118a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103946111b3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ec600480360360208110156103d657600080fd5b81019080803590602001909291905050506111d9565b005b6103f66117ce565b005b61043a6004803603602081101561040e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182a565b6040518082815260200191505060405180910390f35b61045861183d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61048c611867565b6040518082815260200191505060405180910390f35b6104aa611911565b6040518082815260200191505060405180910390f35b6000600380549050905090565b6000600654905090565b80600260006104e4611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015610579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611efb6037913960400191505060405180910390fd5b600042905061058f610589611962565b8261196a565b6002600061059b611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080600260006105e9611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610686826002600061063a611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ba190919063ffffffff16565b60026000610692611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106e882600454611ba190919063ffffffff16565b6004819055507f000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a9173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610732611962565b846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d60208110156107b057600080fd5b8101908080519060200190929190505050610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f42534b545374616b65723a20756e7374616b65206661696c65642e000000000081525060200191505060405180910390fd5b600060026000610841611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109f05760005b6003805490508110156109ee5761089d611962565b73ffffffffffffffffffffffffffffffffffffffff16600382815481106108c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109e15760036001600380549050038154811061091c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003828154811061095457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038054806109a757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556109ee565b8080600101915050610888565b505b7f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75610a19611962565b83604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600454905090565b7f000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a9181565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b60004290506000610ae2610adc611962565b8361196a565b90508160026000610af1611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600060026000610b40611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce8ae9f3610bc7611962565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c1b57600080fd5b505af1158015610c2f573d6000803e3d6000fd5b505050506040513d6020811015610c4557600080fd5b8101908080519060200190929190505050610cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f42534b545374616b65723a20636c61696d206661696c65642e0000000000000081525060200191505060405180910390fd5b7f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4610cf1611962565b82604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000610d32611962565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180611f32603f913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600554905090565b600080600190506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060005b60038054905081101561103e578473ffffffffffffffffffffffffffffffffffffffff1660038281548110610f4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561101557506002600060038381548110610fa957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015482105b156110315761102e600184611beb90919063ffffffff16565b92505b8080600101915050610f1d565b508192505050919050565b6000611053611962565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a8210158015611125575060648211155b61117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eca6031913960400191505060405180910390fd5b8160068190555060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600554811015611234576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611f926037913960400191505060405180910390fd5b60007f000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a9173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d60208110156112e757600080fd5b810190808051906020019092919050505090507f000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a9173ffffffffffffffffffffffffffffffffffffffff166323b872dd61133e611962565b30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156113b057600080fd5b505af11580156113c4573d6000803e3d6000fd5b505050506040513d60208110156113da57600080fd5b810190808051906020019092919050505061145d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f42534b545374616b65723a207374616b65206661696c65642e0000000000000081525060200191505060405180910390fd5b6000611533827f000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a9173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114ea57600080fd5b505afa1580156114fe573d6000803e3d6000fd5b505050506040513d602081101561151457600080fd5b8101908080519060200190929190505050611ba190919063ffffffff16565b90506000429050600060026000611548611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156115fb576003611596611962565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061165a565b61160c611606611962565b8261196a565b60026000611618611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b8060026000611667611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061170482600260006116b8611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611beb90919063ffffffff16565b60026000611710611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061176682600454611beb90919063ffffffff16565b6004819055507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d611795611962565b83604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b611820600260006117dd611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546104d7565b611828610aca565b565b6000611836824261196a565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312065fe06040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d157600080fd5b505afa1580156118e5573d6000803e3d6000fd5b505050506040513d60208110156118fb57600080fd5b8101908080519060200190929190505050905090565b60006002600061191f611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154905090565b600033905090565b600080600454141561197f5760009050611b9b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312065fe06040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d6020811015611a1357600080fd5b810190808051906020019092919050505090506000611a7d600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015485611ba190919063ffffffff16565b90506000611aa96064611a9b60065486611c7390919063ffffffff16565b611cf990919063ffffffff16565b90506000611b3d600454611b2f600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611b2162015180611b138989611c7390919063ffffffff16565b611cf990919063ffffffff16565b611c7390919063ffffffff16565b611cf990919063ffffffff16565b9050611b9481600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611beb90919063ffffffff16565b9450505050505b92915050565b6000611be383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d43565b905092915050565b600080828401905083811015611c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415611c865760009050611cf3565b6000828402905082848281611c9757fe5b0414611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f716021913960400191505060405180910390fd5b809150505b92915050565b6000611d3b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e03565b905092915050565b6000838311158290611df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611db5578082015181840152602081019050611d9a565b50505050905090810190601f168015611de25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611eaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e74578082015181840152602081019050611e59565b50505050905090810190601f168015611ea15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611ebb57fe5b04905080915050939250505056fe42534b545374616b65723a2072657761726420706f7274696f6e2073686f756c6420626520696e203130207e203130302e42534b545374616b65723a20756e7374616b6520616d6f756e742065786365656465647320746865207374616b656420616d6f756e742e42534b545374616b65723a2072657761726420636f6e747261637420616464726573732073686f756c64206e6f74206265207a65726f20616464726573732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7742534b545374616b65723a207374616b6520616d6f756e74206973206c657373207468616e206d696e207374616b6520616d6f756e742ea2646970667358221220e348e9775966c5736d4149faa215e8344ba512572b47edcf309fd48d5bba076e64736f6c634300060c0033

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

000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a91

-----Decoded View---------------
Arg [0] : bskToken (address): 0xC03841B5135600312707d39Eb2aF0D2aD5d51A91

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c03841b5135600312707d39eb2af0d2ad5d51a91


Deployed Bytecode Sourcemap

3192:7392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9317:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9162:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5436:1156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8073:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3265:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8814:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6604:487;;;:::i;:::-;;9945:291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9002:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9466:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10309:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2521:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3337:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4261:1163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7103:111;;;:::i;:::-;;8247:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7899:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8434:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8615:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9317:99;9366:7;9393:8;:15;;;;9386:22;;9317:99;:::o;9162:100::-;9213:7;9240:14;;9233:21;;9162:100;:::o;5436:1156::-;5549:6;5509:9;:23;5519:12;:10;:12::i;:::-;5509:23;;;;;;;;;;;;;;;:36;;;:46;;5487:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5651:24;5686:3;5651:39;;5740:42;5751:12;:10;:12::i;:::-;5765:16;5740:10;:42::i;:::-;5701:9;:23;5711:12;:10;:12::i;:::-;5701:23;;;;;;;;;;;;;;;:36;;:81;;;;5838:16;5793:9;:23;5803:12;:10;:12::i;:::-;5793:23;;;;;;;;;;;;;;;:42;;:61;;;;5904:48;5945:6;5904:9;:23;5914:12;:10;:12::i;:::-;5904:23;;;;;;;;;;;;;;;:36;;;:40;;:48;;;;:::i;:::-;5865:9;:23;5875:12;:10;:12::i;:::-;5865:23;;;;;;;;;;;;;;;:36;;:87;;;;5984:30;6007:6;5984:18;;:22;;:30;;;;:::i;:::-;5963:18;:51;;;;6049:9;:18;;;6086:12;:10;:12::i;:::-;6117:6;6049:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6027:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6257:1;6217:9;:23;6227:12;:10;:12::i;:::-;6217:23;;;;;;;;;;;;;;;:36;;;:41;6214:325;;;6279:6;6275:253;6291:8;:15;;;;6289:1;:17;6275:253;;;6350:12;:10;:12::i;:::-;6335:27;;:8;6344:1;6335:11;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;6332:181;;;6401:8;6426:1;6410:8;:15;;;;:17;6401:27;;;;;;;;;;;;;;;;;;;;;;;;;6387:8;6396:1;6387:11;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6451:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6488:5;;6332:181;6308:3;;;;;;;6275:253;;;;6214:325;6554:30;6563:12;:10;:12::i;:::-;6577:6;6554:30;;;;;;;;;;;;;;;;;;;;;;;;;;5436:1156;;:::o;8073:108::-;8128:7;8155:18;;8148:25;;8073:108;:::o;3265:35::-;;;:::o;8814:129::-;8878:7;8905:9;:17;8915:6;8905:17;;;;;;;;;;;;;;;:30;;;8898:37;;8814:129;;;:::o;6604:487::-;6639:24;6674:3;6639:39;;6689:20;6712:42;6723:12;:10;:12::i;:::-;6737:16;6712:10;:42::i;:::-;6689:65;;6810:16;6765:9;:23;6775:12;:10;:12::i;:::-;6765:23;;;;;;;;;;;;;;;:42;;:61;;;;6876:1;6837:9;:23;6847:12;:10;:12::i;:::-;6837:23;;;;;;;;;;;;;;;:36;;:40;;;;6920:15;;;;;;;;;;;:26;;;6947:12;:10;:12::i;:::-;6961;6920:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6898:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7050:33;7056:12;:10;:12::i;:::-;7070;7050:33;;;;;;;;;;;;;;;;;;;;;;;;;;6604:487;;:::o;9945:291::-;10031:4;2656:12;:10;:12::i;:::-;2646:22;;:6;;;;;;;;;;:22;;;2638:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10091:1:::1;10056:37;;10064:14;10056:37;;;;10048:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10192:14;10174:15;;:32;;;;;;;;;;;;;;;;;;10224:4;10217:11;;9945:291:::0;;;:::o;9002:102::-;9054:7;9081:15;;9074:22;;9002:102;:::o;9466:407::-;9529:7;9549:12;9564:1;9549:16;;9576:26;9605:9;:18;9615:7;9605:18;;;;;;;;;;;;;;;:31;;;9576:60;;9661:6;9657:187;9673:8;:15;;;;9671:1;:17;9657:187;;;9728:7;9713:22;;:8;9722:1;9713:11;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;:82;;;;;9760:9;:22;9770:8;9779:1;9770:11;;;;;;;;;;;;;;;;;;;;;;;;;9760:22;;;;;;;;;;;;;;;:35;;;9739:18;:56;9713:82;9710:122;;;9821:11;9830:1;9821:4;:8;;:11;;;;:::i;:::-;9814:18;;9710:122;9690:3;;;;;;;9657:187;;;;9861:4;9854:11;;;;9466:407;;;:::o;10309:272::-;10386:4;2656:12;:10;:12::i;:::-;2646:22;;:6;;;;;;;;;;:22;;;2638:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10428:2:::1;10411:13;:19;;:43;;;;;10451:3;10434:13;:20;;10411:43;10403:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10538:13;10521:14;:30;;;;10569:4;10562:11;;10309:272:::0;;;:::o;2521:79::-;2559:7;2586:6;;;;;;;;;;;2579:13;;2521:79;:::o;3337:37::-;;;;;;;;;;;;;:::o;4261:1163::-;4342:15;;4332:6;:25;;4310:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4453:22;4478:9;:19;;;4506:4;4478:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4453:59;;4555:9;:22;;;4596:12;:10;:12::i;:::-;4635:4;4659:6;4555:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4533:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4746:24;4773:54;4812:14;4773:9;:19;;;4801:4;4773:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;:54;;;;:::i;:::-;4746:81;;4838:24;4873:3;4838:39;;4933:1;4893:9;:23;4903:12;:10;:12::i;:::-;4893:23;;;;;;;;;;;;;;;:36;;;:41;4890:196;;;4949:8;4963:12;:10;:12::i;:::-;4949:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4890:196;;;5044:42;5055:12;:10;:12::i;:::-;5069:16;5044:10;:42::i;:::-;5005:9;:23;5015:12;:10;:12::i;:::-;5005:23;;;;;;;;;;;;;;;:36;;:81;;;;4890:196;5142:16;5097:9;:23;5107:12;:10;:12::i;:::-;5097:23;;;;;;;;;;;;;;;:42;;:61;;;;5222:58;5263:16;5222:9;:23;5232:12;:10;:12::i;:::-;5222:23;;;;;;;;;;;;;;;:36;;;:40;;:58;;;;:::i;:::-;5183:9;:23;5193:12;:10;:12::i;:::-;5183:23;;;;;;;;;;;;;;;:36;;:97;;;;5312:40;5335:16;5312:18;;:22;;:40;;;;:::i;:::-;5291:18;:61;;;;5378:38;5385:12;:10;:12::i;:::-;5399:16;5378:38;;;;;;;;;;;;;;;;;;;;;;;;;;4261:1163;;;;:::o;7103:111::-;7143:45;7151:9;:23;7161:12;:10;:12::i;:::-;7151:23;;;;;;;;;;;;;;;:36;;;7143:7;:45::i;:::-;7199:7;:5;:7::i;:::-;7103:111::o;8247:118::-;8306:7;8333:24;8344:7;8353:3;8333:10;:24::i;:::-;8326:31;;8247:118;;;:::o;7899:111::-;7951:7;7986:15;;;;;;;;;;;7971:31;;7899:111;:::o;8434:118::-;8489:7;8516:15;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8509:35;;8434:118;:::o;8615:133::-;8671:7;8698:9;:23;8708:12;:10;:12::i;:::-;8698:23;;;;;;;;;;;;;;;:42;;;8691:49;;8615:133;:::o;1846:106::-;1899:15;1934:10;1927:17;;1846:106;:::o;7226:618::-;7312:7;7357:1;7335:18;;:23;7332:49;;;7380:1;7373:8;;;;7332:49;7392:25;7420:15;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7392:56;;7459:16;7478:59;7499:9;:18;7509:7;7499:18;;;;;;;;;;;;;;;:37;;;7478:16;:20;;:59;;;;:::i;:::-;7459:78;;7548:30;7581:46;7623:3;7581:37;7603:14;;7581:17;:21;;:37;;;;:::i;:::-;:41;;:46;;;;:::i;:::-;7548:79;;7638:20;7661:108;7750:18;;7661:84;7713:9;:18;7723:7;7713:18;;;;;;;;;;;;;;;:31;;;7661:47;7702:5;7661:36;7688:8;7661:22;:26;;:36;;;;:::i;:::-;:40;;:47;;;;:::i;:::-;:51;;:84;;;;:::i;:::-;:88;;:108;;;;:::i;:::-;7638:131;;7787:49;7823:12;7787:9;:18;7797:7;7787:18;;;;;;;;;;;;;;;:31;;;:35;;:49;;;;:::i;:::-;7780:56;;;;;;7226:618;;;;;:::o;273:136::-;331:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;351:50;;273:136;;;;:::o;88:179::-;146:7;166:9;182:1;178;:5;166:17;;207:1;202;:6;;194:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:1;251:8;;;88:179;;;;:::o;611:467::-;669:7;919:1;914;:6;910:47;;;944:1;937:8;;;;910:47;967:9;983:1;979;:5;967:17;;1012:1;1007;1003;:5;;;;;;:10;995:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1069:1;1062:8;;;611:467;;;;;:::o;1084:132::-;1142:7;1169:39;1173:1;1176;1169:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1162:46;;1084:132;;;;:::o;415:190::-;501:7;534:1;529;:6;;537:12;521:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;561:9;577:1;573;:5;561:17;;596:1;589:8;;;415:190;;;;;:::o;1222:276::-;1308:7;1340:1;1336;:5;1343:12;1328:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1367:9;1383:1;1379;:5;;;;;;1367:17;;1489:1;1482:8;;;1222:276;;;;;:::o

Swarm Source

ipfs://e348e9775966c5736d4149faa215e8344ba512572b47edcf309fd48d5bba076e

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.