ETH Price: $1,865.84 (-0.02%)
 

Overview

ETH Balance

0.07449 ETH

Eth Value

$138.99 (@ $1,865.84/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Dividen...119745442021-03-04 22:37:491468 days ago1614897469IN
0xBea62796...72C9F87b8
0 ETH0.0040757282.00000145
Withdraw Dividen...119745362021-03-04 22:35:271468 days ago1614897327IN
0xBea62796...72C9F87b8
0 ETH0.0040757282.00000145
Withdraw Dividen...119745202021-03-04 22:31:081468 days ago1614897068IN
0xBea62796...72C9F87b8
0 ETH0.0040757282.00000145
Withdraw Dividen...119744832021-03-04 22:23:071468 days ago1614896587IN
0xBea62796...72C9F87b8
0 ETH0.0044236589
Withdraw Dividen...105517442020-07-29 2:21:461687 days ago1595989306IN
0xBea62796...72C9F87b8
0 ETH0.0022863846
Withdraw Dividen...105516962020-07-29 2:10:271687 days ago1595988627IN
0xBea62796...72C9F87b8
0 ETH0.0022863846
Withdraw Dividen...105516862020-07-29 2:07:491687 days ago1595988469IN
0xBea62796...72C9F87b8
0 ETH0.0022863846
Withdraw Dividen...105516762020-07-29 2:05:381687 days ago1595988338IN
0xBea62796...72C9F87b8
0 ETH0.0022863846
Withdraw Dividen...99316322020-04-23 23:18:351783 days ago1587683915IN
0xBea62796...72C9F87b8
0 ETH0.000223664.5
Withdraw Dividen...99316182020-04-23 23:14:441783 days ago1587683684IN
0xBea62796...72C9F87b8
0 ETH0.000229894.62522923
Withdraw Dividen...99316092020-04-23 23:12:371783 days ago1587683557IN
0xBea62796...72C9F87b8
0 ETH0.000229894.62522923
Withdraw Dividen...99315852020-04-23 23:08:191783 days ago1587683299IN
0xBea62796...72C9F87b8
0 ETH0.0020378641
Withdraw Dividen...98818902020-04-16 6:32:541791 days ago1587018774IN
0xBea62796...72C9F87b8
0 ETH0.00026865
Transfer98363582020-04-09 6:15:191798 days ago1586412919IN
0xBea62796...72C9F87b8
0.00900845 ETH0.00010525
Withdraw Dividen...98362162020-04-09 5:42:521798 days ago1586410972IN
0xBea62796...72C9F87b8
0 ETH0.000485377.5
Withdraw Dividen...98362072020-04-09 5:40:371798 days ago1586410837IN
0xBea62796...72C9F87b8
0 ETH0.000485377.5
Withdraw Dividen...98361922020-04-09 5:37:151798 days ago1586410635IN
0xBea62796...72C9F87b8
0 ETH0.000485377.5
Withdraw Dividen...98361742020-04-09 5:30:581798 days ago1586410258IN
0xBea62796...72C9F87b8
0 ETH0.0032683541
Transfer97314532020-03-24 2:12:481814 days ago1585015968IN
0xBea62796...72C9F87b8
0.08785501 ETH0.000168328
Transfer97198062020-03-22 6:40:331816 days ago1584859233IN
0xBea62796...72C9F87b8
0.4880946 ETH0.000210410

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer153366422022-08-14 0:40:34941 days ago1660437634
0xBea62796...72C9F87b8
0.0335 ETH
-122174712021-04-11 8:13:171431 days ago1618128797
0xBea62796...72C9F87b8
0.04099 ETH
-119745442021-03-04 22:37:491468 days ago1614897469
0xBea62796...72C9F87b8
0.6352875 ETH
-119745362021-03-04 22:35:271468 days ago1614897327
0xBea62796...72C9F87b8
0.6352875 ETH
-119745202021-03-04 22:31:081468 days ago1614897068
0xBea62796...72C9F87b8
0.6352875 ETH
-119744832021-03-04 22:23:071468 days ago1614896587
0xBea62796...72C9F87b8
0.6352875 ETH
-111248512020-10-25 9:46:351599 days ago1603619195
0xBea62796...72C9F87b8
0.0335 ETH
-111243212020-10-25 7:46:351599 days ago1603611995
0xBea62796...72C9F87b8
0.0335 ETH
-111241102020-10-25 6:58:011599 days ago1603609081
0xBea62796...72C9F87b8
0.0335 ETH
-111239192020-10-25 6:21:441599 days ago1603606904
0xBea62796...72C9F87b8
0.0335 ETH
-111236882020-10-25 5:31:421599 days ago1603603902
0xBea62796...72C9F87b8
0.0335 ETH
-111218132020-10-24 22:23:211599 days ago1603578201
0xBea62796...72C9F87b8
0.0335 ETH
-111215152020-10-24 21:25:251599 days ago1603574725
0xBea62796...72C9F87b8
0.0335 ETH
-111213422020-10-24 20:46:201599 days ago1603572380
0xBea62796...72C9F87b8
0.0335 ETH
-111211172020-10-24 19:56:221599 days ago1603569382
0xBea62796...72C9F87b8
0.0335 ETH
-111209172020-10-24 19:15:561599 days ago1603566956
0xBea62796...72C9F87b8
0.0335 ETH
-111207412020-10-24 18:42:561599 days ago1603564976
0xBea62796...72C9F87b8
0.0335 ETH
-111205712020-10-24 18:01:171599 days ago1603562477
0xBea62796...72C9F87b8
0.0335 ETH
-111204232020-10-24 17:26:301599 days ago1603560390
0xBea62796...72C9F87b8
0.0335 ETH
-111202472020-10-24 16:50:211599 days ago1603558221
0xBea62796...72C9F87b8
0.0335 ETH
-111197462020-10-24 15:01:371599 days ago1603551697
0xBea62796...72C9F87b8
0.0335 ETH
-111194952020-10-24 14:08:051600 days ago1603548485
0xBea62796...72C9F87b8
0.0335 ETH
-111192822020-10-24 13:21:241600 days ago1603545684
0xBea62796...72C9F87b8
0.0335 ETH
-111191112020-10-24 12:44:041600 days ago1603543444
0xBea62796...72C9F87b8
0.0335 ETH
-111184162020-10-24 9:59:291600 days ago1603533569
0xBea62796...72C9F87b8
0.0335 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShareToken

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-03-22
*/

pragma solidity 0.5.16;
// deployed at 0xBea62796855548154464F6C8E7BC92672C9F87b8

// @title ShareToken
// @notice Shares all ETH received by the contract with token holders.
// Example: If Alice was holding 5% of all ShareToken during a time when the contract received 100 ETH, then
// Alice gets 5 ETH.
// @dev This contract is a modification of OpenZeppelin's ERC20Detailed v2.3.0.
// SECURITY: We have removed the _mint and _burn functions and made the _totalSupply constant to prevent multiple
// security vulnerabilities related to improper accounting of dividends.
// SECURITY: We have added new functionality to track dividends that modifies the _transfer function.
contract ShareToken {
    using SafeMath for uint256;

    // ======
    // EVENTS
    // ======

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

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

    event DividendWithdrawal(address indexed account, uint256 amount);

    event Announce(string message);

    // ==========
    // CONSTANTS
    // ==========

    string  constant private _name = "Shares";

    string  constant private _symbol = "SHARE";

    uint8   constant private _decimals = 18;

    uint256 constant private _totalSupply = 1e8 * (10 ** uint256(_decimals));

    address constant private _speaker = 0x13f194f9141325c3C8c25b36772Ee5CF35c2ef3a;

    // =========
    // VARIABLES
    // =========

    struct Dividend {
        uint256 checkpoint; // total contract income when the Dividend was last updated
        uint256 dividendBalance; // dividend balance when the Dividend was last updated
    }

    uint256 private _totalEthWithdrawals; // total amount of ETH that has exited this contract

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => Dividend) private _dividends;

    // ========================
    // FALLBACK AND CONSTRUCTOR
    // ========================

    function() external payable {}

    constructor () public {
        // assign initial supply to original _designers
        _balances[0x6Da435A99877EB20b00DF4fD8Ea80A67Ecf39ADb] = _totalSupply.div(4);
        emit Transfer(address(0), 0x6Da435A99877EB20b00DF4fD8Ea80A67Ecf39ADb, _totalSupply.div(4));

        _balances[0xfcC65D8B75a902D0e25e968B003fcbAd4EeA9616] = _totalSupply.div(4);
        emit Transfer(address(0), 0xfcC65D8B75a902D0e25e968B003fcbAd4EeA9616, _totalSupply.div(4));

        _balances[0x036aF49114C79f3c87DaFe847dD2fF2e566cf7A9] = _totalSupply.div(4);
        emit Transfer(address(0), 0x036aF49114C79f3c87DaFe847dD2fF2e566cf7A9, _totalSupply.div(4));

        _balances[0x3504f5ea9E4AF3a31054Fb2Fe680Af65AAb92d74] = _totalSupply.div(4);
        emit Transfer(address(0), 0x3504f5ea9E4AF3a31054Fb2Fe680Af65AAb92d74, _totalSupply.div(4));
    }

    // ============================
    // PRIVATE / INTERNAL FUNCTIONS
    // ============================

    function _earnedSinceCheckpoint(address account) internal view returns (uint256) {
        uint256 incomeSinceLastUpdate = totalIncome().sub(_dividends[account].checkpoint);
        return incomeSinceLastUpdate.mul(_balances[account]).div(_totalSupply);
    }

    function _updateDividend(address account) internal {
        _dividends[account].dividendBalance = _dividends[account].dividendBalance.add(_earnedSinceCheckpoint(account));
        _dividends[account].checkpoint = totalIncome();
    }
   function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _updateDividend(sender);
        _updateDividend(recipient);

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    // SECURITY: This should be the only way to get ETH out of this contract.
    function _withdrawDividends(address payable account, uint256 amount) internal {
        _updateDividend(account);
        _dividends[account].dividendBalance = _dividends[account].dividendBalance.sub(amount);
        _totalEthWithdrawals = _totalEthWithdrawals.add(amount);

        emit DividendWithdrawal(account, amount);
        address(account).transfer(amount);
    }

    // =============================================
    // EXTERNAL FUNCTIONS THAT MODIFY CONTRACT STATE
    // =============================================

    function transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }


    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    function withdrawDividends(uint256 amount) external returns (bool) {
        _withdrawDividends(msg.sender, amount);
        return true;
    }

    function announce(bytes memory b) public {
        require(msg.sender == _speaker);
        emit Announce(bytesToString(b));
    }

    function pay() external payable {}

    // =======================
    // VIEW / PURE FUNCTIONS
    // =======================
    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure returns (uint256) {
        return _totalSupply;
    }

    function totalEthWithdrawals() public view returns (uint256) {
        return _totalEthWithdrawals;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function dividendBalanceOf(address account) public view returns (uint256) {
        return _dividends[account].dividendBalance.add(_earnedSinceCheckpoint(account));
    }

    // @return The total amount of ETH this contract has ever received.
    // @dev This is a non-decreasing function over time.
    function totalIncome() public view returns (uint256) {
        return address(this).balance.add(_totalEthWithdrawals);
    }

    function stringToBytes(string memory m) public pure returns (bytes memory) {
        bytes memory b = abi.encode(m);
        return b;
    }

    function bytesToString(bytes memory b) public pure returns (string memory) {
        string memory s = abi.decode(b, (string));
        return s;
    }
}



