function _preValidatePurchase(
        address _beneficiary,
        uint256 _weiAmount
    )
    internal
    whenNotPaused
    {
        super._preValidatePurchase(_beneficiary, _weiAmount);
        
        if(block.timestamp <= openingTime + (2 weeks)) {
            require(whitelist[_beneficiary]);
            require(msg.value >= 5 ether);
            rate = 833;
        }else if(block.timestamp > openingTime + (2 weeks) && block.timestamp <= openingTime + (3 weeks)) {
            require(msg.value >= 5 ether);
            rate = 722;
        }else if(block.timestamp > openingTime + (3 weeks) && block.timestamp <= openingTime + (4 weeks)) {
            require(msg.value >= 5 ether);
            rate = 666;
        }else if(block.timestamp > openingTime + (4 weeks) && block.timestamp <= openingTime + (5 weeks)) {
            require(msg.value >= 5 ether);
            rate = 611;
        }else{
            rate = 555;
        }
    }