Contract 0x8D5CA96e9984662625e6cbF490Da40c9D7270865 5

 
 
Txn Hash
Method
Block
From
To
Value
0xca416ee29b6a3bca5f3023f7c632a313cda9306b61d082a298a1a747608dd5edSell160889632022-12-01 9:08:236 days 53 mins ago0x666024e9855bd8dcbbf1a91c2d40f31c27699254 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00119613 12.54959838
0xcf0df024bcb28d5cf25d6629b9fdd56eb0466b116b666d1df00f9d13170adeebSell160851732022-11-30 20:25:596 days 13 hrs ago0x54667dc6aba361ac5efd28d3b558f8bc7ae02ce0 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00150722 15.79851007
0xfc3cab925e2e852b8fb1dd75628f15b962a0437872229c2ba4369d5dfc3e2116Stake End160849962022-11-30 19:49:476 days 14 hrs ago0x54667dc6aba361ac5efd28d3b558f8bc7ae02ce0 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.02725751 11
0x9babcbb5cf45807f6e40b29fed806f81c074665a6e93faa79aa32b003e7706e9Sell160591292022-11-27 5:07:4710 days 4 hrs ago0xaefeb36820bd832038e8e4f73edbd5f48d3b4e50 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00096819 10.69532433
0x78ff614795fb79b28db0ad8913528955a0539728f84f62aca1290706ec3acbc7Sell160571012022-11-26 22:20:3510 days 11 hrs ago0xb834b19da116d38f09e6c1f68900d86f081bf5cf IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00071399 9.11839556
0x210f779f7f82859c95f6fb4ad31be3502d94a8a4c83ac6d1032482f168405712Sell160519242022-11-26 4:58:2311 days 5 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00085214 10.8826542
0xfbd5b65d5868e24f1e318244173082e5b7ef850d5a2d56a676ceaeebda7ea187Sell160443822022-11-25 3:41:3512 days 6 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00140919 14.77097106
0x4626c757591284bf4ff5494b7bdfc5ae114f87aacd13581b645cce21fd7eea25Sell160147602022-11-21 0:18:5916 days 9 hrs ago0xc829e348a14b70fdb0cddfacd4191e4eee128e22 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00113607 14.52320016
0x6863a79952475505cec33619012346ad3fe6e944d32529d5c7db424e3801bbf5Stake End160147452022-11-21 0:15:5916 days 9 hrs ago0xc829e348a14b70fdb0cddfacd4191e4eee128e22 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.02961594 12.08194526
0x2997481f4bde9cfdc4b8b987749832b37737fffe4f4eb8a67d1e7d0ab6fac8dbSell160098072022-11-20 7:42:5917 days 2 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00099374 12.69105361
0x2c6523c17af2f76c9f5ef6adc9668e5e0f20d554e9a29c56e7834280304bd3d7Sell160012192022-11-19 2:56:4718 days 7 hrs ago0x067053411269f540a09fcd7babb7747472af8745 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00119795 12.55681476
0x200ddec7b8406333257479253940acb7aac91948409b7f3b9b27c7abf845f057Sell159097612022-11-06 8:23:4731 days 1 hr ago0xbdf4d686f0018c5f7a12f5d38c45c5956b34f7ee IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00092337 11.79049249
0x10b90643ed500727c51f0b2ff4a8a92d5fefb468dcc712160ea5984640e42ae4Sell158875632022-11-03 5:59:2334 days 4 hrs ago0xc60fabf2420b5cd0712389ddcc923bbcda16d74c IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00151092 15.83527185
0x5fdd09265047b62fe9a4310a451195fc5080be45c93fa7d6013026de2e451b57Stake End158875572022-11-03 5:58:1134 days 4 hrs ago0xc60fabf2420b5cd0712389ddcc923bbcda16d74c IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.0320517 14.07767123
0xbf079149ed635b0d7aa05c83de65706bd54afc8fe1a2b04c93285588758030faSell158866002022-11-03 2:46:3534 days 7 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00110732 14.14158632
0x6e830b47e2e33f3b3f03df38911e9aa1929fd066355eb9fb31c48ffc0bb93f32Sell158817532022-11-02 10:30:3534 days 23 hrs ago0x7253ba8c85efc0681a021e884ee08b9ff953bbe2 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00099479 12.70446018
0x74b740763990d30eb52683dc62cec2deab2fa2f5cc5e051bf4664ecb5aa0cb9aSell158797752022-11-02 3:53:2335 days 6 hrs ago0x183e40fc7a3901176153960cbe5dce8649bc510b IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00105679 13.49417448
0xfc2ca871d4430bc4e1b4d2e24df02249fe25ba4438aed2276aa90fa63b6b8846Stake End158797532022-11-02 3:48:5935 days 6 hrs ago0x183e40fc7a3901176153960cbe5dce8649bc510b IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.03518437 14.47101014
0xa4b8be8395e2c61cba5f2b439d28c8cc071b69812f97570aa2c42c235751bb51Sell157780852022-10-18 22:49:3549 days 11 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00211922 22.21338679
0x216b6cc98cff2d0bea64e8de5f51565655078da11026a9fbd78c718543d24753Sell157712272022-10-17 23:51:5950 days 10 hrs ago0x21935251e90364885d59750d17f1c132ad1bcacb IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00140452 17.95487622
0x0fe6ac41274a34f430b98e5b9e38d1e762a695ef776589ace095a4f6d4ee00e6Stake End157712012022-10-17 23:46:4750 days 10 hrs ago0x21935251e90364885d59750d17f1c132ad1bcacb IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.0039271 17.39441803
0xda7f9482d61aa1d22be5e9becbecf1b3939fdccc3e325481ba8cf8be87371f76Sell156984082022-10-07 19:51:2360 days 14 hrs ago0xcac73259b0a348b967950c95d379f90646b67103 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.0007389 9.44584552
0x7113be4aab9ca923ab55b4d7005dcc25fa1ba9ba38ed238de4fab42fd23010e3Sell156778562022-10-04 22:51:2363 days 11 hrs ago0xb834b19da116d38f09e6c1f68900d86f081bf5cf IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00102409 10.73444238
0xb449cc04af01cad7fe98aad45da305827299ecb7912ec529d5e6b580f63b6fd7Sell156426462022-09-30 0:42:4768 days 9 hrs ago0xfed9f8cb3c55618f513e2bb717a01452cad2d146 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00143448 15.03608532
0x7bb4c5bb37789f554a99baafbed552534006f96acdac700f3ca5d2d6f9b7fcf1Sell155720262022-09-20 3:30:1178 days 6 hrs ago0x23875cf45c0ca6cabdb653a332031be5696482a8 IN  0x8d5ca96e9984662625e6cbf490da40c9d72708650 Ether0.00094447 12.07567391
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HRS

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-02-22
*/

pragma solidity ^0.4.26;

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return a / b;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

contract EXCH {
    function distribute(uint256 _amount) public returns (uint256);
}

contract TOKEN {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function stakeStart(uint256 newStakedHearts, uint256 newStakedDays) external;
    function stakeEnd(uint256 stakeIndex, uint40 stakeIdParam) external;
    function stakeCount(address stakerAddr) external view returns (uint256);
    function stakeLists(address owner, uint256 stakeIndex) external view returns (uint40, uint72, uint72, uint16, uint16, uint16, bool);
    function currentDay() external view returns (uint256);
}

