function buyBronze(uint256 _BronzePrice,
                       uint256 _expiration,
                       uint8 _v,
                       bytes32 _r,
                       bytes32 _s
                      ) payable external {
        
        require(_expiration >= block.timestamp);

        
        address signer = ecrecover(keccak256(_BronzePrice, _expiration), _v, _r, _s);
        require(signer == neverdieSigner);

        require(msg.value >= _BronzePrice);
        assert(ndc.transfer(msg.sender, BRONZE_AMOUNT_NDC) 
            && tpt.transfer(msg.sender, BRONZE_AMOUNT_TPT)
            && skl.transfer(msg.sender, BRONZE_AMOUNT_SKL)
            && xper.transfer(msg.sender, BRONZE_AMOUNT_XPER));

        
        emit BuyBronze(msg.sender, _BronzePrice, msg.value);
    }