code: func (ss *Rate) GetAll(nowTs time.Time) []RateElement {
  	now := nowTs.UnixNano()
  	elements := make([]RateElement, 0, len(ss.buckets))
  	for _, bucket := range ss.buckets {
  		if bucket.key == "" {
  			continue
  		}
  		rate := ss.recount(bucket.rate, bucket.lastTs, now)
  		errRate := ss.recount(bucket.errRate, bucket.errLastTs, now)
  		elements = append(elements, RateElement{
  			Key:    bucket.key,
  			LoRate: rate - errRate,
  			HiRate: rate,
  		})
  	}
  	sort.Sort(sort.Reverse(sseSlice(elements)))
  	return elements
  }
docs: // GetAll gets the lower and upper bounds of a range for all tracked elements
  //
  // The items are sorted by decreasing upper bound. Complexity is O(k*log(k))
  // due to sorting.