code: def _get_timestamp_range_edges(first, last, offset, closed='left', base=0):
      
      if isinstance(offset, Tick):
          if isinstance(offset, Day):
              # _adjust_dates_anchored assumes 'D' means 24H, but first/last
              # might contain a DST transition (23H, 24H, or 25H).
              # So "pretend" the dates are naive when adjusting the endpoints
              tz = first.tz
              first = first.tz_localize(None)
              last = last.tz_localize(None)
  
          first, last = _adjust_dates_anchored(first, last, offset,
                                               closed=closed, base=base)
          if isinstance(offset, Day):
              first = first.tz_localize(tz)
              last = last.tz_localize(tz)
          return first, last
  
      else:
          first = first.normalize()
          last = last.normalize()
  
      if closed == 'left':
          first = Timestamp(offset.rollback(first))
      else:
          first = Timestamp(first - offset)
  
      last = Timestamp(last + offset)
  
      return first, last
docs: Adjust the `first` Timestamp to the preceeding Timestamp that resides on
      the provided offset. Adjust the `last` Timestamp to the following
      Timestamp that resides on the provided offset. Input Timestamps that
      already reside on the offset will be adjusted depending on the type of
      offset and the `closed` parameter.
  
      Parameters
      ----------
      first : pd.Timestamp
          The beginning Timestamp of the range to be adjusted.
      last : pd.Timestamp
          The ending Timestamp of the range to be adjusted.
      offset : pd.DateOffset
          The dateoffset to which the Timestamps will be adjusted.
      closed : {'right', 'left'}, default None
          Which side of bin interval is closed.
      base : int, default 0
          The "origin" of the adjusted Timestamps.
  
      Returns
      -------
      A tuple of length 2, containing the adjusted pd.Timestamp objects.