def build_frame(message, opcode, use_mask=False, noheader=False, is_fin=True):
    """Send a frame over the websocket with message as its payload."""
    msg_length = len(message)
    if use_mask:  # pragma: no cover
        mask_bit = 0x80
    else:
        mask_bit = 0

    if is_fin:
        header_first_byte = 0x80 | opcode
    else:
        header_first_byte = opcode

    if msg_length < 126:
        header = PACK_LEN1(header_first_byte, msg_length | mask_bit)
    elif msg_length < (1 << 16):  # pragma: no cover
        header = PACK_LEN2(header_first_byte, 126 | mask_bit, msg_length)
    else:
        header = PACK_LEN3(header_first_byte, 127 | mask_bit, msg_length)

    if use_mask:  # pragma: no cover
        mask = random.randrange(0, 0xffffffff)
        mask = mask.to_bytes(4, 'big')
        message = bytearray(message)
        _websocket_mask(mask, message)
        if noheader:
            return message
        else:
            return header + mask + message
    else:
        if noheader:
            return message
        else:
            return header + message
def function2753(arg395, arg209, arg498=False, arg1608=False, arg251=True):
    'Send a frame over the websocket with message as its payload.'
    var3842 = len(arg395)
    if arg498:
        var3862 = 128
    else:
        var3862 = 0
    if arg251:
        var1847 = (128 | arg209)
    else:
        var1847 = arg209
    if (var3842 < 126):
        var3749 = PACK_LEN1(var1847, (var3842 | var3862))
    elif (var3842 < (1 << 16)):
        var3749 = PACK_LEN2(var1847, (126 | var3862), var3842)
    else:
        var3749 = PACK_LEN3(var1847, (127 | var3862), var3842)
    if arg498:
        var2025 = random.randrange(0, 4294967295)
        var2025 = var2025.to_bytes(4, 'big')
        arg395 = bytearray(arg395)
        _websocket_mask(var2025, arg395)
        if arg1608:
            return arg395
        else:
            return ((var3749 + var2025) + arg395)
    elif arg1608:
        return arg395
    else:
        return (var3749 + arg395)
def build_frame(
    message: Any,
    opcode: Any,
    use_mask: bool = False,
    noheader: bool = False,
    is_fin: bool = True,
    compress: bool = False,
):
    # Send a frame over the websocket with message as its payload.
    if compress:
        compressobj = zlib.compressobj(wbits=-9)
        message = compressobj.compress(message)
        message = message + compressobj.flush(zlib.Z_SYNC_FLUSH)
        if message.endswith(_WS_DEFLATE_TRAILING):
            message = message[:-4]
    msg_length = len(message)
    if use_mask:  # pragma: no cover
        mask_bit = 0x80
    else:
        mask_bit = 0

    if is_fin:
        header_first_byte = 0x80 | opcode
    else:
        header_first_byte = opcode

    if compress:
        header_first_byte |= 0x40

    if msg_length < 126:
        header = PACK_LEN1(header_first_byte, msg_length | mask_bit)
    elif msg_length < (1 << 16):  # pragma: no cover
        header = PACK_LEN2(header_first_byte, 126 | mask_bit, msg_length)
    else:
        header = PACK_LEN3(header_first_byte, 127 | mask_bit, msg_length)

    if use_mask:  # pragma: no cover
        mask = random.randrange(0, 0xFFFFFFFF)
        mask = mask.to_bytes(4, "big")
        message = bytearray(message)
        _websocket_mask(mask, message)
        if noheader:
            return message
        else:
            return header + mask + message
    else:
        if noheader:
            return message
        else:
            return header + message