contract Ownable {
  address public owner;

  constructor() public {
    owner = address(0xAeFeB36820bd832038E8e4F73eDbD5f48D3b4E50);
  }

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

contract HRS is Ownable {
    using SafeMath for uint256;

    uint ACTIVATION_TIME = 1582416000;

    modifier isActivated {
        require(now >= ACTIVATION_TIME);

        if (now <= (ACTIVATION_TIME + 2 minutes)) {
            require(tx.gasprice <= 0.1 szabo);
        }
        _;
    }

    modifier onlyTokenHolders() {
        require(myTokens(true) > 0);
        _;
    }

    modifier isStakeActivated {
        require(stakeActivated == true);
        _;
    }

    event onDistribute(
        address indexed customerAddress,
        uint256 tokens
    );

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

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingHEX,
        uint256 tokensMinted,
        uint256 timestamp
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 hexEarned,
        uint256 timestamp
    );

    event onTokenAppreciation(
        uint256 tokenPrice,
        uint256 timestamp
    );

    event onStakeStart(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 currentTokens,
        uint256 timestamp
    );

    event onStakeEnd(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 returnAmount,
        uint256 difference,
        uint256 timestamp
    );

    string public name = "HEXRISE";
    string public symbol = "HEX3";
    uint8 constant public decimals = 8;
    uint256 constant internal magnitude = 1e8;

    uint8 constant internal transferFee = 1;
    uint8 constant internal buyInFee = 4;
    uint8 constant internal sellOutFee = 4;
    uint8 constant internal devFee = 1;
    uint8 constant internal hexTewFee = 1;

    mapping(address => uint256) private tokenBalanceLedger;
    mapping(address => uint256) public lockedHexBalanceLedger;

    struct Stats {
       uint256 deposits;
       uint256 withdrawals;
       uint256 staked;
       uint256 activeStakes;
    }

    mapping(address => Stats) public playerStats;

    uint256 public totalStakeBalance = 0;
    uint256 public totalPlayer = 0;
    uint256 public totalDonation = 0;
    uint256 public totalFundReceived = 0;
    uint256 public totalFundCollected = 0; 

    uint256 private tokenSupply = 0;
    uint256 private contractValue = 0;
    uint256 private tokenPrice = 100000000;

    EXCH exchange;
    TOKEN erc20;

    struct StakeStore {
      uint40 stakeID;
      uint256 hexAmount;
      uint72 stakeShares;
      uint16 lockedDay;
      uint16 stakedDays;
      uint16 unlockedDay;
      bool started;
      bool ended;
    }

    bool stakeActivated = true;
    mapping(address => mapping(uint256 => StakeStore)) public stakeLists;

    constructor() public {
        exchange = EXCH(address(0xD495cC8C7c29c7fA3E027a5759561Ab68C363609));
        erc20 = TOKEN(address(0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39));
    }

    function() payable public {
        revert();
    }

    function checkAndTransferHEX(uint256 _amount) private {
        require(erc20.transferFrom(msg.sender, address(this), _amount) == true, "transfer must succeed");
    }

    function appreciateTokenPrice(uint256 _amount) isActivated public {
        require(_amount > 0, "must be a positive value");
        checkAndTransferHEX(_amount);
        contractValue = contractValue.add(_amount);
        totalDonation += _amount;

        if (tokenSupply > magnitude) {
            tokenPrice = (contractValue.mul(magnitude)) / tokenSupply;
        }

        emit onDistribute(msg.sender, _amount);
        emit onTokenAppreciation(tokenPrice, now);
    }

    function payFund() public {
        uint256 _hexToPay = totalFundCollected.sub(totalFundReceived);
        require(_hexToPay > 0);
        totalFundReceived = totalFundReceived.add(_hexToPay);
        erc20.approve(exchange, _hexToPay);
        exchange.distribute(_hexToPay);
    }

    function buy(uint256 _amount) public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(msg.sender, _amount);
    }

    function buyFor(uint256 _amount, address _customerAddress) public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(_customerAddress, _amount);
    }

    function _purchaseTokens(address _customerAddress, uint256 _incomingHEX) private returns(uint256) {
        uint256 _amountOfTokens = (_incomingHEX.mul(magnitude)) / tokenPrice;

        require(_amountOfTokens > 0 && _amountOfTokens.add(tokenSupply) > tokenSupply);

        tokenBalanceLedger[_customerAddress] =  tokenBalanceLedger[_customerAddress].add(_amountOfTokens);
        tokenSupply = tokenSupply.add(_amountOfTokens);

        emit Transfer(address(0), _customerAddress, _amountOfTokens);

        return _amountOfTokens;
    }

    function purchaseTokens(address _customerAddress, uint256 _incomingHEX) private isActivated returns (uint256) {
        if (playerStats[_customerAddress].deposits == 0) {
            totalPlayer++;
        }

        playerStats[_customerAddress].deposits += _incomingHEX;

        require(_incomingHEX > 0);

        uint256 _devFee = _incomingHEX.mul(devFee).div(100);
        uint256 _hexTewFee = _incomingHEX.mul(hexTewFee).div(100);
        uint256 _fee = _incomingHEX.mul(buyInFee).div(100);

        _purchaseTokens(owner, _devFee);
        totalFundCollected = totalFundCollected.add(_hexTewFee);

        uint256 _amountOfTokens = _purchaseTokens(_customerAddress, _incomingHEX.sub(_fee).sub(_devFee).sub(_hexTewFee));
            
        contractValue = contractValue.add(_incomingHEX.sub(_hexTewFee));

        if (hexToSendFund() >= 10000e8) {
            payFund();
        }

        if (tokenSupply > magnitude) {
            tokenPrice = (contractValue.mul(magnitude)) / tokenSupply;
        }

        emit onTokenPurchase(_customerAddress, _incomingHEX, _amountOfTokens, now);
        emit onTokenAppreciation(tokenPrice, now);

        return _amountOfTokens;
    }

    function sell(uint256 _amountOfTokens) isActivated onlyTokenHolders public {
        address _customerAddress = msg.sender;
        uint256 _lockedToken = (lockedHexBalanceLedger[_customerAddress].mul(magnitude)) / tokenPrice;

        require(_amountOfTokens > 0 && _amountOfTokens <= tokenBalanceLedger[_customerAddress].sub(_lockedToken));

        uint256 _hex = _amountOfTokens.mul(tokenPrice).div(magnitude);
        uint256 _fee = _hex.mul(sellOutFee).div(100);

        tokenSupply = tokenSupply.sub(_amountOfTokens);
        tokenBalanceLedger[_customerAddress] = tokenBalanceLedger[_customerAddress].sub(_amountOfTokens);

        _hex = _hex.sub(_fee);

        contractValue = contractValue.sub(_hex);

        if (tokenSupply > magnitude) {
            tokenPrice = (contractValue.mul(magnitude)) / tokenSupply;
        }

        erc20.transfer(_customerAddress, _hex);
        playerStats[_customerAddress].withdrawals += _hex;

        emit Transfer(_customerAddress, address(0), _amountOfTokens);
        emit onTokenSell(_customerAddress, _amountOfTokens, _hex, now);
        emit onTokenAppreciation(tokenPrice, now);
    }

    function transfer(address _toAddress, uint256 _amountOfTokens) isActivated onlyTokenHolders external returns (bool) {
        address _customerAddress = msg.sender;
        uint256 _lockedToken = (lockedHexBalanceLedger[_customerAddress].mul(magnitude)) / tokenPrice;

        require(_amountOfTokens > 0 && _amountOfTokens <= tokenBalanceLedger[_customerAddress].sub(_lockedToken));

        uint256 _tokenFee = _amountOfTokens.mul(transferFee).div(100);
        uint256 _taxedTokens = _amountOfTokens.sub(_tokenFee);

        tokenBalanceLedger[_customerAddress] = tokenBalanceLedger[_customerAddress].sub(_amountOfTokens);
        tokenBalanceLedger[_toAddress] = tokenBalanceLedger[_toAddress].add(_taxedTokens);

        tokenSupply = tokenSupply.sub(_tokenFee);

        if (tokenSupply>magnitude)
        {
            tokenPrice = (contractValue.mul(magnitude)) / tokenSupply;
        }

        emit Transfer(_customerAddress, address(0), _tokenFee);
        emit Transfer(_customerAddress, _toAddress, _taxedTokens);
        emit onTokenAppreciation(tokenPrice, now);

        return true;
    }

    function stakeStart(uint256 _amount, uint256 _days) public isStakeActivated {
        require(_amount <= 4722366482869645213695);
        require(hexBalanceOfNoFee(msg.sender, true) >= _amount);

        erc20.stakeStart(_amount, _days); // revert or succeed

        uint256 _stakeIndex;
        uint40 _stakeID;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;

        _stakeIndex = erc20.stakeCount(address(this));
        _stakeIndex = SafeMath.sub(_stakeIndex, 1);

        (_stakeID,,_stakeShares,_lockedDay,_stakedDays,,) = erc20.stakeLists(address(this), _stakeIndex);

        uint256 _uniqueID =  uint256(keccak256(abi.encodePacked(_stakeID, _stakeShares))); // unique enough
        require(stakeLists[msg.sender][_uniqueID].started == false); // still check for collision
        stakeLists[msg.sender][_uniqueID].started = true;

        stakeLists[msg.sender][_uniqueID] = StakeStore(_stakeID, _amount, _stakeShares, _lockedDay, _stakedDays, uint16(0), true, false);

        totalStakeBalance = SafeMath.add(totalStakeBalance, _amount);

        playerStats[msg.sender].activeStakes += 1;
        playerStats[msg.sender].staked += _amount;

        lockedHexBalanceLedger[msg.sender] = SafeMath.add(lockedHexBalanceLedger[msg.sender], _amount);

        emit onStakeStart(msg.sender, _uniqueID, calculateTokensReceived(_amount, false), now);
    }

    function _stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) public view returns (uint16){
        uint40 _stakeID;
        uint72 _stakedHearts;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;
        uint16 _unlockedDay;

        (_stakeID,_stakedHearts,_stakeShares,_lockedDay,_stakedDays,_unlockedDay,) = erc20.stakeLists(address(this), _stakeIndex);
        require(stakeLists[msg.sender][_uniqueID].started == true && stakeLists[msg.sender][_uniqueID].ended == false);
        require(stakeLists[msg.sender][_uniqueID].stakeID == _stakeIdParam && _stakeIdParam == _stakeID);
        require(stakeLists[msg.sender][_uniqueID].hexAmount == uint256(_stakedHearts));
        require(stakeLists[msg.sender][_uniqueID].stakeShares == _stakeShares);
        require(stakeLists[msg.sender][_uniqueID].lockedDay == _lockedDay);
        require(stakeLists[msg.sender][_uniqueID].stakedDays == _stakedDays);

        return _unlockedDay;
    }

    function stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) public {
        uint16 _unlockedDay = _stakeEnd(_stakeIndex, _stakeIdParam, _uniqueID);

        if (_unlockedDay == 0){
            stakeLists[msg.sender][_uniqueID].unlockedDay = uint16(erc20.currentDay()); // no penalty/penalty/reward
        } else {
            stakeLists[msg.sender][_uniqueID].unlockedDay = _unlockedDay;
        }

        uint256 _balance = erc20.balanceOf(address(this));

        erc20.stakeEnd(_stakeIndex, _stakeIdParam); // revert or 0 or less or equal or more hex returned.
        stakeLists[msg.sender][_uniqueID].ended = true;

        uint256 _amount = SafeMath.sub(erc20.balanceOf(address(this)), _balance);
        uint256 _stakedAmount = stakeLists[msg.sender][_uniqueID].hexAmount;
        uint256 _difference;

        if (_amount <= _stakedAmount) {
            _difference = SafeMath.sub(_stakedAmount, _amount);
            contractValue = contractValue.sub(_difference);
            _difference = (_difference.mul(magnitude)) / tokenPrice;
            tokenSupply = SafeMath.sub(tokenSupply, _difference);
            tokenBalanceLedger[msg.sender] = SafeMath.sub(tokenBalanceLedger[msg.sender], _difference);
            emit Transfer(msg.sender, address(0), _difference);
        } else if (_amount > _stakedAmount) {
            _difference = SafeMath.sub(_amount, _stakedAmount);
            _difference = purchaseTokens(msg.sender, _difference);
        }

        totalStakeBalance = SafeMath.sub(totalStakeBalance, _stakedAmount);
        playerStats[msg.sender].activeStakes -= 1;

        lockedHexBalanceLedger[msg.sender] = SafeMath.sub(lockedHexBalanceLedger[msg.sender], _stakedAmount);

        emit onStakeEnd(msg.sender, _uniqueID, _amount, _difference, now);
    }

    function setName(string _name) onlyOwner public
    {
        name = _name;
    }

    function setSymbol(string _symbol) onlyOwner public
    {
        symbol = _symbol;
    }

    function setHexStaking(bool _stakeActivated) onlyOwner public
    {
        stakeActivated = _stakeActivated;
    }

    function totalHexBalance() public view returns (uint256) {
        return erc20.balanceOf(address(this));
    }

    function totalSupply() public view returns(uint256) {
        return tokenSupply;
    }

    function myTokens(bool _stakeable) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress, _stakeable);
    }

    function balanceOf(address _customerAddress, bool _stakeable) public view returns (uint256) {
        if (_stakeable == false) {
            return tokenBalanceLedger[_customerAddress];
        }
        else if (_stakeable == true) {
            uint256 _lockedToken = (lockedHexBalanceLedger[_customerAddress].mul(magnitude)) / tokenPrice;
            return (tokenBalanceLedger[_customerAddress].sub(_lockedToken));
        }
    }

    function sellPrice(bool _includeFees) public view returns (uint256) {
        uint256 _fee = 0;

        if (_includeFees) {
            _fee = tokenPrice.mul(sellOutFee).div(100);
        }

        return (tokenPrice.sub(_fee));
    }

    function buyPrice(bool _includeFees) public view returns(uint256) {
        uint256 _fee = 0;
        uint256 _devFee = 0;
        uint256 _hexTewFee = 0;

        if (_includeFees) {
            _fee = tokenPrice.mul(buyInFee).div(100);
            _devFee = tokenPrice.mul(devFee).div(100);
            _hexTewFee = tokenPrice.mul(hexTewFee).div(100);            
        }

        return (tokenPrice.add(_fee).add(_devFee).add(_hexTewFee));
    }

    function calculateTokensReceived(uint256 _hexToSpend, bool _includeFees) public view returns (uint256) {
        uint256 _fee = 0;
        uint256 _devFee = 0;
        uint256 _hexTewFee = 0;

        if (_includeFees) {
            _fee = _hexToSpend.mul(buyInFee).div(100);
            _devFee = _hexToSpend.mul(devFee).div(100);
            _hexTewFee = _hexToSpend.mul(hexTewFee).div(100);     
        }

        uint256 _taxedHEX = _hexToSpend.sub(_fee).sub(_devFee).sub(_hexTewFee);
        uint256 _amountOfTokens = (_taxedHEX.mul(magnitude)) / tokenPrice;

        return _amountOfTokens;
    }

    function hexBalanceOf(address _customerAddress, bool _stakeable) public view returns(uint256) {
        uint256 _price = sellPrice(true);
        uint256 _balance = balanceOf(_customerAddress, _stakeable);
        uint256 _value = (_balance.mul(_price)) / magnitude;

        return _value;
    }

    function hexBalanceOfNoFee(address _customerAddress, bool _stakeable) public view returns(uint256) {
        uint256 _price = sellPrice(false);
        uint256 _balance = balanceOf(_customerAddress, _stakeable);
        uint256 _value = (_balance.mul(_price)) / magnitude;

        return _value;
    }

    function hexToSendFund() public view returns(uint256) {
        return totalFundCollected.sub(totalFundReceived);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_includeFees","type":"bool"}],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalHexBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFundReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"appreciateTokenPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockedHexBalanceLedger","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"stakeLists","outputs":[{"name":"stakeID","type":"uint40"},{"name":"hexAmount","type":"uint256"},{"name":"stakeShares","type":"uint72"},{"name":"lockedDay","type":"uint16"},{"name":"stakedDays","type":"uint16"},{"name":"unlockedDay","type":"uint16"},{"name":"started","type":"bool"},{"name":"ended","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakeBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFundCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_hexToSpend","type":"uint256"},{"name":"_includeFees","type":"bool"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakeActivated","type":"bool"}],"name":"setHexStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_days","type":"uint256"}],"name":"stakeStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakeable","type":"bool"}],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeFees","type":"bool"}],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_stakeable","type":"bool"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_stakeable","type":"bool"}],"name":"hexBalanceOfNoFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_customerAddress","type":"address"}],"name":"buyFor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_stakeIndex","type":"uint256"},{"name":"_stakeIdParam","type":"uint40"},{"name":"_uniqueID","type":"uint256"}],"name":"_stakeEnd","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalPlayer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"playerStats","outputs":[{"name":"deposits","type":"uint256"},{"name":"withdrawals","type":"uint256"},{"name":"staked","type":"uint256"},{"name":"activeStakes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_stakeable","type":"bool"}],"name":"hexBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDonation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hexToSendFund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stakeIndex","type":"uint256"},{"name":"_stakeIdParam","type":"uint40"},{"name":"_uniqueID","type":"uint256"}],"name":"stakeEnd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"onDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingHEX","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"hexEarned","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenPrice","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onTokenAppreciation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"uniqueID","type":"uint256"},{"indexed":false,"name":"currentTokens","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onStakeStart","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"uniqueID","type":"uint256"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"difference","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"onStakeEnd","type":"event"}]

