code: def integrate_until_event(self, t0, event_fn):
      t0 = t0.to(self.y0.device, self.dtype)
      self._before_integrate(t0.reshape(-1))
      event_time, y1 = self._advance_until_event(event_fn)
      solution = torch.stack([self.y0, y1], dim=0)
      return event_time, solution
  
imports: import abc
  import torch
  from .event_handling import find_event
  from .misc import _handle_unused_kwargs
label_desc: Use image node_id 2 for calling the AdaptiveStepsizeEventODESolver obj's underlying member method code with example usage: obj.integrate_until_event(t0, event_fn) and returns: event_time,  solution