Repository: jamespfennell/transiter (language: python)

Issue:
Automatically handle entities irrespective of `IsEntityInMessage`
~~Every GTFS realtime trip is optionally associated to a vehicle (and vice versa). Naively, this relationship would be represented by a nullable foreign key constraint, say `vehicle.trip_pk`. However in #110 when developing the first iteration of the vehicle feature, @cedarbaum discovered that this is non-trivial because of how the underlying GTFS library reports trips and vehicles.~~

There is a problem in the case (like the NYC bus) when trips and vehicles are reported in different GTFS realtime feeds. The problem is that in the trips feed the GTFS library adds a vehicle "stub" (a small vehicle message tagged with `IsEntityInMessage: false`) and in the vehicles feed adds a similar trips stub. When parsing the trips feed Transiter tries to update the vehicle using the stub which is definitely wrong because the vehicle data is in the other feed. The stub only exists to communicate the trip-vehicle relationship.

In #110, @cedarbaum solved this by adding a `only_process_full_entities` field to the feed configuration in which case `IsEntityInMessage: false` entities are skipped.

I think though we can probably handle this case without explicit configuration. One idea I had for solving this is to persist the `IsEntityInMessage` field in the database for both trips and vehicles. Then in the GTFS realtime updater, we would skip updating a trip if all of the following conditions hold:

- The version of the trip in the GTFS realtime feed has `IsEntityInMessage: false`
- The current version of the trip in the database has `IsEntityInMessage: true`
- The current version of the trip comes from a different feed.

One way to think about this is that when a real trip exists (i.e. `IsEntityInMessage: true`) there is a unique feed that owns that trip. Other feeds should not update that trip. We would do a similar thing for vehicles.


Discussion / hints:
Updated in light of the submitted version of #110.
One additional complication for this work is that multiple feeds may try to insert the same entity concurrently, violating unique key constraints. For example, both the `trip` and `vehicle` feed start updates, both see that "vehicle 1" doesn't exist, and then both try to add it, guaranteeing one transaction fails and rolls back.

