code: def version_at_least(version_string, major, minor, micro, patch):
      
      parts = re.match(
          r'^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+).*$',
          version_string,
      )
      for ver, gold in zip(parts.group(1, 2, 3, 4), (major, minor, micro, patch)):
          if int(ver) < int(gold):
              return False
          elif int(ver) > int(gold):
              return True
      return True
docs: This returns True if the version_string represents a Tor version
      of at least ``major``.``minor``.``micro``.``patch`` version,
      ignoring any trailing specifiers.