Pattern analysis