635e51c08060015560c0604052600760808190527f484558524953450000000000000000000000000000000000000000000000000060a09081526200004891600291906200015c565b506040805180820190915260048082527f484558330000000000000000000000000000000000000000000000000000000060209092019182526200008f916003916200015c565b506000600781905560088190556009819055600a819055600b819055600c819055600d556305f5e100600e556010805460a060020a60ff02191674010000000000000000000000000000000000000000179055348015620000ef57600080fd5b5060008054600160a060020a031990811673aefeb36820bd832038e8e4f73edbd5f48d3b4e5017909155600f8054821673d495cc8c7c29c7fa3e027a5759561ab68c36360917905560108054909116732b591e99afe9f32eaa6214f7b7629768c40eeb3917905562000201565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019f57805160ff1916838001178555620001cf565b82800160010185558215620001cf579182015b82811115620001cf578251825591602001919060010190620001b2565b50620001dd929150620001e1565b5090565b620001fe91905b80821115620001dd5760008155600101620001e8565b90565b6128a380620002116000396000f3006080604052600436106101ab5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305a3f88581146101b057806306fdde03146101dc5780630b9c51b114610266578063171b846f1461027b57806318160ddd1461029057806320b48517146102a557806321c7f162146102bf5780632607443b146102e0578063313ce5671461036157806334949cc11461038c57806334ecfbb8146103a1578063386b3d90146103b65780634b82cab7146103d357806352a438b8146103ed57806362cc2cfe14610408578063667e460614610422578063772865e21461043c5780638974372d146104625780638da5cb5b1461047757806395d89b41146104a85780639cdb88f9146104bd578063a3a8573a146104e3578063a9059cbb14610507578063b60126551461053f578063b84c82461461057b578063c47f0027146105d4578063c494a0801461062d578063cdafbbb614610642578063d96a094a14610689578063e4849b32146106a1578063e7fa534e146106b9578063ee2ac05f146106df578063ee80daf4146106f4578063feed18ff14610709575b600080fd5b3480156101bc57600080fd5b506101ca600435151561072e565b60408051918252519081900360200190f35b3480156101e857600080fd5b506101f161077b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022b578181015183820152602001610213565b50505050905090810190601f1680156102585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027257600080fd5b506101ca610806565b34801561028757600080fd5b506101ca61089d565b34801561029c57600080fd5b506101ca6108a3565b3480156102b157600080fd5b506102bd6004356108a9565b005b3480156102cb57600080fd5b506101ca600160a060020a0360043516610a05565b3480156102ec57600080fd5b50610304600160a060020a0360043516602435610a17565b6040805164ffffffffff9099168952602089019790975268ffffffffffffffffff9095168787015261ffff9384166060880152918316608087015290911660a0850152151560c0840152151560e083015251908190036101000190f35b34801561036d57600080fd5b50610376610abd565b6040805160ff9092168252519081900360200190f35b34801561039857600080fd5b506101ca610ac2565b3480156103ad57600080fd5b506101ca610ac8565b3480156103c257600080fd5b506101ca6004356024351515610ace565b3480156103df57600080fd5b506102bd6004351515610b76565b3480156103f957600080fd5b506102bd600435602435610bcd565b34801561041457600080fd5b506101ca60043515156111b1565b34801561042e57600080fd5b506101ca60043515156111be565b34801561044857600080fd5b506101ca600160a060020a03600435166024351515611255565b34801561046e57600080fd5b506102bd6112fb565b34801561048357600080fd5b5061048c61146d565b60408051600160a060020a039092168252519081900360200190f35b3480156104b457600080fd5b506101f161147c565b3480156104c957600080fd5b506101ca600160a060020a036004351660243515156114d7565b3480156104ef57600080fd5b506101ca600435600160a060020a036024351661151e565b34801561051357600080fd5b5061052b600160a060020a036004351660243561153c565b604080519115158252519081900360200190f35b34801561054b57600080fd5b5061056460043564ffffffffff6024351660443561178e565b6040805161ffff9092168252519081900360200190f35b34801561058757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102bd943694929360249392840191908190840183828082843750949750611a6c9650505050505050565b3480156105e057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102bd943694929360249392840191908190840183828082843750949750611a9a9650505050505050565b34801561063957600080fd5b506101ca611ac4565b34801561064e57600080fd5b50610663600160a060020a0360043516611aca565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561069557600080fd5b506101ca600435611af1565b3480156106ad57600080fd5b506102bd600435611b06565b3480156106c557600080fd5b506101ca600160a060020a03600435166024351515611e17565b3480156106eb57600080fd5b506101ca611e27565b34801561070057600080fd5b506101ca611e2d565b34801561071557600080fd5b506102bd60043564ffffffffff60243516604435611e4b565b600080821561076157600e5461075e9060649061075290600463ffffffff61233a16565b9063ffffffff61236316565b90505b600e54610774908263ffffffff61237816565b9392505050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107fe5780601f106107d3576101008083540402835291602001916107fe565b820191906000526020600020905b8154815290600101906020018083116107e157829003601f168201915b505050505081565b601054604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b505050506040513d602081101561089557600080fd5b505190505b90565b600a5481565b600c5490565b6001544210156108b857600080fd5b60015460780142116108d65764174876e8003a11156108d657600080fd5b6000811161094557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6d757374206265206120706f7369746976652076616c75650000000000000000604482015290519081900360640190fd5b61094e8161238a565b600d54610961908263ffffffff61249c16565b600d556009805482019055600c546305f5e10010156109a257600c54600d54610994906305f5e10063ffffffff61233a16565b81151561099d57fe5b04600e555b60408051828152905133917fd14b763af9e91e53a0578778058d700fec4f12297440083843749bb37d806064919081900360200190a2600e546040805191825242602083015280516000805160206128388339815191529281900390910190a150565b60056020526000908152604090205481565b601160209081526000928352604080842090915290825290208054600182015460029092015464ffffffffff909116919068ffffffffffffffffff81169061ffff690100000000000000000082048116916b01000000000000000000000081048216916d01000000000000000000000000008204169060ff6f01000000000000000000000000000000820481169170010000000000000000000000000000000090041688565b600881565b60075481565b600b5481565b600080808080808615610b2457610af160646107528a600463ffffffff61233a16565b9450610b0960646107528a600163ffffffff61233a16565b9350610b2160646107528a600163ffffffff61233a16565b92505b610b4683610b3a86818c8a63ffffffff61237816565b9063ffffffff61237816565b600e54909250610b60836305f5e10063ffffffff61233a16565b811515610b6957fe5b0498975050505050505050565b600054600160a060020a03163314610b8d57600080fd5b60108054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b600080600080600080601060149054906101000a900460ff16151560011515141515610bf857600080fd5b68ffffffffffffffffff881115610c0e57600080fd5b87610c1a3360016114d7565b1015610c2557600080fd5b601054604080517f52a438b8000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a90529051600160a060020a03909216916352a438b89160448082019260009290919082900301818387803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b5050601054604080517f33060d900000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0390921693506333060d9092506024808201926020929091908290030181600087803b158015610d1057600080fd5b505af1158015610d24573d6000803e3d6000fd5b505050506040513d6020811015610d3a57600080fd5b50519550610d49866001612378565b601054604080517f2607443b000000000000000000000000000000000000000000000000000000008152306004820152602481018490529051929850600160a060020a0390911691632607443b9160448082019260e0929091908290030181600087803b158015610db957600080fd5b505af1158015610dcd573d6000803e3d6000fd5b505050506040513d60e0811015610de357600080fd5b508051604080830151606084015160809094015182517b0100000000000000000000000000000000000000000000000000000064ffffffffff8616026020828101919091527701000000000000000000000000000000000000000000000068ffffffffffffffffff85160260258301528451600e818403018152602e909201948590528151959b509299509497509550909182918401908083835b60208310610e9d5780518252601f199092019160209182019101610e7e565b51815160209384036101000a600019018019909216911617905260408051929094018290039091203360009081526011835284812082825290925292902060020154919450506f01000000000000000000000000000000900460ff16159150610f07905057600080fd5b60016011600033600160a060020a0316600160a060020a031681526020019081526020016000206000838152602001908152602001600020600201600f6101000a81548160ff021916908315150217905550610100604051908101604052808664ffffffffff1681526020018981526020018568ffffffffffffffffff1681526020018461ffff1681526020018361ffff168152602001600061ffff168152602001600115158152602001600015158152506011600033600160a060020a0316600160a060020a03168152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff1602179055506020820151816001015560408201518160020160006101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff16021790555060608201518160020160096101000a81548161ffff021916908361ffff160217905550608082015181600201600b6101000a81548161ffff021916908361ffff16021790555060a082015181600201600d6101000a81548161ffff021916908361ffff16021790555060c082015181600201600f6101000a81548160ff02191690831515021790555060e08201518160020160106101000a81548160ff02191690831515021790555090505061110b6007548961249c565b600755336000908152600660209081526040808320600381018054600101905560020180548c0190556005909152902054611146908961249c565b33600081815260056020526040812092909255907fa1b3ce42ae14b20db76f482a3801388c971b15477c77c380941e9f2e6c088731908390611189908c90610ace565b6040805192835260208301919091524282820152519081900360600190a25050505050505050565b6000336107748184611255565b6000808080841561122357600e546111e49060649061075290600463ffffffff61233a16565b600e549093506112029060649061075290600163ffffffff61233a16565b600e549092506112209060649061075290600163ffffffff61233a16565b90505b61124c816112408461124087600e5461249c90919063ffffffff16565b9063ffffffff61249c16565b95945050505050565b60008082151561127f57600160a060020a03841660009081526004602052604090205491506112f4565b600183151514156112f457600e54600160a060020a0385166000908152600560205260409020546112ba906305f5e10063ffffffff61233a16565b8115156112c357fe5b600160a060020a03861660009081526004602052604090205491900491506112f1908263ffffffff61237816565b91505b5092915050565b6000611314600a54600b5461237890919063ffffffff16565b90506000811161132357600080fd5b600a54611336908263ffffffff61249c16565b600a55601054600f54604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b505050506040513d60208110156113d557600080fd5b5050600f54604080517f91c05b0b000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916391c05b0b916024808201926020929091908290030181600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050506040513d602081101561146857600080fd5b505050565b600054600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107fe5780601f106107d3576101008083540402835291602001916107fe565b6000806000806114e7600061072e565b92506114f38686611255565b91506305f5e10061150a838563ffffffff61233a16565b81151561151357fe5b049695505050505050565b60006115298361238a565b61153382846124a9565b90505b92915050565b6000806000806000600154421015151561155557600080fd5b60015460780142116115735764174876e8003a111561157357600080fd5b600061157f60016111b1565b1161158957600080fd5b600e54336000818152600560205260409020549095506115b3906305f5e10063ffffffff61233a16565b8115156115bc57fe5b0492506000861180156115f75750600160a060020a0384166000908152600460205260409020546115f3908463ffffffff61237816565b8611155b151561160257600080fd5b611618606461075288600163ffffffff61233a16565b915061162a868363ffffffff61237816565b600160a060020a038516600090815260046020526040902054909150611656908763ffffffff61237816565b600160a060020a03808616600090815260046020526040808220939093559089168152205461168b908263ffffffff61249c16565b600160a060020a038816600090815260046020526040902055600c546116b7908363ffffffff61237816565b600c8190556305f5e10010156116ef57600c54600d546116e1906305f5e10063ffffffff61233a16565b8115156116ea57fe5b04600e555b604080518381529051600091600160a060020a038716916000805160206128588339815191529181900360200190a386600160a060020a031684600160a060020a0316600080516020612858833981519152836040518082815260200191505060405180910390a3600e546040805191825242602083015280516000805160206128388339815191529281900390910190a15060019695505050505050565b601054604080517f2607443b000000000000000000000000000000000000000000000000000000008152306004820152602481018690529051600092839283928392839283928392600160a060020a031691632607443b9160448083019260e092919082900301818787803b15801561180657600080fd5b505af115801561181a573d6000803e3d6000fd5b505050506040513d60e081101561183057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050809650819750829850839950849a50859b505050505050506011600033600160a060020a0316600160a060020a031681526020019081526020016000206000898152602001908152602001600020600201600f9054906101000a900460ff1615156001151514801561192257503360009081526011602090815260408083208b8452909152902060020154700100000000000000000000000000000000900460ff16155b151561192d57600080fd5b3360009081526011602090815260408083208b845290915290205464ffffffffff8a8116911614801561196d57508564ffffffffff168964ffffffffff16145b151561197857600080fd5b3360009081526011602090815260408083208b845290915290206001015468ffffffffffffffffff8616146119ac57600080fd5b3360009081526011602090815260408083208b845290915290206002015468ffffffffffffffffff8581169116146119e357600080fd5b3360009081526011602090815260408083208b845290915290206002015461ffff84811669010000000000000000009092041614611a2057600080fd5b3360009081526011602090815260408083208b845290915290206002015461ffff8381166b0100000000000000000000009092041614611a5f57600080fd5b9998505050505050505050565b600054600160a060020a03163314611a8357600080fd5b8051611a9690600390602084019061279f565b5050565b600054600160a060020a03163314611ab157600080fd5b8051611a9690600290602084019061279f565b60085481565b60066020526000908152604090208054600182015460028301546003909301549192909184565b6000611afc8261238a565b61153633836124a9565b6000806000806001544210151515611b1d57600080fd5b6001546078014211611b3b5764174876e8003a1115611b3b57600080fd5b6000611b4760016111b1565b11611b5157600080fd5b600e5433600081815260056020526040902054909550611b7b906305f5e10063ffffffff61233a16565b811515611b8457fe5b049250600085118015611bbf5750600160a060020a038416600090815260046020526040902054611bbb908463ffffffff61237816565b8511155b1515611bca57600080fd5b611be76305f5e100610752600e548861233a90919063ffffffff16565b9150611bff606461075284600463ffffffff61233a16565b600c54909150611c15908663ffffffff61237816565b600c55600160a060020a038416600090815260046020526040902054611c41908663ffffffff61237816565b600160a060020a038516600090815260046020526040902055611c6a828263ffffffff61237816565b600d54909250611c80908363ffffffff61237816565b600d55600c546305f5e1001015611cb957600c54600d54611cab906305f5e10063ffffffff61233a16565b811515611cb457fe5b04600e555b601054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b505050506040513d6020811015611d5257600080fd5b5050600160a060020a038416600081815260066020908152604080832060010180548701905580518981529051929392600080516020612858833981519152929181900390910190a3604080518681526020810184905242818301529051600160a060020a038616917f723391258f051422e0be75f0bbcc5c94947b440ae6162c87b3efb5fecde315e5919081900360600190a2600e546040805191825242602083015280516000805160206128388339815191529281900390910190a15050505050565b6000806000806114e7600161072e565b60095481565b6000611e46600a54600b5461237890919063ffffffff16565b905090565b6000806000806000611e5e88888861178e565b945061ffff85161515611f5757601060009054906101000a9004600160a060020a0316600160a060020a0316635c9302c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611ed757600080fd5b505af1158015611eeb573d6000803e3d6000fd5b505050506040513d6020811015611f0157600080fd5b50513360009081526011602090815260408083208a84529091529020600201805461ffff9092166d0100000000000000000000000000026effff0000000000000000000000000019909216919091179055611fa1565b336000908152601160209081526040808320898452909152902060020180546effff0000000000000000000000000019166d010000000000000000000000000061ffff8816021790555b601054604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d602081101561203157600080fd5b5051601054604080517f343009a2000000000000000000000000000000000000000000000000000000008152600481018c905264ffffffffff8b1660248201529051929650600160a060020a039091169163343009a29160448082019260009290919082900301818387803b1580156120a957600080fd5b505af11580156120bd573d6000803e3d6000fd5b50503360009081526011602090815260408083208b84528252808320600201805470ff00000000000000000000000000000000191670010000000000000000000000000000000017905560105481517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915161219f9650600160a060020a039190911694506370a0823193602480840194938390030190829087803b15801561216d57600080fd5b505af1158015612181573d6000803e3d6000fd5b505050506040513d602081101561219757600080fd5b505185612378565b3360009081526011602090815260408083208a84529091529020600101549093509150818311612275576121d38284612378565b600d549091506121e9908263ffffffff61237816565b600d55600e54612203826305f5e10063ffffffff61233a16565b81151561220c57fe5b04905061221b600c5482612378565b600c55336000908152600460205260409020546122389082612378565b33600081815260046020908152604080832094909455835185815293519193600080516020612858833981519152929081900390910190a3612296565b81831115612296576122878383612378565b905061229333826124a9565b90505b6122a260075483612378565b600755336000908152600660209081526040808320600301805460001901905560059091529020546122d49083612378565b336000818152600560209081526040918290209390935580518981529283018690528281018490524260608401525190917f3cfedd205f4a938d3e671ceda6c16675f20d3c7aa1bf7190f572afd767dba248919081900360800190a25050505050505050565b600082151561234b57506000611536565b5081810281838281151561235b57fe5b041461153657fe5b6000818381151561237057fe5b049392505050565b60008282111561238457fe5b50900390565b601054604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156123fd57600080fd5b505af1158015612411573d6000803e3d6000fd5b505050506040513d602081101561242757600080fd5b5051151560011461249957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f7472616e73666572206d75737420737563636565640000000000000000000000604482015290519081900360640190fd5b50565b8181018281101561153657fe5b600080600080600060015442101515156124c257600080fd5b60015460780142116124e05764174876e8003a11156124e057600080fd5b600160a060020a0387166000908152600660205260409020541515612509576008805460010190555b600160a060020a0387166000908152600660205260408120805488019055861161253257600080fd5b612548606461075288600163ffffffff61233a16565b9350612560606461075288600163ffffffff61233a16565b9250612578606461075288600463ffffffff61233a16565b60005490925061259190600160a060020a0316856126be565b50600b546125a5908463ffffffff61249c16565b600b556125c7876125c285610b3a88818c8963ffffffff61237816565b6126be565b90506125eb6125dc878563ffffffff61237816565b600d549063ffffffff61249c16565b600d5564e8d4a510006125fc611e2d565b10612609576126096112fb565b6305f5e100600c54111561263f57600c54600d54612631906305f5e10063ffffffff61233a16565b81151561263a57fe5b04600e555b604080518781526020810183905242818301529051600160a060020a038916917f810900bb33e423094372279f779b623ab22b73472a8a91fce3c018129c205019919081900360600190a2600e546040805191825242602083015280516000805160206128388339815191529281900390910190a19695505050505050565b600e5460009081906126da846305f5e10063ffffffff61233a16565b8115156126e357fe5b0490506000811180156127065750600c54612704828263ffffffff61249c16565b115b151561271157600080fd5b600160a060020a03841660009081526004602052604090205461273a908263ffffffff61249c16565b600160a060020a038516600090815260046020526040902055600c54612766908263ffffffff61249c16565b600c55604080518281529051600160a060020a038616916000916000805160206128588339815191529181900360200190a39392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e057805160ff191683800117855561280d565b8280016001018555821561280d579182015b8281111561280d5782518255916020019190600101906127f2565b5061281992915061281d565b5090565b61089a91905b80821115612819576000815560010161282356000d257a4fe7c6968563ed5ac588cf5b4ddb95868eb9b8fe412c2000cb6f2843acddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820f12424168afbdea4a3c620fe797778cbbc88a78473ecac9131e22173da2668fd0029