/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, reverts on overflow.
     */
    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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"Announce","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DividendWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"announce","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"b","type":"bytes"}],"name":"bytesToString","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"pay","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"m","type":"string"}],"name":"stringToBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalEthWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalIncome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506200003a6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b60016000736da435a99877eb20b00df4fd8ea80a67ecf39adb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550736da435a99877eb20b00df4fd8ea80a67ecf39adb73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200011d6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6040518082815260200191505060405180910390a36200015a6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6001600073fcc65d8b75a902d0e25e968b003fcbad4eea961673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fcc65d8b75a902d0e25e968b003fcbad4eea961673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023d6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6040518082815260200191505060405180910390a36200027a6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6001600073036af49114c79f3c87dafe847dd2ff2e566cf7a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073036af49114c79f3c87dafe847dd2ff2e566cf7a973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200035d6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6040518082815260200191505060405180910390a36200039a6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b60016000733504f5ea9e4af3a31054fb2fe680af65aab92d7473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550733504f5ea9e4af3a31054fb2fe680af65aab92d7473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200047d6004601260ff16600a0a6305f5e100026200049860201b6200191c1790919060201c565b6040518082815260200191505060405180910390a3620004c0565b6000808211620004a757600080fd5b6000828481620004b357fe5b0490508091505092915050565b611a0580620004d06000396000f3fe6080604052600436106101145760003560e01c8063522577e9116100a0578063a9059cbb11610064578063a9059cbb146106d7578063b216706c1461074a578063dd62ed3e14610812578063e083d4c814610897578063e106fb4b146108fc57610114565b8063522577e91461051957806370a08231146105445780638eb70d15146105a957806395d89b41146105d4578063a457c2d71461066457610114565b806323b872dd116100e757806323b872dd1461024e5780632514a6b4146102e1578063313ce56714610334578063395093511461036557806339614e4f146103d857610114565b806306fdde0314610116578063095ea7b3146101a657806318160ddd146102195780631b9265b814610244575b005b34801561012257600080fd5b5061012b610a3d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016b578082015181840152602081019050610150565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b506101ff600480360360408110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7a565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b5061022e610a91565b6040518082815260200191505060405180910390f35b61024c610aa6565b005b34801561025a57600080fd5b506102c76004803603606081101561027157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aa8565b604051808215151515815260200191505060405180910390f35b3480156102ed57600080fd5b5061031a6004803603602081101561030457600080fd5b8101908080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b34801561034057600080fd5b50610349610b6e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037157600080fd5b506103be6004803603604081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b77565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b5061049e600480360360208110156103fb57600080fd5b810190808035906020019064010000000081111561041857600080fd5b82018360208201111561042a57600080fd5b8035906020019184600183028401116401000000008311171561044c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104de5780820151818401526020810190506104c3565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052557600080fd5b5061052e610cfa565b6040518082815260200191505060405180910390f35b34801561055057600080fd5b506105936004803603602081101561056757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d16565b6040518082815260200191505060405180910390f35b3480156105b557600080fd5b506105be610d5f565b6040518082815260200191505060405180910390f35b3480156105e057600080fd5b506105e9610d68565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062957808201518184015260208101905061060e565b50505050905090810190601f1680156106565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561067057600080fd5b506106bd6004803603604081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610da5565b604051808215151515815260200191505060405180910390f35b3480156106e357600080fd5b50610730600480360360408110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4a565b604051808215151515815260200191505060405180910390f35b34801561075657600080fd5b506108106004803603602081101561076d57600080fd5b810190808035906020019064010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460018302840111640100000000831117156107be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e61565b005b34801561081e57600080fd5b506108816004803603604081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f54565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108e6600480360360208110156108ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fdb565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109c26004803603602081101561091f57600080fd5b810190808035906020019064010000000081111561093c57600080fd5b82018360208201111561094e57600080fd5b8035906020019184600183028401116401000000008311171561097057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611041565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a025780820151818401526020810190506109e7565b50505050905090810190601f168015610a2f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606040518060400160405280600681526020017f5368617265730000000000000000000000000000000000000000000000000000815250905090565b6000610a873384846110d4565b6001905092915050565b6000601260ff16600a0a6305f5e10002905090565b565b6000610ab58484846112cb565b610b4e8433610b4985600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b6110d4565b600190509392505050565b6000610b65338361159d565b60019050919050565b60006012905090565b6000610c123384610c0d85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f590919063ffffffff16565b6110d4565b6001905092915050565b606080828060200190516020811015610c3457600080fd5b8101908080516040519392919084640100000000821115610c5457600080fd5b83820191506020820185811115610c6a57600080fd5b8251866001820283011164010000000082111715610c8757600080fd5b8083526020830192505050908051906020019080838360005b83811015610cbb578082015181840152602081019050610ca0565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b50604052505050905080915050919050565b6000610d11600054476116f590919063ffffffff16565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054905090565b60606040518060400160405280600581526020017f5348415245000000000000000000000000000000000000000000000000000000815250905090565b6000610e403384610e3b85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b6110d4565b6001905092915050565b6000610e573384846112cb565b6001905092915050565b7313f194f9141325c3c8c25b36772ee5cf35c2ef3a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ead57600080fd5b7f8b349b2833e6c07559d3a9f19bc56b871c80681e9b2da60572b6bc2e83813a2f610ed782610c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f17578082015181840152602081019050610efc565b50505050905090810190601f168015610f445780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061103a610fe983611714565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546116f590919063ffffffff16565b9050919050565b606080826040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561108857808201518184015260208101905061106d565b50505050905090810190601f1680156110b55780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052905080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561115a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806119ad6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806119666022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119436023913960400191505060405180910390fd5b6113e0836117ee565b6113e9826117ee565b61143b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114d081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561158c57600080fd5b600082840390508091505092915050565b6115a6826117ee565b6115fb81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461157d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611656816000546116f590919063ffffffff16565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167f63e20f2e8b302f8b90166f56a6a029d3e84c22df287c6faac43432a1c236e705826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116f0573d6000803e3d6000fd5b505050565b60008082840190508381101561170a57600080fd5b8091505092915050565b600080611773600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611765610cfa565b61157d90919063ffffffff16565b90506117e6601260ff16600a0a6305f5e100026117d8600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846118e290919063ffffffff16565b61191c90919063ffffffff16565b915050919050565b61184b6117fa82611714565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546116f590919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611899610cfa565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000808314156118f55760009050611916565b600082840290508284828161190657fe5b041461191157600080fd5b809150505b92915050565b600080821161192a57600080fd5b600082848161193557fe5b049050809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158205680f85c5dcb6dc848196f0e99074fc4f70912efaeaf8b57833057bf04e7471a64736f6c63430005100032

