code: def find_missing_taf_times(lines: [dict], start: Timestamp, end: Timestamp) -> [dict]:  # type: ignore
      
      if not lines:
          return lines
      # Assign start time
      lines[0]['start_time'] = start
      # Fix other times
      last_fm_line = 0
      for i, line in enumerate(lines):
          if _is_tempo_or_prob(line['type']):
              continue
          last_fm_line = i
          # Search remaining lines to fill empty end or previous for empty start
          for target, other, direc in (('start', 'end', -1), ('end', 'start', 1)):
              target += '_time'
              if not line[target]:
                  line[target] = _get_next_time(lines[i::direc][1:], other + '_time')
      # Special case for final forcast
      if last_fm_line:
          lines[last_fm_line]['end_time'] = end
      # Reset original end time if still empty
      if lines and not lines[0]['end_time']:
          lines[0]['end_time'] = end
      return lines
docs: Fix any missing time issues (except for error/empty lines)