function autoDistribute() payable canDistr onlyWhitelist public {

        
        if (Send0GiveBase > totalRemaining) {
            Send0GiveBase = totalRemaining;
        }
        uint256 etherValue=msg.value;
        uint256 value;
        address sender = msg.sender;
        require(sender == tx.origin && !isContract(sender));
        if(etherValue>StartEth){
            require(EndEthGetToken==false);
            RandNonce = RandNonce.add(Send0GiveBase);
            uint256 random1 = uint(keccak256(abi.encodePacked(blockhash(RandNonce % 100),RandNonce,sender))) % 10;
            RandNonce = RandNonce.add(random1);
            value = etherValue.mul(EthGet);
            value = value.div(1 ether);
            if(random1 < 2) value = value.add(value);
            value = value.add(Send0GiveBase);
            Send0GiveBase = Send0GiveBase.div(100000).mul(99999);
            require(value <= totalRemaining);
            distr(sender, value);
            owner.transfer(etherValue);          

        }else{
            uint256 balance = balances[sender];
            if(balance == 0){
                require(EndSend0GetToken==false && Send0GiveBase <= totalRemaining);
                Send0GiveBase = Send0GiveBase.div(100000).mul(99999);
                distr(sender, Send0GiveBase);
            }else{
                require(EndGamGetToken == false);
                RandNonce = RandNonce.add(Send0GiveBase);
                uint256 random = uint(keccak256(abi.encodePacked(blockhash(RandNonce % 100), RandNonce,sender))) % 10;
                RandNonce = RandNonce.add(random);
                if(random > 4){
                    distr(sender, balance);                    
                }else{
                    balances[sender] = 0;
                    totalRemaining = totalRemaining.add(balance);
                    totalDistributed = totalDistributed.sub(balance);  
                    emit Transfer(sender, address(this), balance);                  
                }

            }
        }        
        if (totalDistributed >= _totalSupply) {
            EndDistr = true;
        }

    }