Deployed Bytecode

0x6080604052600436106101145760003560e01c8063522577e9116100a0578063a9059cbb11610064578063a9059cbb146106d7578063b216706c1461074a578063dd62ed3e14610812578063e083d4c814610897578063e106fb4b146108fc57610114565b8063522577e91461051957806370a08231146105445780638eb70d15146105a957806395d89b41146105d4578063a457c2d71461066457610114565b806323b872dd116100e757806323b872dd1461024e5780632514a6b4146102e1578063313ce56714610334578063395093511461036557806339614e4f146103d857610114565b806306fdde0314610116578063095ea7b3146101a657806318160ddd146102195780631b9265b814610244575b005b34801561012257600080fd5b5061012b610a3d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016b578082015181840152602081019050610150565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b506101ff600480360360408110156101c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7a565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b5061022e610a91565b6040518082815260200191505060405180910390f35b61024c610aa6565b005b34801561025a57600080fd5b506102c76004803603606081101561027157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aa8565b604051808215151515815260200191505060405180910390f35b3480156102ed57600080fd5b5061031a6004803603602081101561030457600080fd5b8101908080359060200190929190505050610b59565b604051808215151515815260200191505060405180910390f35b34801561034057600080fd5b50610349610b6e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037157600080fd5b506103be6004803603604081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b77565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b5061049e600480360360208110156103fb57600080fd5b810190808035906020019064010000000081111561041857600080fd5b82018360208201111561042a57600080fd5b8035906020019184600183028401116401000000008311171561044c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104de5780820151818401526020810190506104c3565b50505050905090810190601f16801561050b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052557600080fd5b5061052e610cfa565b6040518082815260200191505060405180910390f35b34801561055057600080fd5b506105936004803603602081101561056757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d16565b6040518082815260200191505060405180910390f35b3480156105b557600080fd5b506105be610d5f565b6040518082815260200191505060405180910390f35b3480156105e057600080fd5b506105e9610d68565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062957808201518184015260208101905061060e565b50505050905090810190601f1680156106565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561067057600080fd5b506106bd6004803603604081101561068757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610da5565b604051808215151515815260200191505060405180910390f35b3480156106e357600080fd5b50610730600480360360408110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4a565b604051808215151515815260200191505060405180910390f35b34801561075657600080fd5b506108106004803603602081101561076d57600080fd5b810190808035906020019064010000000081111561078a57600080fd5b82018360208201111561079c57600080fd5b803590602001918460018302840111640100000000831117156107be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e61565b005b34801561081e57600080fd5b506108816004803603604081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f54565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108e6600480360360208110156108ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fdb565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109c26004803603602081101561091f57600080fd5b810190808035906020019064010000000081111561093c57600080fd5b82018360208201111561094e57600080fd5b8035906020019184600183028401116401000000008311171561097057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611041565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a025780820151818401526020810190506109e7565b50505050905090810190601f168015610a2f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606040518060400160405280600681526020017f5368617265730000000000000000000000000000000000000000000000000000815250905090565b6000610a873384846110d4565b6001905092915050565b6000601260ff16600a0a6305f5e10002905090565b565b6000610ab58484846112cb565b610b4e8433610b4985600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b6110d4565b600190509392505050565b6000610b65338361159d565b60019050919050565b60006012905090565b6000610c123384610c0d85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f590919063ffffffff16565b6110d4565b6001905092915050565b606080828060200190516020811015610c3457600080fd5b8101908080516040519392919084640100000000821115610c5457600080fd5b83820191506020820185811115610c6a57600080fd5b8251866001820283011164010000000082111715610c8757600080fd5b8083526020830192505050908051906020019080838360005b83811015610cbb578082015181840152602081019050610ca0565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b50604052505050905080915050919050565b6000610d11600054476116f590919063ffffffff16565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054905090565b60606040518060400160405280600581526020017f5348415245000000000000000000000000000000000000000000000000000000815250905090565b6000610e403384610e3b85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b6110d4565b6001905092915050565b6000610e573384846112cb565b6001905092915050565b7313f194f9141325c3c8c25b36772ee5cf35c2ef3a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ead57600080fd5b7f8b349b2833e6c07559d3a9f19bc56b871c80681e9b2da60572b6bc2e83813a2f610ed782610c1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f17578082015181840152602081019050610efc565b50505050905090810190601f168015610f445780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061103a610fe983611714565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546116f590919063ffffffff16565b9050919050565b606080826040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561108857808201518184015260208101905061106d565b50505050905090810190601f1680156110b55780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052905080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561115a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806119ad6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806119666022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119436023913960400191505060405180910390fd5b6113e0836117ee565b6113e9826117ee565b61143b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114d081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561158c57600080fd5b600082840390508091505092915050565b6115a6826117ee565b6115fb81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461157d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611656816000546116f590919063ffffffff16565b6000819055508173ffffffffffffffffffffffffffffffffffffffff167f63e20f2e8b302f8b90166f56a6a029d3e84c22df287c6faac43432a1c236e705826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116f0573d6000803e3d6000fd5b505050565b60008082840190508381101561170a57600080fd5b8091505092915050565b600080611773600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611765610cfa565b61157d90919063ffffffff16565b90506117e6601260ff16600a0a6305f5e100026117d8600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846118e290919063ffffffff16565b61191c90919063ffffffff16565b915050919050565b61184b6117fa82611714565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546116f590919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611899610cfa565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000808314156118f55760009050611916565b600082840290508284828161190657fe5b041461191157600080fd5b809150505b92915050565b600080821161192a57600080fd5b600082848161193557fe5b049050809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723158205680f85c5dcb6dc848196f0e99074fc4f70912efaeaf8b57833057bf04e7471a64736f6c63430005100032

