def encode_topic_name(original: str) -> str:
    """
    Encodes a channel name into a valid SNS topic name. Common characters in topics are '*', '/', '.', ':'. Those are
    translated into markers like '_WCD_'.

    :param original: the original topic name (e.g., 'my.program/foo')
    :return: encoded topic name safe for SNS (e.g., my_DOT_program_FWS_foo
    """
    encoded = original
    encoded = encoded.replace("*", "_WCD_")
    encoded = encoded.replace("/", "_FWS_")
    encoded = encoded.replace(".", "_DOT_")
    encoded = encoded.replace(":", "_COL_")
    encoded = encoded.replace("<", "_LT_")
    encoded = encoded.replace(">", "_GT_")
    return encoded