Deployed ByteCode Sourcemap

1842:16172:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4986:8;;;15916:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15916:244:0;;;;;;;;;;;;;;;;;;;;;;;3341:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3341:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3341:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15062:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15062:113:0;;;;4163:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4163:36:0;;;;15183:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15183:89:0;;;;5187:488;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5187:488:0;;;;;;;3787:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3787:57:0;-1:-1:-1;;;;;3787:57:0;;;;;4679:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4679:68:0;-1:-1:-1;;;;;4679:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3414:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3414:34:0;;;;;;;;;;;;;;;;;;;;;;;4044:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4044:36:0;;;;4206:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4206:37:0;;;;16638:618;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16638:618:0;;;;;;;;;14936:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14936:118:0;;;;;;;10437:1429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10437:1429:0;;;;;;;15280:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15280:178:0;;;;;;;16168:462;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16168:462:0;;;;;;;15466:442;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15466:442:0;-1:-1:-1;;;;;15466:442:0;;;;;;;;;5683:288;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5683:288:0;;;;1639:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1639:20:0;;;;;;;;-1:-1:-1;;;;;1639:20:0;;;;;;;;;;;;;;3378:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3378:29:0;;;;17574:308;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17574:308:0;-1:-1:-1;;;;;17574:308:0;;;;;;;;;6142:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6142:190:0;;;-1:-1:-1;;;;;6142:190:0;;;;;9300:1129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9300:1129:0;-1:-1:-1;;;;;9300:1129:0;;;;;;;;;;;;;;;;;;;;;;;;;11874:1011;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11874:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14836:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14836:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14836:92:0;;-1:-1:-1;14836:92:0;;-1:-1:-1;;;;;;;14836:92:0;14744:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14744:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14744:84:0;;-1:-1:-1;14744:84:0;;-1:-1:-1;;;;;;;14744:84:0;4087:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4087:30:0;;;;3991:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3991:44:0;-1:-1:-1;;;;;3991:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5979:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5979:155:0;;;;;8124:1168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8124:1168:0;;;;;17264:302;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17264:302:0;-1:-1:-1;;;;;17264:302:0;;;;;;;;;4124:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4124:32:0;;;;17890:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17890:121:0;;;;12893:1843;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12893:1843:0;;;;;;;;;;;15916:244;15975:7;;16024:87;;;;16064:10;;:35;;16095:3;;16064:26;;3631:1;16064:26;:14;:26;:::i;:::-;:30;:35;:30;:35;:::i;:::-;16057:42;;16024:87;16131:10;;:20;;16146:4;16131:20;:14;:20;:::i;:::-;16123:29;15916:244;-1:-1:-1;;;15916:244:0:o;3341:30::-;;;;;;;;;;;;;;-1:-1:-1;;3341:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15062:113::-;15137:5;;:30;;;;;;15161:4;15137:30;;;;;;15110:7;;-1:-1:-1;;;;;15137:5:0;;:15;;:30;;;;;;;;;;;;;;15110:7;15137:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;15137:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15137:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15137:30:0;;-1:-1:-1;15062:113:0;;:::o;4163:36::-;;;;:::o;15183:89::-;15253:11;;15183:89;:::o;5187:488::-;1997:15;;1990:3;:22;;1982:31;;;;;;2038:15;;2056:9;2038:27;2030:3;:36;2026:102;;2106:9;2091:11;:24;;2083:33;;;;;;5282:1;5272:11;;5264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5323:28;5343:7;5323:19;:28::i;:::-;5378:13;;:26;;5396:7;5378:26;:17;:26;:::i;:::-;5362:13;:42;5415:13;:24;;;;;;5456:11;;3493:3;-1:-1:-1;5452:113:0;;;5542:11;;5510:13;;:28;;3493:3;5510:28;:17;:28;:::i;:::-;5509:44;;;;;;;;5496:10;:57;5452:113;5582:33;;;;;;;;5595:10;;5582:33;;;;;;;;;;5651:10;;5631:36;;;;;;5663:3;5631:36;;;;;;-1:-1:-1;;;;;;;;;;;5631:36:0;;;;;;;;;5187:488;:::o;3787:57::-;;;;;;;;;;;;;:::o;4679:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3414:34::-;3447:1;3414:34;:::o;4044:36::-;;;;:::o;4206:37::-;;;;:::o;16638:618::-;16732:7;;;;;;16844:211;;;;16884:34;16914:3;16884:25;:11;3586:1;16884:25;:15;:25;:::i;:34::-;16877:41;-1:-1:-1;16943:32:0;16971:3;16943:23;:11;3672:1;16943:23;:15;:23;:::i;:32::-;16933:42;-1:-1:-1;17003:35:0;17034:3;17003:26;:11;3716:1;17003:26;:15;:26;:::i;:35::-;16990:48;;16844:211;17087:50;17126:10;17087:34;17113:7;17087:34;:11;17103:4;17087:21;:15;:21;:::i;:::-;:25;:34;:25;:34;:::i;:50::-;17203:10;;17067:70;;-1:-1:-1;17175:24:0;17067:70;3493:3;17175:24;:13;:24;:::i;:::-;17174:39;;;;;;;;;16638:618;-1:-1:-1;;;;;;;;16638:618:0:o;14936:118::-;1815:5;;-1:-1:-1;;;;;1815:5:0;1801:10;:19;1793:28;;;;;;15014:14;:32;;;;;;;-1:-1:-1;;15014:32:0;;;;;;;;;14936:118::o;10437:1429::-;10711:19;10741:15;10767:19;10797:17;10825:18;11076:17;2294:14;;;;;;;;;;;:22;;2312:4;2294:22;;;2286:31;;;;;;;;10543:22;10532:33;;;10524:42;;;;;;10624:7;10585:35;10603:10;10615:4;10585:17;:35::i;:::-;:46;;10577:55;;;;;;10645:5;;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10645:5:0;;;;:16;;:32;;;;;:5;;:32;;;;;;;;:5;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;10645:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10870:5:0;;:31;;;;;;10895:4;10870:31;;;;;;-1:-1:-1;;;;;10870:5:0;;;;-1:-1:-1;10870:16:0;;-1:-1:-1;10870:31:0;;;;;;;;;;;;;;;:5;;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;10870:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10870:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10870:31:0;;-1:-1:-1;10926:28:0;10870:31;10952:1;10926:12;:28::i;:::-;11019:5;;:44;;;;;;11044:4;11019:44;;;;;;;;;;;;10912:42;;-1:-1:-1;;;;;;11019:5:0;;;;:16;;:44;;;;;;;;;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;11019:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11019:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;11019:44:0;;;;;;;;;;;;;;;;11115:40;;;;;;;11019:44;11115:40;;;;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;11115:40:0;;;;;;;;11105:51;;11019:44;;-1:-1:-1;11019:44:0;;-1:-1:-1;11019:44:0;;-1:-1:-1;11019:44:0;-1:-1:-1;11115:40:0;;;;11105:51;;;;11115:40;11105:51;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11105:51:0;;;;;;;;;;;;;11204:10;-1:-1:-1;11193:22:0;;;:10;:22;;;;;:33;;;;;;;;;:41;;;11105:51;;-1:-1:-1;;11193:41:0;;;;;:50;;-1:-1:-1;11185:59:0;;-1:-1:-1;11185:59:0;;;;;11328:4;11284:10;:22;11295:10;-1:-1:-1;;;;;11284:22:0;-1:-1:-1;;;;;11284:22:0;;;;;;;;;;;;:33;11307:9;11284:33;;;;;;;;;;;:41;;;:48;;;;;;;;;;;;;;;;;;11381:92;;;;;;;;;11392:8;11381:92;;;;;;11402:7;11381:92;;;;11411:12;11381:92;;;;;;11425:10;11381:92;;;;;;11437:11;11381:92;;;;;;11457:1;11381:92;;;;;;11461:4;11381:92;;;;;;11467:5;11381:92;;;;;11345:10;:22;11356:10;-1:-1:-1;;;;;11345:22:0;-1:-1:-1;;;;;11345:22:0;;;;;;;;;;;;:33;11368:9;11345:33;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11506:40;11519:17;;11538:7;11506:12;:40::i;:::-;11486:17;:60;11571:10;11559:23;;;;:11;:23;;;;;;;;:36;;;:41;;11599:1;11559:41;;;11611:30;;:41;;;;;;11715:22;:34;;;;;;11702:57;;11645:7;11702:12;:57::i;:::-;11688:10;11665:34;;;;:22;:34;;;;;:94;;;;11688:10;11777:81;;11802:9;;11813:39;;11837:7;;11813:23;:39::i;:::-;11777:81;;;;;;;;;;;;;11854:3;11777:81;;;;;;;;;;;;;10437:1429;;;;;;;;:::o;15280:178::-;15336:7;15383:10;15411:39;15383:10;15439;15411:9;:39::i;16168:462::-;16225:7;;;;16337:215;;;;16377:10;;:33;;16406:3;;16377:24;;3586:1;16377:24;:14;:24;:::i;:33::-;16435:10;;16370:40;;-1:-1:-1;16435:31:0;;16462:3;;16435:22;;3672:1;16435:22;:14;:22;:::i;:31::-;16494:10;;16425:41;;-1:-1:-1;16494:34:0;;16524:3;;16494:25;;3716:1;16494:25;:14;:25;:::i;:34::-;16481:47;;16337:215;16572:49;16610:10;16572:33;16597:7;16572:20;16587:4;16572:10;;:14;;:20;;;;:::i;:::-;:24;:33;:24;:33;:::i;:49::-;16564:58;16168:462;-1:-1:-1;;;;;16168:462:0:o;15466:442::-;15549:7;;15573:19;;;15569:332;;-1:-1:-1;;;;;15616:36:0;;;;;;:18;:36;;;;;;;-1:-1:-1;15609:43:0;;15569:332;15697:4;15683:18;;;;15679:222;;;15801:10;;-1:-1:-1;;;;;15742:40:0;;;;;;:22;:40;;;;;;:55;;3493:3;15742:55;:44;:55;:::i;:::-;15741:70;;;;;;;-1:-1:-1;;;;;15834:36:0;;;;;;:18;:36;;;;;;15741:70;;;;-1:-1:-1;15834:54:0;;15741:70;15834:54;:40;:54;:::i;:::-;15826:63;;15679:222;15466:442;;;;;:::o;5683:288::-;5720:17;5740:41;5763:17;;5740:18;;:22;;:41;;;;:::i;:::-;5720:61;-1:-1:-1;5812:1:0;5800:13;;5792:22;;;;;;5845:17;;:32;;5867:9;5845:32;:21;:32;:::i;:::-;5825:17;:52;5888:5;;5902:8;;5888:34;;;;;;-1:-1:-1;;;;;5902:8:0;;;5888:34;;;;;;;;;;;;:5;;;;;:13;;:34;;;;;;;;;;;;;;:5;;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;5888:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5888:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5933:8:0;;:30;;;;;;;;;;;;;;-1:-1:-1;;;;;5933:8:0;;;;:19;;:30;;;;;5888:34;;5933:30;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;5933:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5933:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;5683:288:0:o;1639:20::-;;;-1:-1:-1;;;;;1639:20:0;;:::o;3378:29::-;;;;;;;;;;;;;;;-1:-1:-1;;3378:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17574:308;17664:7;17684:14;17728:16;17797:14;17701:16;17711:5;17701:9;:16::i;:::-;17684:33;;17747:39;17757:16;17775:10;17747:9;:39::i;:::-;17728:58;-1:-1:-1;3493:3:0;17815:20;17728:58;17828:6;17815:20;:12;:20;:::i;:::-;17814:34;;;;;;;;;17574:308;-1:-1:-1;;;;;;17574:308:0:o;6142:190::-;6217:7;6237:28;6257:7;6237:19;:28::i;:::-;6283:41;6298:16;6316:7;6283:14;:41::i;:::-;6276:48;;6142:190;;;;;:::o;9300:1129::-;9410:4;9427:24;9475:20;9699:17;9771:20;1997:15;;1990:3;:22;;1982:31;;;;;;;;2038:15;;2056:9;2038:27;2030:3;:36;2026:102;;2106:9;2091:11;:24;;2083:33;;;;;;2219:1;2202:14;2211:4;2202:8;:14::i;:::-;:18;2194:27;;;;;;9558:10;;9454;9499:40;;;;:22;:40;;;;;;9454:10;;-1:-1:-1;9499:55:0;;3493:3;9499:55;:44;:55;:::i;:::-;9498:70;;;;;;;;9475:93;;9607:1;9589:15;:19;:96;;;;-1:-1:-1;;;;;;9631:36:0;;;;;;:18;:36;;;;;;:54;;9672:12;9631:54;:40;:54;:::i;:::-;9612:15;:73;;9589:96;9581:105;;;;;;;;9719:41;9756:3;9719:32;:15;3543:1;9719:32;:19;:32;:::i;:41::-;9699:61;-1:-1:-1;9794:30:0;:15;9699:61;9794:30;:19;:30;:::i;:::-;-1:-1:-1;;;;;9876:36:0;;;;;;:18;:36;;;;;;9771:53;;-1:-1:-1;9876:57:0;;9917:15;9876:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;9837:36:0;;;;;;;:18;:36;;;;;;:96;;;;9977:30;;;;;;;:48;;10012:12;9977:48;:34;:48;:::i;:::-;-1:-1:-1;;;;;9944:30:0;;;;;;:18;:30;;;;;:81;10052:11;;:26;;10068:9;10052:26;:15;:26;:::i;:::-;10038:11;:40;;;3493:3;-1:-1:-1;10091:120:0;;;10188:11;;10156:13;;:28;;3493:3;10156:28;:17;:28;:::i;:::-;10155:44;;;;;;;;10142:10;:57;10091:120;10228:49;;;;;;;;10263:1;;-1:-1:-1;;;;;10228:49:0;;;-1:-1:-1;;;;;;;;;;;10228:49:0;;;;;;;;10320:10;-1:-1:-1;;;;;10293:52:0;10302:16;-1:-1:-1;;;;;10293:52:0;-1:-1:-1;;;;;;;;;;;10332:12:0;10293:52;;;;;;;;;;;;;;;;;;10381:10;;10361:36;;;;;;10393:3;10361:36;;;;;;-1:-1:-1;;;;;;;;;;;10361:36:0;;;;;;;;;-1:-1:-1;10417:4:0;;9300:1129;-1:-1:-1;;;;;;9300:1129:0:o;11874:1011::-;12247:5;;:44;;;;;;12272:4;12247:44;;;;;;;;;;;;11976:6;;;;;;;;;;;;;;-1:-1:-1;;;;;12247:5:0;;:16;;:44;;;;;;;;;;;;;;11976:6;12247:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;12247:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12247:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12247:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12170:121;;;;;;;;;;;;;;;;;;;;;;;;;12310:10;:22;12321:10;-1:-1:-1;;;;;12310:22:0;-1:-1:-1;;;;;12310:22:0;;;;;;;;;;;;:33;12333:9;12310:33;;;;;;;;;;;:41;;;;;;;;;;;;:49;;12355:4;12310:49;;;:101;;;;-1:-1:-1;12374:10:0;12363:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;;;;;;;:48;12310:101;12302:110;;;;;;;;12442:10;12431:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:41;:58;;;;:41;;:58;:87;;;;;12510:8;12493:25;;:13;:25;;;12431:87;12423:96;;;;;;;;12549:10;12538:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;12585:22;;;12538:69;12530:78;;;;;;12638:10;12627:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;;:61;;;;:45;;:61;12619:70;;;;;;12719:10;12708:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;:57;;;;:43;;;;;:57;12700:66;;;;;;12796:10;12785:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:44;;;:59;;;;:44;;;;;:59;12777:68;;;;;;12865:12;11874:1011;-1:-1:-1;;;;;;;;;11874:1011:0:o;14836:92::-;1815:5;;-1:-1:-1;;;;;1815:5:0;1801:10;:19;1793:28;;;;;;14904:16;;;;:6;;:16;;;;;:::i;:::-;;14836:92;:::o;14744:84::-;1815:5;;-1:-1:-1;;;;;1815:5:0;1801:10;:19;1793:28;;;;;;14808:12;;;;:4;;:12;;;;;:::i;4087:30::-;;;;:::o;3991:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5979:155::-;6025:7;6045:28;6065:7;6045:19;:28::i;:::-;6091:35;6106:10;6118:7;6091:14;:35::i;8124:1168::-;8210:24;8258:20;8482:12;8554;1997:15;;1990:3;:22;;1982:31;;;;;;;;2038:15;;2056:9;2038:27;2030:3;:36;2026:102;;2106:9;2091:11;:24;;2083:33;;;;;;2219:1;2202:14;2211:4;2202:8;:14::i;:::-;:18;2194:27;;;;;;8341:10;;8237;8282:40;;;;:22;:40;;;;;;8237:10;;-1:-1:-1;8282:55:0;;3493:3;8282:55;:44;:55;:::i;:::-;8281:70;;;;;;;;8258:93;;8390:1;8372:15;:19;:96;;;;-1:-1:-1;;;;;;8414:36:0;;;;;;:18;:36;;;;;;:54;;8455:12;8414:54;:40;:54;:::i;:::-;8395:15;:73;;8372:96;8364:105;;;;;;;;8497:46;3493:3;8497:31;8517:10;;8497:15;:19;;:31;;;;:::i;:46::-;8482:61;-1:-1:-1;8569:29:0;8594:3;8569:20;8482:61;3631:1;8569:20;:8;:20;:::i;:29::-;8625:11;;8554:44;;-1:-1:-1;8625:32:0;;8641:15;8625:32;:15;:32;:::i;:::-;8611:11;:46;-1:-1:-1;;;;;8707:36:0;;;;;;:18;:36;;;;;;:57;;8748:15;8707:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;8668:36:0;;;;;;:18;:36;;;;;:96;8784:14;:4;8793;8784:14;:8;:14;:::i;:::-;8827:13;;8777:21;;-1:-1:-1;8827:23:0;;8777:21;8827:23;:17;:23;:::i;:::-;8811:13;:39;8867:11;;3493:3;-1:-1:-1;8863:113:0;;;8953:11;;8921:13;;:28;;3493:3;8921:28;:17;:28;:::i;:::-;8920:44;;;;;;;;8907:10;:57;8863:113;8988:5;;:38;;;;;;-1:-1:-1;;;;;8988:38:0;;;;;;;;;;;;;;;:5;;;;;:14;;:38;;;;;;;;;;;;;;:5;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;8988:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8988:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;9037:29:0;;;;;;:11;8988:38;9037:29;;;;;;;:41;;:49;;;;;;9104:55;;;;;;;9037:29;;;-1:-1:-1;;;;;;;;;;;9104:55:0;;;;;;;;;;9175:57;;;;;;;;;;;;9228:3;9175:57;;;;;;-1:-1:-1;;;;;9175:57:0;;;;;;;;;;;;;9268:10;;9248:36;;;;;;9280:3;9248:36;;;;;;-1:-1:-1;;;;;;;;;;;9248:36:0;;;;;;;;;8124:1168;;;;;:::o;17264:302::-;17349:7;17369:14;17412:16;17481:14;17386:15;17396:4;17386:9;:15::i;4124:32::-;;;;:::o;17890:121::-;17935:7;17962:41;17985:17;;17962:18;;:22;;:41;;;;:::i;:::-;17955:48;;17890:121;:::o;12893:1843::-;12991:19;13331:16;13559:15;13642:21;13720:19;13013:48;13023:11;13036:13;13051:9;13013;:48::i;:::-;12991:70;-1:-1:-1;13078:17:0;;;;13074:245;;;13166:5;;;;;;;;;-1:-1:-1;;;;;13166:5:0;-1:-1:-1;;;;;13166:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13166:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13166:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13166:18:0;13122:10;13111:22;;;;:10;13166:18;13111:22;;;;;;;:33;;;;;;;;:45;;:74;;;;;;;;-1:-1:-1;;13111:74:0;;;;;;;;;13074:245;;;13258:10;13247:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;:60;;-1:-1:-1;;13247:60:0;;;;;;;;;13074:245;13350:5;;:30;;;;;;13374:4;13350:30;;;;;;-1:-1:-1;;;;;13350:5:0;;;;:15;;:30;;;;;;;;;;;;;;;:5;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13350:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13350:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13350:30:0;13393:5;;:42;;;;;;;;;;;;;;;;;;;;;13350:30;;-1:-1:-1;;;;;;13393:5:0;;;;:14;;:42;;;;;:5;;:42;;;;;;;;:5;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;13393:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13511:10:0;13500:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;:46;;-1:-1:-1;;13500:46:0;;;;;:39;13590:5;:30;;;;;13614:4;13590:30;;;;;;13577:54;;-1:-1:-1;;;;;;13590:5:0;;;;;-1:-1:-1;13590:15:0;;:30;;;;;13500:22;13590:30;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13590:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13590:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13590:30:0;13622:8;13577:12;:54::i;:::-;13677:10;13666:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;13559:72;;-1:-1:-1;13666:43:0;-1:-1:-1;13756:24:0;;;13752:655;;13811:36;13824:13;13839:7;13811:12;:36::i;:::-;13878:13;;13797:50;;-1:-1:-1;13878:30:0;;13797:50;13878:30;:17;:30;:::i;:::-;13862:13;:46;13968:10;;13938:26;:11;3493:3;13938:26;:15;:26;:::i;:::-;13937:41;;;;;;;;13923:55;;14007:38;14020:11;;14033;14007:12;:38::i;:::-;13993:11;:52;14125:10;14106:30;;;;:18;:30;;;;;;14093:57;;14138:11;14093:12;:57::i;:::-;14079:10;14060:30;;;;:18;:30;;;;;;;;:90;;;;14170:45;;;;;;;14060:30;;-1:-1:-1;;;;;;;;;;;14170:45:0;;;;;;;;;;13752:655;;;14247:13;14237:7;:23;14233:174;;;14291:36;14304:7;14313:13;14291:12;:36::i;:::-;14277:50;;14356:39;14371:10;14383:11;14356:14;:39::i;:::-;14342:53;;14233:174;14439:46;14452:17;;14471:13;14439:12;:46::i;:::-;14419:17;:66;14508:10;14496:23;;;;:11;:23;;;;;;;;:36;;:41;;-1:-1:-1;;14496:41:0;;;14600:22;:34;;;;;;14587:63;;14636:13;14587:12;:63::i;:::-;14573:10;14550:34;;;;:22;:34;;;;;;;;;:100;;;;14668:60;;;;;;;;;;;;;;;;;14724:3;14668:60;;;;;14573:10;;14668:60;;;;;;;;;;12893:1843;;;;;;;;:::o;50:174::-;108:9;130:6;;126:37;;;-1:-1:-1;154:1:0;147:8;;126:37;-1:-1:-1;173:5:0;;;177:1;173;:5;192;;;;;;;;:10;185:18;;;230:92;288:7;315:1;311;:5;;;;;;;;;230:92;-1:-1:-1;;;230:92:0:o;328:113::-;386:7;409:6;;;;402:14;;;;-1:-1:-1;430:5:0;;;328:113::o;5010:169::-;5083:5;;:54;;;;;;5102:10;5083:54;;;;5122:4;5083:54;;;;;;;;;;;;-1:-1:-1;;;;;5083:5:0;;;;:18;;:54;;;;;;;;;;;;;;;:5;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;5083:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5083:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5083:54:0;:62;;5141:4;5083:62;5075:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:169;:::o;447:127::-;527:5;;;546:6;;;;539:14;;;6899:1217;7000:7;7226:15;7288:18;7356:12;7529:23;1997:15;;1990:3;:22;;1982:31;;;;;;;;2038:15;;2056:9;2038:27;2030:3;:36;2026:102;;2106:9;2091:11;:24;;2083:33;;;;;;-1:-1:-1;;;;;7024:29:0;;;;;;:11;:29;;;;;:38;:43;7020:89;;;7084:11;:13;;;;;;7020:89;-1:-1:-1;;;;;7121:29:0;;;;;;:11;:29;;;;;:54;;;;;;7196:16;;7188:25;;;;;;7244:33;7273:3;7244:24;:12;3672:1;7244:24;:16;:24;:::i;:33::-;7226:51;-1:-1:-1;7309:36:0;7341:3;7309:27;:12;3716:1;7309:27;:16;:27;:::i;:36::-;7288:57;-1:-1:-1;7371:35:0;7402:3;7371:26;:12;3586:1;7371:26;:16;:26;:::i;:35::-;7435:5;;7356:50;;-1:-1:-1;7419:31:0;;-1:-1:-1;;;;;7435:5:0;7442:7;7419:15;:31::i;:::-;-1:-1:-1;7482:18:0;;:34;;7505:10;7482:34;:22;:34;:::i;:::-;7461:18;:55;7555:86;7571:16;7589:51;7629:10;7589:35;7616:7;7589:35;:12;7606:4;7589:22;:16;:22;:::i;:51::-;7555:15;:86::i;:::-;7529:112;-1:-1:-1;7682:47:0;7700:28;:12;7717:10;7700:28;:16;:28;:::i;:::-;7682:13;;;:47;:17;:47;:::i;:::-;7666:13;:63;7765:7;7746:15;:13;:15::i;:::-;:26;7742:68;;7789:9;:7;:9::i;:::-;3493:3;7826:11;;:23;7822:113;;;7912:11;;7880:13;;:28;;3493:3;7880:28;:17;:28;:::i;:::-;7879:44;;;;;;;;7866:10;:57;7822:113;7952:69;;;;;;;;;;;;8017:3;7952:69;;;;;;-1:-1:-1;;;;;7952:69:0;;;;;;;;;;;;;8057:10;;8037:36;;;;;;8069:3;8037:36;;;;;;-1:-1:-1;;;;;;;;;;;8037:36:0;;;;;;;;;8093:15;6899:1217;-1:-1:-1;;;;;;6899:1217:0:o;6340:551::-;6507:10;;6429:7;;;;6476:27;:12;3493:3;6476:27;:16;:27;:::i;:::-;6475:42;;;;;;;;6449:68;;6556:1;6538:15;:19;:69;;;;-1:-1:-1;6596:11:0;;6561:32;:15;6596:11;6561:32;:19;:32;:::i;:::-;:46;6538:69;6530:78;;;;;;;;-1:-1:-1;;;;;6661:36:0;;;;;;:18;:36;;;;;;:57;;6702:15;6661:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;6621:36:0;;;;;;:18;:36;;;;;:97;6743:11;;:32;;6759:15;6743:32;:15;:32;:::i;:::-;6729:11;:46;6793:55;;;;;;;;-1:-1:-1;;;;;6793:55:0;;;6810:1;;-1:-1:-1;;;;;;;;;;;6793:55:0;;;;;;;;6868:15;6340:551;-1:-1:-1;;;6340:551:0:o;1842:16172::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1842:16172:0;;;-1:-1:-1;1842:16172:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://f12424168afbdea4a3c620fe797778cbbc88a78473ecac9131e22173da2668fd
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.