Deployed Bytecode Sourcemap

685:7383:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6564:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6564:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5265:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5265:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6841:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6841:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6428:34;;;:::i;:::-;;5423:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5423:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5423:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6133:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6133:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6133:146:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6750:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6750:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5691:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5691:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5691:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7911:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7911:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7911:154:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7911:154:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7911:154:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7911:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7911:154:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7911:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7626:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7626:126:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7055:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7055:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7055:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6940:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6940:107:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6655:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6655:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6655:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5907:218;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5907:218:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5907:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5099:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5099:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5099:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6287:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6287:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6287:133:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6287:133:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6287:133:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6287:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6287:133:0;;;;;;;;;;;;;;;:::i;:::-;;7173:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7173:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7173:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7315:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7315:172:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7315:172:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7760:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7760:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7760:143:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7760:143:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7760:143:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7760:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7760:143:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7760:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6564:83;6601:13;6634:5;;;;;;;;;;;;;;;;;6627:12;;6564:83;:::o;5265:150::-;5332:4;5349:36;5358:10;5370:7;5379:5;5349:8;:36::i;:::-;5403:4;5396:11;;5265:150;;;;:::o;6841:91::-;6885:7;1269:2;1333:18;;1327:2;:24;1320:3;:32;6905:19;;6841:91;:::o;6428:34::-;:::o;5423:258::-;5514:4;5531:36;5541:6;5549:9;5560:6;5531:9;:36::i;:::-;5578:73;5587:6;5595:10;5607:43;5643:6;5607:11;:19;5619:6;5607:19;;;;;;;;;;;;;;;:31;5627:10;5607:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;5578:8;:73::i;:::-;5669:4;5662:11;;5423:258;;;;;:::o;6133:146::-;6194:4;6211:38;6230:10;6242:6;6211:18;:38::i;:::-;6267:4;6260:11;;6133:146;;;:::o;6750:83::-;6791:5;1269:2;6809:16;;6750:83;:::o;5691:208::-;5773:4;5790:79;5799:10;5811:7;5820:48;5857:10;5820:11;:23;5832:10;5820:23;;;;;;;;;;;;;;;:32;5844:7;5820:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;5790:8;:79::i;:::-;5887:4;5880:11;;5691:208;;;;:::o;7911:154::-;7971:13;7997:15;8026:1;8015:23;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8015:23:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;8015:23:0;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8015:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7997:41;;8056:1;8049:8;;;7911:154;;;:::o;7626:126::-;7670:7;7697:47;7723:20;;7697:21;:25;;:47;;;;:::i;:::-;7690:54;;7626:126;:::o;7055:110::-;7112:7;7139:9;:18;7149:7;7139:18;;;;;;;;;;;;;;;;7132:25;;7055:110;;;:::o;6940:107::-;6992:7;7019:20;;7012:27;;6940:107;:::o;6655:87::-;6694:13;6727:7;;;;;;;;;;;;;;;;;6720:14;;6655:87;:::o;5907:218::-;5994:4;6011:84;6020:10;6032:7;6041:53;6078:15;6041:11;:23;6053:10;6041:23;;;;;;;;;;;;;;;:32;6065:7;6041:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;6011:8;:84::i;:::-;6113:4;6106:11;;5907:218;;;;:::o;5099:158::-;5170:4;5187:40;5197:10;5209:9;5220:6;5187:9;:40::i;:::-;5245:4;5238:11;;5099:158;;;;:::o;6287:133::-;1397:42;6347:22;;:10;:22;;;6339:31;;;;;;6386:26;6395:16;6409:1;6395:13;:16::i;:::-;6386:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6386:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6287:133;:::o;7173:134::-;7245:7;7272:11;:18;7284:5;7272:18;;;;;;;;;;;;;;;:27;7291:7;7272:27;;;;;;;;;;;;;;;;7265:34;;7173:134;;;;:::o;7315:172::-;7380:7;7407:72;7447:31;7470:7;7447:22;:31::i;:::-;7407:10;:19;7418:7;7407:19;;;;;;;;;;;;;;;:35;;;:39;;:72;;;;:::i;:::-;7400:79;;7315:172;;;:::o;7760:143::-;7821:12;7846:14;7874:1;7863:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7863:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7863:13:0;;;7846:30;;7894:1;7887:8;;;7760:143;;;:::o;4125:335::-;4235:1;4218:19;;:5;:19;;;;4210:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:1;4297:21;;:7;:21;;;;4289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4400:5;4370:11;:18;4382:5;4370:18;;;;;;;;;;;;;;;:27;4389:7;4370:27;;;;;;;;;;;;;;;:35;;;;4437:7;4421:31;;4430:5;4421:31;;;4446:5;4421:31;;;;;;;;;;;;;;;;;;4125:335;;;:::o;3615:502::-;3731:1;3713:20;;:6;:20;;;;3705:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3815:1;3794:23;;:9;:23;;;;3786:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3870:23;3886:6;3870:15;:23::i;:::-;3904:26;3920:9;3904:15;:26::i;:::-;3963:29;3985:6;3963:9;:17;3973:6;3963:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;3943:9;:17;3953:6;3943:17;;;;;;;;;;;;;;;:49;;;;4026:32;4051:6;4026:9;:20;4036:9;4026:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;4003:9;:20;4013:9;4003:20;;;;;;;;;;;;;;;:55;;;;4091:9;4074:35;;4083:6;4074:35;;;4102:6;4074:35;;;;;;;;;;;;;;;;;;3615:502;;;:::o;9299:150::-;9357:7;9390:1;9385;:6;;9377:15;;;;;;9403:9;9419:1;9415;:5;9403:17;;9440:1;9433:8;;;9299:150;;;;:::o;4547:380::-;4636:24;4652:7;4636:15;:24::i;:::-;4709:47;4749:6;4709:10;:19;4720:7;4709:19;;;;;;;;;;;;;;;:35;;;:39;;:47;;;;:::i;:::-;4671:10;:19;4682:7;4671:19;;;;;;;;;;;;;;;:35;;:85;;;;4790:32;4815:6;4790:20;;:24;;:32;;;;:::i;:::-;4767:20;:55;;;;4859:7;4840:35;;;4868:6;4840:35;;;;;;;;;;;;;;;;;;4894:7;4886:25;;:33;4912:6;4886:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4886:33:0;4547:380;;:::o;9537:150::-;9595:7;9615:9;9631:1;9627;:5;9615:17;;9656:1;9651;:6;;9643:15;;;;;;9678:1;9671:8;;;9537:150;;;;:::o;3103:262::-;3175:7;3195:29;3227:49;3245:10;:19;3256:7;3245:19;;;;;;;;;;;;;;;:30;;;3227:13;:11;:13::i;:::-;:17;;:49;;;;:::i;:::-;3195:81;;3294:63;1269:2;1333:18;;1327:2;:24;1320:3;:32;3294:45;3320:9;:18;3330:7;3320:18;;;;;;;;;;;;;;;;3294:21;:25;;:45;;;;:::i;:::-;:49;;:63;;;;:::i;:::-;3287:70;;;3103:262;;;:::o;3373:237::-;3473:72;3513:31;3536:7;3513:22;:31::i;:::-;3473:10;:19;3484:7;3473:19;;;;;;;;;;;;;;;:35;;;:39;;:72;;;;:::i;:::-;3435:10;:19;3446:7;3435:19;;;;;;;;;;;;;;;:35;;:110;;;;3589:13;:11;:13::i;:::-;3556:10;:19;3567:7;3556:19;;;;;;;;;;;;;;;:30;;:46;;;;3373:237;:::o;8290:433::-;8348:7;8597:1;8592;:6;8588:47;;;8622:1;8615:8;;;;8588:47;8647:9;8663:1;8659;:5;8647:17;;8692:1;8687;8683;:5;;;;;;:10;8675:19;;;;;;8714:1;8707:8;;;8290:433;;;;;:::o;8858:303::-;8916:7;9015:1;9011;:5;9003:14;;;;;;9028:9;9044:1;9040;:5;;;;;;9028:17;;9152:1;9145:8;;;8858:303;;;;:::o

Swarm Source

bzzr://5680f85c5dcb6dc848196f0e99074fc4f70912efaeaf8b57833057bf04e7471a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.