code: def StopHunt(hunt_id, reason=None):
    
  
    hunt_obj = data_store.REL_DB.ReadHuntObject(hunt_id)
    if hunt_obj.hunt_state not in [
        hunt_obj.HuntState.STARTED, hunt_obj.HuntState.PAUSED
    ]:
      raise OnlyStartedOrPausedHuntCanBeStoppedError(hunt_obj)
  
    data_store.REL_DB.UpdateHuntObject(
        hunt_id, hunt_state=hunt_obj.HuntState.STOPPED, hunt_state_comment=reason)
    data_store.REL_DB.RemoveForemanRule(hunt_id=hunt_obj.hunt_id)
  
    if (reason is not None and
        hunt_obj.creator not in aff4_users.GRRUser.SYSTEM_USERS):
      notification.Notify(
          hunt_obj.creator, rdf_objects.UserNotification.Type.TYPE_HUNT_STOPPED,
          reason,
          rdf_objects.ObjectReference(
              reference_type=rdf_objects.ObjectReference.Type.HUNT,
              hunt=rdf_objects.HuntReference(hunt_id=hunt_obj.hunt_id)))
  
    return data_store.REL_DB.ReadHuntObject(hunt_id)
docs: Stops a hunt with a given id.