Returns AuditEvents for given handlers, actions, and timerange.

def _LoadAuditEvents(handlers,
                     get_report_args,
                     actions=None,
                     token=None,
                     transformers=None):
  """Returns AuditEvents for given handlers, actions, and timerange."""
  if transformers is None:
    transformers = {}

  if data_store.RelationalDBEnabled():
    entries = data_store.REL_DB.ReadAPIAuditEntries(
        min_timestamp=get_report_args.start_time,
        max_timestamp=get_report_args.start_time + get_report_args.duration,
        router_method_names=list(handlers.keys()))
    rows = [_EntryToEvent(entry, handlers, transformers) for entry in entries]
  else:
    entries = report_utils.GetAuditLogEntries(
        offset=get_report_args.duration,
        now=get_report_args.start_time + get_report_args.duration,
        token=token)
    if actions is None:
      actions = set(handlers.values())
    rows = [entry for entry in entries if entry.action in actions]
  rows.sort(key=lambda row: row.timestamp, reverse=True)
  return rows