def is_arn_filter_match(arn: str, filter_arn: str) -> bool:
    """
    Returns True if the given arn matches the filter pattern. In order
    for an arn to be a match, it must match each field separated by a
    colon(:). If the filter pattern contains an empty field, then it is
    treated as wildcard for that field.

    Examples:
    arn=abc:def:ghi   filter_arn=abc:def:ghi   #exact match returns True
    arn=abc:def:ghi   filter_arn=abc::ghi      #wildcarded match returns True
    """
    arn_split = arn.split(":")
    filter_arn_split = filter_arn.split(":")

    # arns of different field lenth are treated as mismatch
    if len(arn_split) != len(filter_arn_split):
        return False

    for i in range(0, len(arn_split), 1):
        # filter pattern with value defined can be considered for mismatch
        if filter_arn_split[i] and filter_arn_split[i] != arn_split[i]:
            return False
    return True