@flow.EventHandler(allow_client_access=True, auth_required=False)
  def ProcessMessage(self, message=None, event=None):
    client_id = message.source
    # Older client versions do not sent the RDFValue type name explicitly.
    if event is None:
      event = rdf_client.StartupInfo(message.args)

    client_info = event.client_info

    if client_info.client_version < 2910:
      python_hack_root_urn = config_lib.CONFIG.Get("Config.python_hack_root")
      hack_urn = python_hack_root_urn.Add("find_fix.py")

      fd = aff4.FACTORY.Open(hack_urn, token=self.token)
      python_blob = fd.Get(fd.Schema.BINARY)
      if python_blob is None:
        raise flow.FlowError(hack_urn % "Python hack %s not found.")

      self.CallClient(client_id, "ExecutePython", python_code=python_blob)
dataset/ETHPy150Open google/grr/grr/lib/client_compatibility.py/ClientCompatibility.ProcessMessage/swapped operands of `%`