Project import generated by Copybara.

GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/api/api_proto/features_pb2.py b/api/api_proto/features_pb2.py
new file mode 100644
index 0000000..c415a35
--- /dev/null
+++ b/api/api_proto/features_pb2.py
@@ -0,0 +1,1543 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: api/api_proto/features.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from api.api_proto import common_pb2 as api_dot_api__proto_dot_common__pb2
+from api.api_proto import features_objects_pb2 as api_dot_api__proto_dot_features__objects__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='api/api_proto/features.proto',
+  package='monorail',
+  syntax='proto3',
+  serialized_options=None,
+  serialized_pb=_b('\n\x1c\x61pi/api_proto/features.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a$api/api_proto/features_objects.proto\"<\n\x19ListHotlistsByUserRequest\x12\x1f\n\x04user\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"A\n\x1aListHotlistsByUserResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"?\n\x1aListHotlistsByIssueRequest\x12!\n\x05issue\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"B\n\x1bListHotlistsByIssueResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"$\n\"ListRecentlyVisitedHotlistsRequest\"J\n#ListRecentlyVisitedHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"\x1c\n\x1aListStarredHotlistsRequest\"B\n\x1bListStarredHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"G\n\x1aGetHotlistStarCountRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\"1\n\x1bGetHotlistStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"P\n\x12StarHotlistRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarHotlistResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x11GetHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"8\n\x12GetHotlistResponse\x12\"\n\x07hotlist\x18\x01 \x01(\x0b\x32\x11.monorail.Hotlist\"\xa5\x01\n\x17ListHotlistItemsRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12(\n\npagination\x18\x03 \x01(\x0b\x32\x14.monorail.Pagination\x12\x0b\n\x03\x63\x61n\x18\x04 \x01(\r\x12\x11\n\tsort_spec\x18\x05 \x01(\t\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\"@\n\x18ListHotlistItemsResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.monorail.HotlistItem\"\xae\x01\n\x14\x43reateHotlistRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nissue_refs\x18\x06 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nis_private\x18\x07 \x01(\x08\"\x17\n\x15\x43reateHotlistResponse\"\'\n\x17\x43heckHotlistNameRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\")\n\x18\x43heckHotlistNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"u\n\x1fRemoveIssuesFromHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\"\"\n RemoveIssuesFromHotlistsResponse\"~\n\x1a\x41\x64\x64IssuesToHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\"\x1d\n\x1b\x41\x64\x64IssuesToHotlistsResponse\"\xac\x01\n\x1aRerankHotlistIssuesRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nmoved_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x04 \x01(\x08\"\x1d\n\x1bRerankHotlistIssuesResponse\"\x7f\n\x1dUpdateHotlistIssueNoteRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12%\n\tissue_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\" \n\x1eUpdateHotlistIssueNoteResponse\"A\n\x14\x44\x65leteHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"\x17\n\x15\x44\x65leteHotlistResponse\"=\n\x17PredictComponentRequest\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x14\n\x0cproject_name\x18\x03 \x01(\t\"I\n\x18PredictComponentResponse\x12-\n\rcomponent_ref\x18\x01 \x01(\x0b\x32\x16.monorail.ComponentRef2\xa5\x0c\n\x08\x46\x65\x61tures\x12\x61\n\x12ListHotlistsByUser\x12#.monorail.ListHotlistsByUserRequest\x1a$.monorail.ListHotlistsByUserResponse\"\x00\x12\x64\n\x13ListHotlistsByIssue\x12$.monorail.ListHotlistsByIssueRequest\x1a%.monorail.ListHotlistsByIssueResponse\"\x00\x12|\n\x1bListRecentlyVisitedHotlists\x12,.monorail.ListRecentlyVisitedHotlistsRequest\x1a-.monorail.ListRecentlyVisitedHotlistsResponse\"\x00\x12\x64\n\x13ListStarredHotlists\x12$.monorail.ListStarredHotlistsRequest\x1a%.monorail.ListStarredHotlistsResponse\"\x00\x12\x64\n\x13GetHotlistStarCount\x12$.monorail.GetHotlistStarCountRequest\x1a%.monorail.GetHotlistStarCountResponse\"\x00\x12L\n\x0bStarHotlist\x12\x1c.monorail.StarHotlistRequest\x1a\x1d.monorail.StarHotlistResponse\"\x00\x12I\n\nGetHotlist\x12\x1b.monorail.GetHotlistRequest\x1a\x1c.monorail.GetHotlistResponse\"\x00\x12[\n\x10ListHotlistItems\x12!.monorail.ListHotlistItemsRequest\x1a\".monorail.ListHotlistItemsResponse\"\x00\x12R\n\rCreateHotlist\x12\x1e.monorail.CreateHotlistRequest\x1a\x1f.monorail.CreateHotlistResponse\"\x00\x12[\n\x10\x43heckHotlistName\x12!.monorail.CheckHotlistNameRequest\x1a\".monorail.CheckHotlistNameResponse\"\x00\x12s\n\x18RemoveIssuesFromHotlists\x12).monorail.RemoveIssuesFromHotlistsRequest\x1a*.monorail.RemoveIssuesFromHotlistsResponse\"\x00\x12\x64\n\x13\x41\x64\x64IssuesToHotlists\x12$.monorail.AddIssuesToHotlistsRequest\x1a%.monorail.AddIssuesToHotlistsResponse\"\x00\x12\x64\n\x13RerankHotlistIssues\x12$.monorail.RerankHotlistIssuesRequest\x1a%.monorail.RerankHotlistIssuesResponse\"\x00\x12m\n\x16UpdateHotlistIssueNote\x12\'.monorail.UpdateHotlistIssueNoteRequest\x1a(.monorail.UpdateHotlistIssueNoteResponse\"\x00\x12R\n\rDeleteHotlist\x12\x1e.monorail.DeleteHotlistRequest\x1a\x1f.monorail.DeleteHotlistResponse\"\x00\x12[\n\x10PredictComponent\x12!.monorail.PredictComponentRequest\x1a\".monorail.PredictComponentResponse\"\x00\x62\x06proto3')
+  ,
+  dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_features__objects__pb2.DESCRIPTOR,])
+
+
+
+
+_LISTHOTLISTSBYUSERREQUEST = _descriptor.Descriptor(
+  name='ListHotlistsByUserRequest',
+  full_name='monorail.ListHotlistsByUserRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='user', full_name='monorail.ListHotlistsByUserRequest.user', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=108,
+  serialized_end=168,
+)
+
+
+_LISTHOTLISTSBYUSERRESPONSE = _descriptor.Descriptor(
+  name='ListHotlistsByUserResponse',
+  full_name='monorail.ListHotlistsByUserResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlists', full_name='monorail.ListHotlistsByUserResponse.hotlists', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=170,
+  serialized_end=235,
+)
+
+
+_LISTHOTLISTSBYISSUEREQUEST = _descriptor.Descriptor(
+  name='ListHotlistsByIssueRequest',
+  full_name='monorail.ListHotlistsByIssueRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='issue', full_name='monorail.ListHotlistsByIssueRequest.issue', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=237,
+  serialized_end=300,
+)
+
+
+_LISTHOTLISTSBYISSUERESPONSE = _descriptor.Descriptor(
+  name='ListHotlistsByIssueResponse',
+  full_name='monorail.ListHotlistsByIssueResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlists', full_name='monorail.ListHotlistsByIssueResponse.hotlists', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=302,
+  serialized_end=368,
+)
+
+
+_LISTRECENTLYVISITEDHOTLISTSREQUEST = _descriptor.Descriptor(
+  name='ListRecentlyVisitedHotlistsRequest',
+  full_name='monorail.ListRecentlyVisitedHotlistsRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=370,
+  serialized_end=406,
+)
+
+
+_LISTRECENTLYVISITEDHOTLISTSRESPONSE = _descriptor.Descriptor(
+  name='ListRecentlyVisitedHotlistsResponse',
+  full_name='monorail.ListRecentlyVisitedHotlistsResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlists', full_name='monorail.ListRecentlyVisitedHotlistsResponse.hotlists', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=408,
+  serialized_end=482,
+)
+
+
+_LISTSTARREDHOTLISTSREQUEST = _descriptor.Descriptor(
+  name='ListStarredHotlistsRequest',
+  full_name='monorail.ListStarredHotlistsRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=484,
+  serialized_end=512,
+)
+
+
+_LISTSTARREDHOTLISTSRESPONSE = _descriptor.Descriptor(
+  name='ListStarredHotlistsResponse',
+  full_name='monorail.ListStarredHotlistsResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlists', full_name='monorail.ListStarredHotlistsResponse.hotlists', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=514,
+  serialized_end=580,
+)
+
+
+_GETHOTLISTSTARCOUNTREQUEST = _descriptor.Descriptor(
+  name='GetHotlistStarCountRequest',
+  full_name='monorail.GetHotlistStarCountRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.GetHotlistStarCountRequest.hotlist_ref', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=582,
+  serialized_end=653,
+)
+
+
+_GETHOTLISTSTARCOUNTRESPONSE = _descriptor.Descriptor(
+  name='GetHotlistStarCountResponse',
+  full_name='monorail.GetHotlistStarCountResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='star_count', full_name='monorail.GetHotlistStarCountResponse.star_count', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=655,
+  serialized_end=704,
+)
+
+
+_STARHOTLISTREQUEST = _descriptor.Descriptor(
+  name='StarHotlistRequest',
+  full_name='monorail.StarHotlistRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.StarHotlistRequest.hotlist_ref', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='starred', full_name='monorail.StarHotlistRequest.starred', index=1,
+      number=3, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=706,
+  serialized_end=786,
+)
+
+
+_STARHOTLISTRESPONSE = _descriptor.Descriptor(
+  name='StarHotlistResponse',
+  full_name='monorail.StarHotlistResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='star_count', full_name='monorail.StarHotlistResponse.star_count', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=788,
+  serialized_end=829,
+)
+
+
+_GETHOTLISTREQUEST = _descriptor.Descriptor(
+  name='GetHotlistRequest',
+  full_name='monorail.GetHotlistRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.GetHotlistRequest.hotlist_ref', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=831,
+  serialized_end=893,
+)
+
+
+_GETHOTLISTRESPONSE = _descriptor.Descriptor(
+  name='GetHotlistResponse',
+  full_name='monorail.GetHotlistResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist', full_name='monorail.GetHotlistResponse.hotlist', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=895,
+  serialized_end=951,
+)
+
+
+_LISTHOTLISTITEMSREQUEST = _descriptor.Descriptor(
+  name='ListHotlistItemsRequest',
+  full_name='monorail.ListHotlistItemsRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.ListHotlistItemsRequest.hotlist_ref', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='pagination', full_name='monorail.ListHotlistItemsRequest.pagination', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='can', full_name='monorail.ListHotlistItemsRequest.can', index=2,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='sort_spec', full_name='monorail.ListHotlistItemsRequest.sort_spec', index=3,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='group_by_spec', full_name='monorail.ListHotlistItemsRequest.group_by_spec', index=4,
+      number=6, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=954,
+  serialized_end=1119,
+)
+
+
+_LISTHOTLISTITEMSRESPONSE = _descriptor.Descriptor(
+  name='ListHotlistItemsResponse',
+  full_name='monorail.ListHotlistItemsResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='monorail.ListHotlistItemsResponse.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1121,
+  serialized_end=1185,
+)
+
+
+_CREATEHOTLISTREQUEST = _descriptor.Descriptor(
+  name='CreateHotlistRequest',
+  full_name='monorail.CreateHotlistRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='name', full_name='monorail.CreateHotlistRequest.name', index=0,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='summary', full_name='monorail.CreateHotlistRequest.summary', index=1,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='description', full_name='monorail.CreateHotlistRequest.description', index=2,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='editor_refs', full_name='monorail.CreateHotlistRequest.editor_refs', index=3,
+      number=5, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='issue_refs', full_name='monorail.CreateHotlistRequest.issue_refs', index=4,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='is_private', full_name='monorail.CreateHotlistRequest.is_private', index=5,
+      number=7, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1188,
+  serialized_end=1362,
+)
+
+
+_CREATEHOTLISTRESPONSE = _descriptor.Descriptor(
+  name='CreateHotlistResponse',
+  full_name='monorail.CreateHotlistResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1364,
+  serialized_end=1387,
+)
+
+
+_CHECKHOTLISTNAMEREQUEST = _descriptor.Descriptor(
+  name='CheckHotlistNameRequest',
+  full_name='monorail.CheckHotlistNameRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='name', full_name='monorail.CheckHotlistNameRequest.name', index=0,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1389,
+  serialized_end=1428,
+)
+
+
+_CHECKHOTLISTNAMERESPONSE = _descriptor.Descriptor(
+  name='CheckHotlistNameResponse',
+  full_name='monorail.CheckHotlistNameResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='error', full_name='monorail.CheckHotlistNameResponse.error', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1430,
+  serialized_end=1471,
+)
+
+
+_REMOVEISSUESFROMHOTLISTSREQUEST = _descriptor.Descriptor(
+  name='RemoveIssuesFromHotlistsRequest',
+  full_name='monorail.RemoveIssuesFromHotlistsRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.hotlist_refs', index=0,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='issue_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.issue_refs', index=1,
+      number=3, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1473,
+  serialized_end=1590,
+)
+
+
+_REMOVEISSUESFROMHOTLISTSRESPONSE = _descriptor.Descriptor(
+  name='RemoveIssuesFromHotlistsResponse',
+  full_name='monorail.RemoveIssuesFromHotlistsResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1592,
+  serialized_end=1626,
+)
+
+
+_ADDISSUESTOHOTLISTSREQUEST = _descriptor.Descriptor(
+  name='AddIssuesToHotlistsRequest',
+  full_name='monorail.AddIssuesToHotlistsRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_refs', full_name='monorail.AddIssuesToHotlistsRequest.hotlist_refs', index=0,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='issue_refs', full_name='monorail.AddIssuesToHotlistsRequest.issue_refs', index=1,
+      number=3, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='note', full_name='monorail.AddIssuesToHotlistsRequest.note', index=2,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1628,
+  serialized_end=1754,
+)
+
+
+_ADDISSUESTOHOTLISTSRESPONSE = _descriptor.Descriptor(
+  name='AddIssuesToHotlistsResponse',
+  full_name='monorail.AddIssuesToHotlistsResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1756,
+  serialized_end=1785,
+)
+
+
+_RERANKHOTLISTISSUESREQUEST = _descriptor.Descriptor(
+  name='RerankHotlistIssuesRequest',
+  full_name='monorail.RerankHotlistIssuesRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.RerankHotlistIssuesRequest.hotlist_ref', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='moved_refs', full_name='monorail.RerankHotlistIssuesRequest.moved_refs', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='target_ref', full_name='monorail.RerankHotlistIssuesRequest.target_ref', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='split_above', full_name='monorail.RerankHotlistIssuesRequest.split_above', index=3,
+      number=4, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1788,
+  serialized_end=1960,
+)
+
+
+_RERANKHOTLISTISSUESRESPONSE = _descriptor.Descriptor(
+  name='RerankHotlistIssuesResponse',
+  full_name='monorail.RerankHotlistIssuesResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1962,
+  serialized_end=1991,
+)
+
+
+_UPDATEHOTLISTISSUENOTEREQUEST = _descriptor.Descriptor(
+  name='UpdateHotlistIssueNoteRequest',
+  full_name='monorail.UpdateHotlistIssueNoteRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.hotlist_ref', index=0,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='issue_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.issue_ref', index=1,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='note', full_name='monorail.UpdateHotlistIssueNoteRequest.note', index=2,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1993,
+  serialized_end=2120,
+)
+
+
+_UPDATEHOTLISTISSUENOTERESPONSE = _descriptor.Descriptor(
+  name='UpdateHotlistIssueNoteResponse',
+  full_name='monorail.UpdateHotlistIssueNoteResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2122,
+  serialized_end=2154,
+)
+
+
+_DELETEHOTLISTREQUEST = _descriptor.Descriptor(
+  name='DeleteHotlistRequest',
+  full_name='monorail.DeleteHotlistRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hotlist_ref', full_name='monorail.DeleteHotlistRequest.hotlist_ref', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2156,
+  serialized_end=2221,
+)
+
+
+_DELETEHOTLISTRESPONSE = _descriptor.Descriptor(
+  name='DeleteHotlistResponse',
+  full_name='monorail.DeleteHotlistResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2223,
+  serialized_end=2246,
+)
+
+
+_PREDICTCOMPONENTREQUEST = _descriptor.Descriptor(
+  name='PredictComponentRequest',
+  full_name='monorail.PredictComponentRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='text', full_name='monorail.PredictComponentRequest.text', index=0,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='project_name', full_name='monorail.PredictComponentRequest.project_name', index=1,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2248,
+  serialized_end=2309,
+)
+
+
+_PREDICTCOMPONENTRESPONSE = _descriptor.Descriptor(
+  name='PredictComponentResponse',
+  full_name='monorail.PredictComponentResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='component_ref', full_name='monorail.PredictComponentResponse.component_ref', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=2311,
+  serialized_end=2384,
+)
+
+_LISTHOTLISTSBYUSERREQUEST.fields_by_name['user'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
+_LISTHOTLISTSBYUSERRESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
+_LISTHOTLISTSBYISSUEREQUEST.fields_by_name['issue'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_LISTHOTLISTSBYISSUERESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
+_LISTRECENTLYVISITEDHOTLISTSRESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
+_LISTSTARREDHOTLISTSRESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
+_GETHOTLISTSTARCOUNTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_STARHOTLISTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_GETHOTLISTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_GETHOTLISTRESPONSE.fields_by_name['hotlist'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
+_LISTHOTLISTITEMSREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_LISTHOTLISTITEMSREQUEST.fields_by_name['pagination'].message_type = api_dot_api__proto_dot_common__pb2._PAGINATION
+_LISTHOTLISTITEMSRESPONSE.fields_by_name['items'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLISTITEM
+_CREATEHOTLISTREQUEST.fields_by_name['editor_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
+_CREATEHOTLISTREQUEST.fields_by_name['issue_refs'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_REMOVEISSUESFROMHOTLISTSREQUEST.fields_by_name['hotlist_refs'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_REMOVEISSUESFROMHOTLISTSREQUEST.fields_by_name['issue_refs'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_ADDISSUESTOHOTLISTSREQUEST.fields_by_name['hotlist_refs'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_ADDISSUESTOHOTLISTSREQUEST.fields_by_name['issue_refs'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_RERANKHOTLISTISSUESREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_RERANKHOTLISTISSUESREQUEST.fields_by_name['moved_refs'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_RERANKHOTLISTISSUESREQUEST.fields_by_name['target_ref'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['issue_ref'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
+_DELETEHOTLISTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
+_PREDICTCOMPONENTRESPONSE.fields_by_name['component_ref'].message_type = api_dot_api__proto_dot_common__pb2._COMPONENTREF
+DESCRIPTOR.message_types_by_name['ListHotlistsByUserRequest'] = _LISTHOTLISTSBYUSERREQUEST
+DESCRIPTOR.message_types_by_name['ListHotlistsByUserResponse'] = _LISTHOTLISTSBYUSERRESPONSE
+DESCRIPTOR.message_types_by_name['ListHotlistsByIssueRequest'] = _LISTHOTLISTSBYISSUEREQUEST
+DESCRIPTOR.message_types_by_name['ListHotlistsByIssueResponse'] = _LISTHOTLISTSBYISSUERESPONSE
+DESCRIPTOR.message_types_by_name['ListRecentlyVisitedHotlistsRequest'] = _LISTRECENTLYVISITEDHOTLISTSREQUEST
+DESCRIPTOR.message_types_by_name['ListRecentlyVisitedHotlistsResponse'] = _LISTRECENTLYVISITEDHOTLISTSRESPONSE
+DESCRIPTOR.message_types_by_name['ListStarredHotlistsRequest'] = _LISTSTARREDHOTLISTSREQUEST
+DESCRIPTOR.message_types_by_name['ListStarredHotlistsResponse'] = _LISTSTARREDHOTLISTSRESPONSE
+DESCRIPTOR.message_types_by_name['GetHotlistStarCountRequest'] = _GETHOTLISTSTARCOUNTREQUEST
+DESCRIPTOR.message_types_by_name['GetHotlistStarCountResponse'] = _GETHOTLISTSTARCOUNTRESPONSE
+DESCRIPTOR.message_types_by_name['StarHotlistRequest'] = _STARHOTLISTREQUEST
+DESCRIPTOR.message_types_by_name['StarHotlistResponse'] = _STARHOTLISTRESPONSE
+DESCRIPTOR.message_types_by_name['GetHotlistRequest'] = _GETHOTLISTREQUEST
+DESCRIPTOR.message_types_by_name['GetHotlistResponse'] = _GETHOTLISTRESPONSE
+DESCRIPTOR.message_types_by_name['ListHotlistItemsRequest'] = _LISTHOTLISTITEMSREQUEST
+DESCRIPTOR.message_types_by_name['ListHotlistItemsResponse'] = _LISTHOTLISTITEMSRESPONSE
+DESCRIPTOR.message_types_by_name['CreateHotlistRequest'] = _CREATEHOTLISTREQUEST
+DESCRIPTOR.message_types_by_name['CreateHotlistResponse'] = _CREATEHOTLISTRESPONSE
+DESCRIPTOR.message_types_by_name['CheckHotlistNameRequest'] = _CHECKHOTLISTNAMEREQUEST
+DESCRIPTOR.message_types_by_name['CheckHotlistNameResponse'] = _CHECKHOTLISTNAMERESPONSE
+DESCRIPTOR.message_types_by_name['RemoveIssuesFromHotlistsRequest'] = _REMOVEISSUESFROMHOTLISTSREQUEST
+DESCRIPTOR.message_types_by_name['RemoveIssuesFromHotlistsResponse'] = _REMOVEISSUESFROMHOTLISTSRESPONSE
+DESCRIPTOR.message_types_by_name['AddIssuesToHotlistsRequest'] = _ADDISSUESTOHOTLISTSREQUEST
+DESCRIPTOR.message_types_by_name['AddIssuesToHotlistsResponse'] = _ADDISSUESTOHOTLISTSRESPONSE
+DESCRIPTOR.message_types_by_name['RerankHotlistIssuesRequest'] = _RERANKHOTLISTISSUESREQUEST
+DESCRIPTOR.message_types_by_name['RerankHotlistIssuesResponse'] = _RERANKHOTLISTISSUESRESPONSE
+DESCRIPTOR.message_types_by_name['UpdateHotlistIssueNoteRequest'] = _UPDATEHOTLISTISSUENOTEREQUEST
+DESCRIPTOR.message_types_by_name['UpdateHotlistIssueNoteResponse'] = _UPDATEHOTLISTISSUENOTERESPONSE
+DESCRIPTOR.message_types_by_name['DeleteHotlistRequest'] = _DELETEHOTLISTREQUEST
+DESCRIPTOR.message_types_by_name['DeleteHotlistResponse'] = _DELETEHOTLISTRESPONSE
+DESCRIPTOR.message_types_by_name['PredictComponentRequest'] = _PREDICTCOMPONENTREQUEST
+DESCRIPTOR.message_types_by_name['PredictComponentResponse'] = _PREDICTCOMPONENTRESPONSE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+ListHotlistsByUserRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserRequest', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTSBYUSERREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserRequest)
+  ))
+_sym_db.RegisterMessage(ListHotlistsByUserRequest)
+
+ListHotlistsByUserResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserResponse', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTSBYUSERRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserResponse)
+  ))
+_sym_db.RegisterMessage(ListHotlistsByUserResponse)
+
+ListHotlistsByIssueRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueRequest', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTSBYISSUEREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueRequest)
+  ))
+_sym_db.RegisterMessage(ListHotlistsByIssueRequest)
+
+ListHotlistsByIssueResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueResponse', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTSBYISSUERESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueResponse)
+  ))
+_sym_db.RegisterMessage(ListHotlistsByIssueResponse)
+
+ListRecentlyVisitedHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsRequest', (_message.Message,), dict(
+  DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsRequest)
+  ))
+_sym_db.RegisterMessage(ListRecentlyVisitedHotlistsRequest)
+
+ListRecentlyVisitedHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsResponse', (_message.Message,), dict(
+  DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsResponse)
+  ))
+_sym_db.RegisterMessage(ListRecentlyVisitedHotlistsResponse)
+
+ListStarredHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsRequest', (_message.Message,), dict(
+  DESCRIPTOR = _LISTSTARREDHOTLISTSREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsRequest)
+  ))
+_sym_db.RegisterMessage(ListStarredHotlistsRequest)
+
+ListStarredHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsResponse', (_message.Message,), dict(
+  DESCRIPTOR = _LISTSTARREDHOTLISTSRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsResponse)
+  ))
+_sym_db.RegisterMessage(ListStarredHotlistsResponse)
+
+GetHotlistStarCountRequest = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountRequest', (_message.Message,), dict(
+  DESCRIPTOR = _GETHOTLISTSTARCOUNTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountRequest)
+  ))
+_sym_db.RegisterMessage(GetHotlistStarCountRequest)
+
+GetHotlistStarCountResponse = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountResponse', (_message.Message,), dict(
+  DESCRIPTOR = _GETHOTLISTSTARCOUNTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountResponse)
+  ))
+_sym_db.RegisterMessage(GetHotlistStarCountResponse)
+
+StarHotlistRequest = _reflection.GeneratedProtocolMessageType('StarHotlistRequest', (_message.Message,), dict(
+  DESCRIPTOR = _STARHOTLISTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.StarHotlistRequest)
+  ))
+_sym_db.RegisterMessage(StarHotlistRequest)
+
+StarHotlistResponse = _reflection.GeneratedProtocolMessageType('StarHotlistResponse', (_message.Message,), dict(
+  DESCRIPTOR = _STARHOTLISTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.StarHotlistResponse)
+  ))
+_sym_db.RegisterMessage(StarHotlistResponse)
+
+GetHotlistRequest = _reflection.GeneratedProtocolMessageType('GetHotlistRequest', (_message.Message,), dict(
+  DESCRIPTOR = _GETHOTLISTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.GetHotlistRequest)
+  ))
+_sym_db.RegisterMessage(GetHotlistRequest)
+
+GetHotlistResponse = _reflection.GeneratedProtocolMessageType('GetHotlistResponse', (_message.Message,), dict(
+  DESCRIPTOR = _GETHOTLISTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.GetHotlistResponse)
+  ))
+_sym_db.RegisterMessage(GetHotlistResponse)
+
+ListHotlistItemsRequest = _reflection.GeneratedProtocolMessageType('ListHotlistItemsRequest', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTITEMSREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsRequest)
+  ))
+_sym_db.RegisterMessage(ListHotlistItemsRequest)
+
+ListHotlistItemsResponse = _reflection.GeneratedProtocolMessageType('ListHotlistItemsResponse', (_message.Message,), dict(
+  DESCRIPTOR = _LISTHOTLISTITEMSRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsResponse)
+  ))
+_sym_db.RegisterMessage(ListHotlistItemsResponse)
+
+CreateHotlistRequest = _reflection.GeneratedProtocolMessageType('CreateHotlistRequest', (_message.Message,), dict(
+  DESCRIPTOR = _CREATEHOTLISTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.CreateHotlistRequest)
+  ))
+_sym_db.RegisterMessage(CreateHotlistRequest)
+
+CreateHotlistResponse = _reflection.GeneratedProtocolMessageType('CreateHotlistResponse', (_message.Message,), dict(
+  DESCRIPTOR = _CREATEHOTLISTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.CreateHotlistResponse)
+  ))
+_sym_db.RegisterMessage(CreateHotlistResponse)
+
+CheckHotlistNameRequest = _reflection.GeneratedProtocolMessageType('CheckHotlistNameRequest', (_message.Message,), dict(
+  DESCRIPTOR = _CHECKHOTLISTNAMEREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameRequest)
+  ))
+_sym_db.RegisterMessage(CheckHotlistNameRequest)
+
+CheckHotlistNameResponse = _reflection.GeneratedProtocolMessageType('CheckHotlistNameResponse', (_message.Message,), dict(
+  DESCRIPTOR = _CHECKHOTLISTNAMERESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameResponse)
+  ))
+_sym_db.RegisterMessage(CheckHotlistNameResponse)
+
+RemoveIssuesFromHotlistsRequest = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsRequest', (_message.Message,), dict(
+  DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsRequest)
+  ))
+_sym_db.RegisterMessage(RemoveIssuesFromHotlistsRequest)
+
+RemoveIssuesFromHotlistsResponse = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsResponse', (_message.Message,), dict(
+  DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsResponse)
+  ))
+_sym_db.RegisterMessage(RemoveIssuesFromHotlistsResponse)
+
+AddIssuesToHotlistsRequest = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsRequest', (_message.Message,), dict(
+  DESCRIPTOR = _ADDISSUESTOHOTLISTSREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsRequest)
+  ))
+_sym_db.RegisterMessage(AddIssuesToHotlistsRequest)
+
+AddIssuesToHotlistsResponse = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsResponse', (_message.Message,), dict(
+  DESCRIPTOR = _ADDISSUESTOHOTLISTSRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsResponse)
+  ))
+_sym_db.RegisterMessage(AddIssuesToHotlistsResponse)
+
+RerankHotlistIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesRequest', (_message.Message,), dict(
+  DESCRIPTOR = _RERANKHOTLISTISSUESREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesRequest)
+  ))
+_sym_db.RegisterMessage(RerankHotlistIssuesRequest)
+
+RerankHotlistIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesResponse', (_message.Message,), dict(
+  DESCRIPTOR = _RERANKHOTLISTISSUESRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesResponse)
+  ))
+_sym_db.RegisterMessage(RerankHotlistIssuesResponse)
+
+UpdateHotlistIssueNoteRequest = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteRequest', (_message.Message,), dict(
+  DESCRIPTOR = _UPDATEHOTLISTISSUENOTEREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteRequest)
+  ))
+_sym_db.RegisterMessage(UpdateHotlistIssueNoteRequest)
+
+UpdateHotlistIssueNoteResponse = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteResponse', (_message.Message,), dict(
+  DESCRIPTOR = _UPDATEHOTLISTISSUENOTERESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteResponse)
+  ))
+_sym_db.RegisterMessage(UpdateHotlistIssueNoteResponse)
+
+DeleteHotlistRequest = _reflection.GeneratedProtocolMessageType('DeleteHotlistRequest', (_message.Message,), dict(
+  DESCRIPTOR = _DELETEHOTLISTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.DeleteHotlistRequest)
+  ))
+_sym_db.RegisterMessage(DeleteHotlistRequest)
+
+DeleteHotlistResponse = _reflection.GeneratedProtocolMessageType('DeleteHotlistResponse', (_message.Message,), dict(
+  DESCRIPTOR = _DELETEHOTLISTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.DeleteHotlistResponse)
+  ))
+_sym_db.RegisterMessage(DeleteHotlistResponse)
+
+PredictComponentRequest = _reflection.GeneratedProtocolMessageType('PredictComponentRequest', (_message.Message,), dict(
+  DESCRIPTOR = _PREDICTCOMPONENTREQUEST,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.PredictComponentRequest)
+  ))
+_sym_db.RegisterMessage(PredictComponentRequest)
+
+PredictComponentResponse = _reflection.GeneratedProtocolMessageType('PredictComponentResponse', (_message.Message,), dict(
+  DESCRIPTOR = _PREDICTCOMPONENTRESPONSE,
+  __module__ = 'api.api_proto.features_pb2'
+  # @@protoc_insertion_point(class_scope:monorail.PredictComponentResponse)
+  ))
+_sym_db.RegisterMessage(PredictComponentResponse)
+
+
+
+_FEATURES = _descriptor.ServiceDescriptor(
+  name='Features',
+  full_name='monorail.Features',
+  file=DESCRIPTOR,
+  index=0,
+  serialized_options=None,
+  serialized_start=2387,
+  serialized_end=3960,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='ListHotlistsByUser',
+    full_name='monorail.Features.ListHotlistsByUser',
+    index=0,
+    containing_service=None,
+    input_type=_LISTHOTLISTSBYUSERREQUEST,
+    output_type=_LISTHOTLISTSBYUSERRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ListHotlistsByIssue',
+    full_name='monorail.Features.ListHotlistsByIssue',
+    index=1,
+    containing_service=None,
+    input_type=_LISTHOTLISTSBYISSUEREQUEST,
+    output_type=_LISTHOTLISTSBYISSUERESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ListRecentlyVisitedHotlists',
+    full_name='monorail.Features.ListRecentlyVisitedHotlists',
+    index=2,
+    containing_service=None,
+    input_type=_LISTRECENTLYVISITEDHOTLISTSREQUEST,
+    output_type=_LISTRECENTLYVISITEDHOTLISTSRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ListStarredHotlists',
+    full_name='monorail.Features.ListStarredHotlists',
+    index=3,
+    containing_service=None,
+    input_type=_LISTSTARREDHOTLISTSREQUEST,
+    output_type=_LISTSTARREDHOTLISTSRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='GetHotlistStarCount',
+    full_name='monorail.Features.GetHotlistStarCount',
+    index=4,
+    containing_service=None,
+    input_type=_GETHOTLISTSTARCOUNTREQUEST,
+    output_type=_GETHOTLISTSTARCOUNTRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='StarHotlist',
+    full_name='monorail.Features.StarHotlist',
+    index=5,
+    containing_service=None,
+    input_type=_STARHOTLISTREQUEST,
+    output_type=_STARHOTLISTRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='GetHotlist',
+    full_name='monorail.Features.GetHotlist',
+    index=6,
+    containing_service=None,
+    input_type=_GETHOTLISTREQUEST,
+    output_type=_GETHOTLISTRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ListHotlistItems',
+    full_name='monorail.Features.ListHotlistItems',
+    index=7,
+    containing_service=None,
+    input_type=_LISTHOTLISTITEMSREQUEST,
+    output_type=_LISTHOTLISTITEMSRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='CreateHotlist',
+    full_name='monorail.Features.CreateHotlist',
+    index=8,
+    containing_service=None,
+    input_type=_CREATEHOTLISTREQUEST,
+    output_type=_CREATEHOTLISTRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='CheckHotlistName',
+    full_name='monorail.Features.CheckHotlistName',
+    index=9,
+    containing_service=None,
+    input_type=_CHECKHOTLISTNAMEREQUEST,
+    output_type=_CHECKHOTLISTNAMERESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='RemoveIssuesFromHotlists',
+    full_name='monorail.Features.RemoveIssuesFromHotlists',
+    index=10,
+    containing_service=None,
+    input_type=_REMOVEISSUESFROMHOTLISTSREQUEST,
+    output_type=_REMOVEISSUESFROMHOTLISTSRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='AddIssuesToHotlists',
+    full_name='monorail.Features.AddIssuesToHotlists',
+    index=11,
+    containing_service=None,
+    input_type=_ADDISSUESTOHOTLISTSREQUEST,
+    output_type=_ADDISSUESTOHOTLISTSRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='RerankHotlistIssues',
+    full_name='monorail.Features.RerankHotlistIssues',
+    index=12,
+    containing_service=None,
+    input_type=_RERANKHOTLISTISSUESREQUEST,
+    output_type=_RERANKHOTLISTISSUESRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='UpdateHotlistIssueNote',
+    full_name='monorail.Features.UpdateHotlistIssueNote',
+    index=13,
+    containing_service=None,
+    input_type=_UPDATEHOTLISTISSUENOTEREQUEST,
+    output_type=_UPDATEHOTLISTISSUENOTERESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='DeleteHotlist',
+    full_name='monorail.Features.DeleteHotlist',
+    index=14,
+    containing_service=None,
+    input_type=_DELETEHOTLISTREQUEST,
+    output_type=_DELETEHOTLISTRESPONSE,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='PredictComponent',
+    full_name='monorail.Features.PredictComponent',
+    index=15,
+    containing_service=None,
+    input_type=_PREDICTCOMPONENTREQUEST,
+    output_type=_PREDICTCOMPONENTRESPONSE,
+    serialized_options=None,
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_FEATURES)
+
+DESCRIPTOR.services_by_name['Features'] = _FEATURES
+
+# @@protoc_insertion_point(module_scope)