Given an array of show names (strings) representing a user's viewing history, return the start and end indices of a longest contiguous subarray that contains no repeated show names (case-insensitive). If multiple answers exist, return any one. Achieve O(n) time and O(min(n, m)) space where n is the length and m is the number of distinct shows. Follow-up: adapt your solution to a streaming input API that yields one show name at a time and must always be able to report the current longest unique-name window; describe data structures, update complexity, and memory bounds.