I think to fix this we would need some stronger consistency guarantees within the update transactions. The most granular mechanism I can think of would be a per-system write lock for the `trip` and `vehicle` tables (maybe using something like [advisory locks](https://www.postgresql.org/docs/current/explicit-locking.html#ADVISORY-LOCKS)).

Alternatively, updates could be scheduled in such a way that they don't overlap within a system.

Curious what your thoughts on above are!
Yeah that's definitely an issue. Also, I tried to write some code to implement this ticket I think it will be complex...

I've been thinking, should we just skip all entities that have `IsEntityInMessage: false`? Basically what you did for the NYC buses with a configuration value, but just hardcoded in the code.

The original motivation for persisting `IsEntityInMessage: false` vehicles was that I think I've observed for the NYC subway there are sometimes trip updates that have a vehicle descriptor attached but no vehicle position entity. In this case you get a vehicle with `IsEntityInMessage: false` and my idea was that it would be still nice to persist that vehicle data. However I think the complexity is really high and on balance it's likely not worth it.
Basically this: https://github.com/jamespfennell/transiter/compare/only-persist-full-entities?expand=1
This sounds good to me, though I suppose we could also invert the option to be "opt in" to cover the subway vehicle case you mentioned (e.g., `persistEntityReferences` or something similar).

Also, to avoid leaving the deprecated option in the proto definition, we could change Feed config parsing to allow unknown fields and simply remove it. The trade-off here is easier deprecation of short-lived features such as this vs. allowing typos to slip through potentially. Let me know your thoughts on this; I have a branch with the proposed change here: https://github.com/cedarbaum/transiter/commit/196758d2b254456ad24a9faa71916b1bf78cd237
Yeah the inverted option does sound good. It could come with a warning that vehicles and trips must be in the same feed, to avoid the races you mentioned. In this way the implementation would be simpler. For the moment I'm happy to just submit the branch I linked to, and if we want later we could add such an opt-in option.

Changing feed config parsing sounds great!! I didn't know we could do that!
Awesome, just sent a PR for the feed config parsing change: https://github.com/jamespfennell/transiter/pull/123/files

Also I think `updateTrips` still needs to be modified to ignore partial entities by default. If we're OK to go ahead and just delete the old config option entirely, I can take care of fixing that as well.
Uhhhh right we do need to handle trips! That would be great.

Fix patch:
diff --git a/api/admin.proto b/api/admin.proto
index c4abba7c..61e52651 100644
--- a/api/admin.proto
+++ b/api/admin.proto
@@ -292,9 +292,6 @@ message GtfsRealtimeOptions {
   // This should not be used for systems where a trip can call at the same
   // stop multiple times.
   bool reassign_stop_sequences = 4;
-
-  // Deprecated: this field is ignored.
-  bool only_process_full_entities = 5;
 }
 
 // Description of the configuration for a collection of service maps.
diff --git a/docs/src/api/admin.md b/docs/src/api/admin.md
index a61f2b12..0fb26f3c 100644
--- a/docs/src/api/admin.md
+++ b/docs/src/api/admin.md
@@ -459,7 +459,6 @@ Message describing additional options for the GTFS realtime feeds.
 | nyct_trips_options | [GtfsRealtimeOptions.NyctTripsOptions](admin.md#GtfsRealtimeOptions.NyctTripsOptions) | 
 | nyct_alerts_options | [GtfsRealtimeOptions.NyctAlertsOptions](admin.md#GtfsRealtimeOptions.NyctAlertsOptions) | 
 | reassign_stop_sequences | bool | If true, stop sequences in the GTFS realtime feed data are ignored, and alternative stop sequences are generated and assigned by Transiter. This setting is designed for buggy GTFS realtime feeds in which stop sequences (incorrectly) change between updates. In many cases Transiter is able to generate stop sequences that are correct and stable across updates.<br /><br />This should not be used for systems where a trip can call at the same stop multiple times.
-| only_process_full_entities | bool | Deprecated: this field is ignored.
 
 
 
diff --git a/internal/gen/api/admin.pb.go b/internal/gen/api/admin.pb.go
index df4add0c..b8aa9673 100644
--- a/internal/gen/api/admin.pb.go
+++ b/internal/gen/api/admin.pb.go
@@ -1000,8 +1000,6 @@ type GtfsRealtimeOptions struct {
 	// This should not be used for systems where a trip can call at the same
 	// stop multiple times.
 	ReassignStopSequences bool `protobuf:"varint,4,opt,name=reassign_stop_sequences,json=reassignStopSequences,proto3" json:"reassign_stop_sequences,omitempty"`
-	// Deprecated: this field is ignored.
-	OnlyProcessFullEntities bool `protobuf:"varint,5,opt,name=only_process_full_entities,json=onlyProcessFullEntities,proto3" json:"only_process_full_entities,omitempty"`
 }
 
 func (x *GtfsRealtimeOptions) Reset() {
@@ -1064,13 +1062,6 @@ func (x *GtfsRealtimeOptions) GetReassignStopSequences() bool {
 	return false
 }
 
-func (x *GtfsRealtimeOptions) GetOnlyProcessFullEntities() bool {
-	if x != nil {
-		return x.OnlyProcessFullEntities
-	}
-	return false
-}
-
 // Description of the configuration for a collection of service maps.
 type ServiceMapConfig struct {
 	state         protoimpl.MessageState
@@ -2164,7 +2155,7 @@ var file_api_admin_proto_rawDesc = []byte{
 	0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x6d, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x75, 0x70, 0x64,
 	0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x42, 0x15, 0x0a, 0x13,
 	0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
-	0x5f, 0x6d, 0x73, 0x22, 0x8b, 0x09, 0x0a, 0x13, 0x47, 0x74, 0x66, 0x73, 0x52, 0x65, 0x61, 0x6c,
+	0x5f, 0x6d, 0x73, 0x22, 0xce, 0x08, 0x0a, 0x13, 0x47, 0x74, 0x66, 0x73, 0x52, 0x65, 0x61, 0x6c,
 	0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x65,
 	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e,
 	0x2e, 0x47, 0x74, 0x66, 0x73, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74,
@@ -2184,253 +2175,250 @@ var file_api_admin_proto_rawDesc = []byte{
 	0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x74, 0x6f,
 	0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
 	0x08, 0x52, 0x15, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x53,
-	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6f, 0x6e, 0x6c, 0x79,
-	0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x65, 0x6e,
-	0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6f, 0x6e,
-	0x6c, 0x79, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x45, 0x6e, 0x74,
-	0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xa8, 0x01, 0x0a, 0x10, 0x4e, 0x79, 0x63, 0x74, 0x54, 0x72,
-	0x69, 0x70, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x66, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x6e, 0x61, 0x73, 0x73,
-	0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x1a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6c, 0x65, 0x55, 0x6e,
-	0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x72, 0x69, 0x70, 0x73, 0x12, 0x51, 0x0a,
-	0x26, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x69,
-	0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x62,
-	0x75, 0x73, 0x68, 0x77, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x21, 0x70,
-	0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6c, 0x61,
-	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x49, 0x6e, 0x42, 0x75, 0x73, 0x68, 0x77, 0x69, 0x63, 0x6b,
-	0x1a, 0xef, 0x03, 0x0a, 0x11, 0x4e, 0x79, 0x63, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x24, 0x65, 0x6c, 0x65, 0x76, 0x61,
-	0x74, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x64, 0x65, 0x64, 0x75, 0x70,
-	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x47, 0x74, 0x66, 0x73, 0x52, 0x65, 0x61, 0x6c,
-	0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x79, 0x63, 0x74,
-	0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x6c,
-	0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44, 0x65, 0x64, 0x75,
-	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
-	0x21, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44,
+	0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0xa8, 0x01, 0x0a, 0x10, 0x4e, 0x79, 0x63,
+	0x74, 0x54, 0x72, 0x69, 0x70, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a,
+	0x1d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x6e,
+	0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6c,
+	0x65, 0x55, 0x6e, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x72, 0x69, 0x70, 0x73,
+	0x12, 0x51, 0x0a, 0x26, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x6d, 0x5f, 0x74,
+	0x72, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x69,
+	0x6e, 0x5f, 0x62, 0x75, 0x73, 0x68, 0x77, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x21, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x54, 0x72, 0x61, 0x69, 0x6e,
+	0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x49, 0x6e, 0x42, 0x75, 0x73, 0x68, 0x77,
+	0x69, 0x63, 0x6b, 0x1a, 0xef, 0x03, 0x0a, 0x11, 0x4e, 0x79, 0x63, 0x74, 0x41, 0x6c, 0x65, 0x72,
+	0x74, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x24, 0x65, 0x6c,
+	0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x64, 0x65,
+	0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x47, 0x74, 0x66, 0x73, 0x52,
+	0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e,
+	0x79, 0x63, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x45, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44,
 	0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
-	0x63, 0x79, 0x12, 0x55, 0x0a, 0x28, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61,
-	0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x75, 0x73, 0x69,
-	0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c,
-	0x65, 0x72, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x53,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x73, 0x6b, 0x69,
-	0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x5f,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x73, 0x6b, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61,
-	0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x65,
-	0x72, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x5f, 0x6e, 0x79, 0x63, 0x74, 0x5f,
-	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
-	0x61, 0x64, 0x64, 0x4e, 0x79, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
-	0x71, 0x0a, 0x21, 0x45, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74,
-	0x73, 0x44, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
-	0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x4f, 0x5f, 0x44, 0x45, 0x44, 0x55, 0x50,
-	0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45,
-	0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41,
-	0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x44, 0x55, 0x50, 0x4c,
-	0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x58,
-	0x10, 0x02, 0x22, 0x3e, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12,
-	0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10,
-	0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x59, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x50, 0x53, 0x10,
-	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x59, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53,
-	0x10, 0x02, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x79, 0x63, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x70,
-	0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6e, 0x79,
-	0x63, 0x74, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x22, 0xb8, 0x04, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70,
-	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x4d, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65,
-	0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72,
-	0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
-	0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48,
-	0x00, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x88, 0x01, 0x01, 0x1a, 0xbf, 0x02, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x5f,
-	0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x01, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x45, 0x61, 0x72, 0x6c,
-	0x69, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x74,
-	0x61, 0x72, 0x74, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x4c,
-	0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x65,
-	0x6e, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x73, 0x45, 0x61,
-	0x72, 0x6c, 0x69, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f,
-	0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x73, 0x4c, 0x61, 0x74,
-	0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79,
-	0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x42, 0x16, 0x0a,
-	0x14, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72,
-	0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73,
-	0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f,
-	0x65, 0x6e, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61,
-	0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72,
-	0x5f, 0x74, 0x68, 0x61, 0x6e, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
-	0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52,
-	0x45, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x74,
-	0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5f, 0x0a, 0x11,
-	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x17,
-	0x0a, 0x07, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x66, 0x65, 0x65, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x94, 0x08,
-	0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x66, 0x65, 0x65,
-	0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
-	0x2e, 0x46, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x66, 0x65, 0x65,
-	0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74,
-	0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
-	0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x66,
-	0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41,
-	0x74, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
-	0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03,
-	0x48, 0x01, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
-	0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
-	0x64, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x15, 0x20, 0x01,
-	0x28, 0x03, 0x48, 0x02, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x61,
-	0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x61,
-	0x72, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x16,
-	0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x4c, 0x61, 0x74,
-	0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x61, 0x74,
-	0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73,
-	0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61,
-	0x73, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e,
-	0x0a, 0x19, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28,
-	0x05, 0x48, 0x05, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x74, 0x74,
-	0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a,
-	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
-	0x2e, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x6f,
-	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x05, 0x48, 0x06, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e,
-	0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
-	0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0b,
-	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x28,
-	0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x22, 0xf8, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
-	0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a,
-	0x07, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b,
-	0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41, 0x49, 0x4c, 0x45,
-	0x44, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
-	0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x45, 0x4d, 0x50,
-	0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x41, 0x49,
-	0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x46, 0x45, 0x45, 0x44,
-	0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x41, 0x49,
-	0x4c, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
-	0x08, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x44, 0x41,
-	0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x09, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41,
-	0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52,
-	0x52, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f,
-	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x5f, 0x54, 0x59, 0x50,
-	0x45, 0x10, 0x0b, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
-	0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+	0x63, 0x79, 0x52, 0x21, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c, 0x65, 0x72,
+	0x74, 0x73, 0x44, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x55, 0x0a, 0x28, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f,
+	0x72, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x5f,
+	0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f,
+	0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x69,
+	0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x21,
+	0x73, 0x6b, 0x69, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f,
+	0x6e, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74,
+	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x73, 0x6b, 0x69, 0x70, 0x54, 0x69, 0x6d,
+	0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4e, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x5f, 0x6e, 0x79,
+	0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x4e, 0x79, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x22, 0x71, 0x0a, 0x21, 0x45, 0x6c, 0x65, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x6c,
+	0x65, 0x72, 0x74, 0x73, 0x44, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x4f, 0x5f, 0x44, 0x45,
+	0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x1a, 0x0a,
+	0x16, 0x44, 0x45, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f,
+	0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x44,
+	0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x50,
+	0x4c, 0x45, 0x58, 0x10, 0x02, 0x22, 0x3e, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49,
+	0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x59, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49,
+	0x50, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x59, 0x43, 0x54, 0x5f, 0x41, 0x4c, 0x45,
+	0x52, 0x54, 0x53, 0x10, 0x02, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x79, 0x63, 0x74, 0x5f, 0x74,
+	0x72, 0x69, 0x70, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x16, 0x0a, 0x14,
+	0x5f, 0x6e, 0x79, 0x63, 0x74, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb8, 0x04, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x4d, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x53, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09,
+	0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x74, 0x61,
+	0x74, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x43, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xbf, 0x02, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69,
+	0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x45,
+	0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a,
+	0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68,
+	0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f,
+	0x0a, 0x11, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x74,
+	0x68, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x64,
+	0x73, 0x45, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12,
+	0x2b, 0x0a, 0x0f, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68,
+	0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x73,
+	0x4c, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04,
+	0x64, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73,
+	0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c,
+	0x69, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x42, 0x14,
+	0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x72, 0x5f,
+	0x74, 0x68, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6c, 0x61,
+	0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0c,
+	0x0a, 0x08, 0x52, 0x45, 0x41, 0x4c, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x42, 0x11, 0x0a, 0x0f,
+	0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+	0x5f, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49,
+	0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x06, 0x66, 0x65, 0x65, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f,
+	0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65,
+	0x22, 0x94, 0x08, 0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
+	0x1b, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0b,
+	0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a,
+	0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74,
+	0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x12, 0x29,
+	0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68,
+	0x65, 0x64, 0x41, 0x74, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x74, 0x6f, 0x74,
+	0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x61, 0x74, 0x65,
+	0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e,
+	0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18,
+	0x15, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
+	0x64, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a,
+	0x10, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d,
+	0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x73, 0x65,
+	0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13,
+	0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
+	0x5f, 0x6d, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x11, 0x64, 0x61, 0x74,
+	0x61, 0x62, 0x61, 0x73, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x88, 0x01,
+	0x01, 0x12, 0x3e, 0x0a, 0x19, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x74,
+	0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
+	0x48, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x12, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a,
+	0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6e,
+	0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x07, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01,
+	0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x22, 0xf8, 0x01, 0x0a, 0x06,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
+	0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01,
+	0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a,
+	0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x41,
+	0x49, 0x4c, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52,
+	0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f,
+	0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a,
+	0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x46,
+	0x45, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12,
+	0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x55,
+	0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x09, 0x12, 0x19, 0x0a,
+	0x15, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x49, 0x4c,
+	0x45, 0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x5f,
+	0x54, 0x59, 0x50, 0x45, 0x10, 0x0b, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x6d, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x6f,
+	0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x42, 0x16,
+	0x0a, 0x14, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x61, 0x74, 0x65,
+	0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65,
 	0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f,
-	0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
-	0x5f, 0x6d, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6c, 0x61,
-	0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x61, 0x74,
-	0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73,
-	0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x68, 0x74,
-	0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x11,
-	0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74,
-	0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61,
-	0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65,
-	0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2c, 0x0a, 0x0b, 0x66, 0x65, 0x65, 0x64, 0x5f,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46,
-	0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x66, 0x65, 0x65, 0x64, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65,
-	0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x22, 0xb7, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
-	0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33,
-	0x0a, 0x05, 0x66, 0x65, 0x65, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
-	0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x52, 0x05, 0x66, 0x65,
-	0x65, 0x64, 0x73, 0x1a, 0xe6, 0x01, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09,
-	0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x66, 0x65, 0x65,
-	0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
-	0x2e, 0x46, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x66, 0x65, 0x65,
-	0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f,
-	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
-	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75, 0x63,
-	0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a,
-	0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x75,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73,
-	0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
-	0x2b, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x5f, 0x72, 0x75, 0x6e,
-	0x6e, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72,
-	0x65, 0x6e, 0x74, 0x6c, 0x79, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x17, 0x0a, 0x15,
-	0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63,
-	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x14, 0x0a, 0x12,
-	0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x22, 0x2f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
-	0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65,
-	0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65,
-	0x76, 0x65, 0x6c, 0x22, 0x31, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76,
-	0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67,
+	0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
+	0x5f, 0x6d, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
+	0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64,
+	0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65,
+	0x6e, 0x67, 0x74, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x46, 0x65, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2c, 0x0a, 0x0b, 0x66, 0x65,
+	0x65, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0b, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x66, 0x65,
+	0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53,
+	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb7, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68,
+	0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c,
+	0x79, 0x12, 0x33, 0x0a, 0x05, 0x66, 0x65, 0x65, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1d, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x52,
+	0x05, 0x66, 0x65, 0x65, 0x64, 0x73, 0x1a, 0xe6, 0x01, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x64, 0x12,
+	0x1b, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0b,
+	0x66, 0x65, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a,
+	0x66, 0x65, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x61,
+	0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74,
+	0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
+	0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12,
+	0x6c, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x5f,
+	0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63,
+	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x22,
+	0x17, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65,
+	0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
+	0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c,
+	0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67,
 	0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f,
-	0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67,
-	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x32, 0xdf, 0x05, 0x0a, 0x05, 0x41,
-	0x64, 0x6d, 0x69, 0x6e, 0x12, 0x5e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65,
-	0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73,
-	0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x0d, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22,
-	0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
-	0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f,
-	0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f,
-	0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x2e,
-	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53,
-	0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x49,
-	0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79,
-	0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x19, 0x3a, 0x01, 0x2a, 0x1a, 0x14, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b,
-	0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x56, 0x0a, 0x0c, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x2e, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x12, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52,
-	0x65, 0x70, 0x6c, 0x79, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, 0x73,
-	0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69,
-	0x64, 0x7d, 0x12, 0x60, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64,
-	0x12, 0x12, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65,
-	0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x24,
-	0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
-	0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2f, 0x7b, 0x66, 0x65, 0x65, 0x64,
-	0x5f, 0x69, 0x64, 0x7d, 0x12, 0x5e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64,
-	0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x47, 0x65, 0x74,
-	0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65,
-	0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
-	0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64,
-	0x75, 0x6c, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63, 0x68,
-	0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63,
-	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14,
-	0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52,
-	0x65, 0x70, 0x6c, 0x79, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x0a, 0x2f, 0x73,
-	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4c,
-	0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67,
-	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x47,
-	0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
-	0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76,
-	0x65, 0x6c, 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
-	0x6c, 0x12, 0x13, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c,
-	0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x0b, 0x1a, 0x09, 0x2f, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x28, 0x5a, 0x26,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x61, 0x6d, 0x65, 0x73,
-	0x70, 0x66, 0x65, 0x6e, 0x6e, 0x65, 0x6c, 0x6c, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
-	0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x31, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67,
+	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
+	0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x65, 0x74,
+	0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x32, 0xdf, 0x05,
+	0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x5e, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x79,
+	0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x2e, 0x47, 0x65, 0x74,
+	0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x73, 0x79, 0x73,
+	0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d,
+	0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74, 0x61,
+	0x6c, 0x6c, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x12, 0x1d, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x1b, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1f, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x1a, 0x14, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x56, 0x0a,
+	0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x2e,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74,
+	0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a,
+	0x14, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73, 0x74, 0x65,
+	0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x60, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46,
+	0x65, 0x65, 0x64, 0x12, 0x12, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x46, 0x65, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02,
+	0x26, 0x22, 0x24, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x73, 0x79, 0x73,
+	0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x73, 0x2f, 0x7b, 0x66,
+	0x65, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x5e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x63,
+	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e,
+	0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x47, 0x65, 0x74, 0x53,
+	0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+	0x70, 0x6c, 0x79, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x73, 0x63,
+	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74,
+	0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x52, 0x65, 0x73, 0x65,
+	0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x14, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+	0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22,
+	0x0a, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0b, 0x47,
+	0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x13, 0x2e, 0x47, 0x65, 0x74,
+	0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x11, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70,
+	0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x6c, 0x6f, 0x67,
+	0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c,
+	0x65, 0x76, 0x65, 0x6c, 0x12, 0x13, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76,
+	0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x53, 0x65, 0x74, 0x4c,
+	0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x0b, 0x1a, 0x09, 0x2f, 0x6c, 0x6f, 0x67, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42,
+	0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x61,
+	0x6d, 0x65, 0x73, 0x70, 0x66, 0x65, 0x6e, 0x6e, 0x65, 0x6c, 0x6c, 0x2f, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x69, 0x74, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x33,
 }
 
 var (
diff --git a/internal/update/realtime/realtime.go b/internal/update/realtime/realtime.go
index 7c2efbae..ab33692a 100644
--- a/internal/update/realtime/realtime.go
+++ b/internal/update/realtime/realtime.go
@@ -44,24 +44,19 @@ func Update(ctx context.Context, updateCtx common.UpdateContext, data *gtfs.Real
 }
 
 func updateTrips(ctx context.Context, updateCtx common.UpdateContext, trips []gtfs.Trip) error {
-	var validTripEntities []gtfs.Trip
-	if updateCtx.FeedConfig != nil &&
-		updateCtx.FeedConfig.GetGtfsRealtimeOptions().GetOnlyProcessFullEntities() {
-		for _, trip := range trips {
-			// Only insert trips that are in the feed.
-			if trip.IsEntityInMessage {
-				validTripEntities = append(validTripEntities, trip)
-			}
+	var tripEntitiesInFeed []gtfs.Trip
+	for _, trip := range trips {
+		// Only insert trips that are in the feed.
+		if trip.IsEntityInMessage {
+			tripEntitiesInFeed = append(tripEntitiesInFeed, trip)
 		}
-	} else {
-		validTripEntities = trips
 	}
 
-	stopIDToPk, err := dbwrappers.MapStopIDToPkInSystem(ctx, updateCtx.Querier, updateCtx.SystemPk, stopIDsInTrips(validTripEntities))
+	stopIDToPk, err := dbwrappers.MapStopIDToPkInSystem(ctx, updateCtx.Querier, updateCtx.SystemPk, stopIDsInTrips(tripEntitiesInFeed))
 	if err != nil {
 		return err
 	}
-	stopHeadsignMatcher, err := NewStopHeadsignMatcher(ctx, updateCtx.Querier, stopIDToPk, validTripEntities)
+	stopHeadsignMatcher, err := NewStopHeadsignMatcher(ctx, updateCtx.Querier, stopIDToPk, tripEntitiesInFeed)
 	if err != nil {
 		return err
 	}
@@ -70,7 +65,7 @@ func updateTrips(ctx context.Context, updateCtx common.UpdateContext, trips []gt
 
 	// Collect all trips without a route ID in update
 	var tripIDsWithoutRouteIDs []string
-	for _, trip := range validTripEntities {
+	for _, trip := range tripEntitiesInFeed {
 		if trip.ID.RouteID == "" {
 			tripIDsWithoutRouteIDs = append(tripIDsWithoutRouteIDs, trip.ID.ID)
 		}
@@ -88,7 +83,7 @@ func updateTrips(ctx context.Context, updateCtx common.UpdateContext, trips []gt
 
 	// For all trips with provided route IDs, get the corresponding route Pks
 	var routeIDToPk map[string]int64
-	routeIDsInTrips := routeIDsInTrips(validTripEntities)
+	routeIDsInTrips := routeIDsInTrips(tripEntitiesInFeed)
 	if len(routeIDsInTrips) > 0 {
 		routeIDToPk, err = dbwrappers.MapRouteIDToPkInSystem(ctx, updateCtx.Querier, updateCtx.SystemPk, routeIDsInTrips)
 		if err != nil {
@@ -102,13 +97,13 @@ func updateTrips(ctx context.Context, updateCtx common.UpdateContext, trips []gt
 		return err
 	}
 
-	stagedUpdates := newStagedUpdates(validTripEntities)
+	stagedUpdates := newStagedUpdates(tripEntitiesInFeed)
 	seenUIDs := map[dbwrappers.TripUID]bool{}
 	tripUIDToPk := map[dbwrappers.TripUID]int64{}
 	tripUIDToTrip := map[dbwrappers.TripUID]*gtfs.Trip{}
 	activeTripPks := []int64{}
-	for i := range validTripEntities {
-		trip := &validTripEntities[i]
+	for i := range tripEntitiesInFeed {
+		trip := &tripEntitiesInFeed[i]
 
 		var routePk int64
 		var routeOk bool


Test patch:
diff --git a/tests/endtoend/conftest.py b/tests/endtoend/conftest.py
index 4bb02bcb..8a012855 100644
--- a/tests/endtoend/conftest.py
+++ b/tests/endtoend/conftest.py
@@ -137,8 +137,6 @@ def delete():
     parser: GTFS_REALTIME
     schedulingPolicy: PERIODIC
     updatePeriodS: {realtime_periodic_update_period}
-    gtfsRealtimeOptions:
-      onlyProcessFullEntities: {only_process_full_entities}
 
 """
 
@@ -150,7 +148,7 @@ def install_system_1(
     source_server_host_within_transiter,
     install_system,
 ):
-    def install(system_id, realtime_periodic_update_period="3600000", only_process_full_entities = "false"):
+    def install(system_id, realtime_periodic_update_period="3600000"):
         static_feed_url = source_server.create("", "/" + system_id + "/gtfs-static.zip")
         source_server.put(static_feed_url, get_zip("gtfsstatic"))
         realtime_feed_url = source_server.create(
@@ -163,7 +161,6 @@ def install(system_id, realtime_periodic_update_period="3600000", only_process_f
             + "/"
             + realtime_feed_url,
             realtime_periodic_update_period=realtime_periodic_update_period,
-            only_process_full_entities=only_process_full_entities,
         )
 
         install_system(system_id, system_config)
diff --git a/tests/endtoend/test_vehicles.py b/tests/endtoend/test_vehicles.py
index ed1d4d67..55531ebd 100644
--- a/tests/endtoend/test_vehicles.py
+++ b/tests/endtoend/test_vehicles.py
@@ -50,8 +50,7 @@ class TestVehicles:
 
     def test_vehicle_view(self, install_system_1, system_id, transiter_host,
                           source_server, stop_id_to_time, vehicles):
-        __, realtime_feed_url = install_system_1(
-            system_id, only_process_full_entities="true")
+        __, realtime_feed_url = install_system_1(system_id)
 
         source_server.put(
             realtime_feed_url,
@@ -163,8 +162,7 @@ def test_vehicle_view(self, install_system_1, system_id, transiter_host,
 
     def test_trip_view(self, install_system_1, system_id, transiter_host,
                        source_server, stop_id_to_time, vehicles):
-        __, realtime_feed_url = install_system_1(
-            system_id, only_process_full_entities="true")
+        __, realtime_feed_url = install_system_1(system_id)
 
         source_server.put(
             realtime_feed_url,
@@ -186,8 +184,7 @@ def test_trip_view(self, install_system_1, system_id, transiter_host,
 
     def test_stop_view(self, install_system_1, system_id, transiter_host,
                        source_server, stop_id_to_time, vehicles):
-        __, realtime_feed_url = install_system_1(
-            system_id, only_process_full_entities="true")
+        __, realtime_feed_url = install_system_1(system_id)
 
         source_server.put(
             realtime_feed_url,