From 24b722ecc70ff4b42f6d006945548ff9eb8bb6a5 Mon Sep 17 00:00:00 2001 From: Cyrille Nofficial Date: Mon, 27 Feb 2023 19:54:15 +0100 Subject: [PATCH] feat(speedzone): add SpeedZone message --- events/events.proto | 13 ++ go/events/events.pb.go | 435 +++++++++++++++++++++++------------ python/events/events_pb2.py | 46 ++-- python/events/events_pb2.pyi | 42 ++++ 4 files changed, 370 insertions(+), 166 deletions(-) diff --git a/events/events.proto b/events/events.proto index a301531..c416622 100644 --- a/events/events.proto +++ b/events/events.proto @@ -27,6 +27,19 @@ message ThrottleMessage { FrameRef frame_ref = 3; } +enum SpeedZone { + UNKNOWN = 0; + SLOW = 1; + NORMAL = 2; + FAST = 3; +} + +message SpeedZoneMessage { + SpeedZone speed_zone = 1; + float confidence = 2; + FrameRef frame_ref = 3; +} + message DriveModeMessage { DriveMode drive_mode = 1; } diff --git a/go/events/events.pb.go b/go/events/events.pb.go index a9fd26c..a0b5a0a 100644 --- a/go/events/events.pb.go +++ b/go/events/events.pb.go @@ -21,6 +21,58 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type SpeedZone int32 + +const ( + SpeedZone_UNKNOWN SpeedZone = 0 + SpeedZone_SLOW SpeedZone = 1 + SpeedZone_NORMAL SpeedZone = 2 + SpeedZone_FAST SpeedZone = 3 +) + +// Enum value maps for SpeedZone. +var ( + SpeedZone_name = map[int32]string{ + 0: "UNKNOWN", + 1: "SLOW", + 2: "NORMAL", + 3: "FAST", + } + SpeedZone_value = map[string]int32{ + "UNKNOWN": 0, + "SLOW": 1, + "NORMAL": 2, + "FAST": 3, + } +) + +func (x SpeedZone) Enum() *SpeedZone { + p := new(SpeedZone) + *p = x + return p +} + +func (x SpeedZone) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SpeedZone) Descriptor() protoreflect.EnumDescriptor { + return file_events_events_proto_enumTypes[0].Descriptor() +} + +func (SpeedZone) Type() protoreflect.EnumType { + return &file_events_events_proto_enumTypes[0] +} + +func (x SpeedZone) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SpeedZone.Descriptor instead. +func (SpeedZone) EnumDescriptor() ([]byte, []int) { + return file_events_events_proto_rawDescGZIP(), []int{0} +} + type DriveMode int32 const ( @@ -54,11 +106,11 @@ func (x DriveMode) String() string { } func (DriveMode) Descriptor() protoreflect.EnumDescriptor { - return file_events_events_proto_enumTypes[0].Descriptor() + return file_events_events_proto_enumTypes[1].Descriptor() } func (DriveMode) Type() protoreflect.EnumType { - return &file_events_events_proto_enumTypes[0] + return &file_events_events_proto_enumTypes[1] } func (x DriveMode) Number() protoreflect.EnumNumber { @@ -67,7 +119,7 @@ func (x DriveMode) Number() protoreflect.EnumNumber { // Deprecated: Use DriveMode.Descriptor instead. func (DriveMode) EnumDescriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{0} + return file_events_events_proto_rawDescGZIP(), []int{1} } type TypeObject int32 @@ -106,11 +158,11 @@ func (x TypeObject) String() string { } func (TypeObject) Descriptor() protoreflect.EnumDescriptor { - return file_events_events_proto_enumTypes[1].Descriptor() + return file_events_events_proto_enumTypes[2].Descriptor() } func (TypeObject) Type() protoreflect.EnumType { - return &file_events_events_proto_enumTypes[1] + return &file_events_events_proto_enumTypes[2] } func (x TypeObject) Number() protoreflect.EnumNumber { @@ -119,7 +171,7 @@ func (x TypeObject) Number() protoreflect.EnumNumber { // Deprecated: Use TypeObject.Descriptor instead. func (TypeObject) EnumDescriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{1} + return file_events_events_proto_rawDescGZIP(), []int{2} } type FrameRef struct { @@ -366,6 +418,69 @@ func (x *ThrottleMessage) GetFrameRef() *FrameRef { return nil } +type SpeedZoneMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SpeedZone SpeedZone `protobuf:"varint,1,opt,name=speed_zone,json=speedZone,proto3,enum=robocar.events.SpeedZone" json:"speed_zone,omitempty"` + Confidence float32 `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"` + FrameRef *FrameRef `protobuf:"bytes,3,opt,name=frame_ref,json=frameRef,proto3" json:"frame_ref,omitempty"` +} + +func (x *SpeedZoneMessage) Reset() { + *x = SpeedZoneMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_events_events_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SpeedZoneMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SpeedZoneMessage) ProtoMessage() {} + +func (x *SpeedZoneMessage) ProtoReflect() protoreflect.Message { + mi := &file_events_events_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SpeedZoneMessage.ProtoReflect.Descriptor instead. +func (*SpeedZoneMessage) Descriptor() ([]byte, []int) { + return file_events_events_proto_rawDescGZIP(), []int{4} +} + +func (x *SpeedZoneMessage) GetSpeedZone() SpeedZone { + if x != nil { + return x.SpeedZone + } + return SpeedZone_UNKNOWN +} + +func (x *SpeedZoneMessage) GetConfidence() float32 { + if x != nil { + return x.Confidence + } + return 0 +} + +func (x *SpeedZoneMessage) GetFrameRef() *FrameRef { + if x != nil { + return x.FrameRef + } + return nil +} + type DriveModeMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -377,7 +492,7 @@ type DriveModeMessage struct { func (x *DriveModeMessage) Reset() { *x = DriveModeMessage{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[4] + mi := &file_events_events_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -390,7 +505,7 @@ func (x *DriveModeMessage) String() string { func (*DriveModeMessage) ProtoMessage() {} func (x *DriveModeMessage) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[4] + mi := &file_events_events_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -403,7 +518,7 @@ func (x *DriveModeMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DriveModeMessage.ProtoReflect.Descriptor instead. func (*DriveModeMessage) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{4} + return file_events_events_proto_rawDescGZIP(), []int{5} } func (x *DriveModeMessage) GetDriveMode() DriveMode { @@ -425,7 +540,7 @@ type ObjectsMessage struct { func (x *ObjectsMessage) Reset() { *x = ObjectsMessage{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[5] + mi := &file_events_events_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -438,7 +553,7 @@ func (x *ObjectsMessage) String() string { func (*ObjectsMessage) ProtoMessage() {} func (x *ObjectsMessage) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[5] + mi := &file_events_events_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -451,7 +566,7 @@ func (x *ObjectsMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ObjectsMessage.ProtoReflect.Descriptor instead. func (*ObjectsMessage) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{5} + return file_events_events_proto_rawDescGZIP(), []int{6} } func (x *ObjectsMessage) GetObjects() []*Object { @@ -485,7 +600,7 @@ type Object struct { func (x *Object) Reset() { *x = Object{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[6] + mi := &file_events_events_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -498,7 +613,7 @@ func (x *Object) String() string { func (*Object) ProtoMessage() {} func (x *Object) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[6] + mi := &file_events_events_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -511,7 +626,7 @@ func (x *Object) ProtoReflect() protoreflect.Message { // Deprecated: Use Object.ProtoReflect.Descriptor instead. func (*Object) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{6} + return file_events_events_proto_rawDescGZIP(), []int{7} } func (x *Object) GetType() TypeObject { @@ -567,7 +682,7 @@ type SwitchRecordMessage struct { func (x *SwitchRecordMessage) Reset() { *x = SwitchRecordMessage{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[7] + mi := &file_events_events_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -580,7 +695,7 @@ func (x *SwitchRecordMessage) String() string { func (*SwitchRecordMessage) ProtoMessage() {} func (x *SwitchRecordMessage) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[7] + mi := &file_events_events_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -593,7 +708,7 @@ func (x *SwitchRecordMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SwitchRecordMessage.ProtoReflect.Descriptor instead. func (*SwitchRecordMessage) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{7} + return file_events_events_proto_rawDescGZIP(), []int{8} } func (x *SwitchRecordMessage) GetEnabled() bool { @@ -617,7 +732,7 @@ type RoadMessage struct { func (x *RoadMessage) Reset() { *x = RoadMessage{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[8] + mi := &file_events_events_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -630,7 +745,7 @@ func (x *RoadMessage) String() string { func (*RoadMessage) ProtoMessage() {} func (x *RoadMessage) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[8] + mi := &file_events_events_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -643,7 +758,7 @@ func (x *RoadMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RoadMessage.ProtoReflect.Descriptor instead. func (*RoadMessage) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{8} + return file_events_events_proto_rawDescGZIP(), []int{9} } func (x *RoadMessage) GetContour() []*Point { @@ -679,7 +794,7 @@ type Point struct { func (x *Point) Reset() { *x = Point{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[9] + mi := &file_events_events_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +807,7 @@ func (x *Point) String() string { func (*Point) ProtoMessage() {} func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[9] + mi := &file_events_events_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +820,7 @@ func (x *Point) ProtoReflect() protoreflect.Message { // Deprecated: Use Point.ProtoReflect.Descriptor instead. func (*Point) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{9} + return file_events_events_proto_rawDescGZIP(), []int{10} } func (x *Point) GetX() int32 { @@ -737,7 +852,7 @@ type Ellipse struct { func (x *Ellipse) Reset() { *x = Ellipse{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[10] + mi := &file_events_events_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -750,7 +865,7 @@ func (x *Ellipse) String() string { func (*Ellipse) ProtoMessage() {} func (x *Ellipse) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[10] + mi := &file_events_events_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -763,7 +878,7 @@ func (x *Ellipse) ProtoReflect() protoreflect.Message { // Deprecated: Use Ellipse.ProtoReflect.Descriptor instead. func (*Ellipse) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{10} + return file_events_events_proto_rawDescGZIP(), []int{11} } func (x *Ellipse) GetCenter() *Point { @@ -817,7 +932,7 @@ type RecordMessage struct { func (x *RecordMessage) Reset() { *x = RecordMessage{} if protoimpl.UnsafeEnabled { - mi := &file_events_events_proto_msgTypes[11] + mi := &file_events_events_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -830,7 +945,7 @@ func (x *RecordMessage) String() string { func (*RecordMessage) ProtoMessage() {} func (x *RecordMessage) ProtoReflect() protoreflect.Message { - mi := &file_events_events_proto_msgTypes[11] + mi := &file_events_events_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -843,7 +958,7 @@ func (x *RecordMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordMessage.ProtoReflect.Descriptor instead. func (*RecordMessage) Descriptor() ([]byte, []int) { - return file_events_events_proto_rawDescGZIP(), []int{11} + return file_events_events_proto_rawDescGZIP(), []int{12} } func (x *RecordMessage) GetFrame() *FrameMessage { @@ -917,75 +1032,89 @@ var file_events_events_proto_rawDesc = []byte{ 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, - 0x4c, 0x0a, 0x10, 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x64, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, - 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x79, 0x0a, - 0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x30, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x12, 0x35, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, 0xac, 0x01, 0x0a, 0x06, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6f, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x74, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x06, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x61, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x62, 0x6f, - 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x6f, 0x75, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x65, 0x6c, 0x6c, - 0x69, 0x70, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x6f, 0x62, - 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x6c, 0x6c, 0x69, - 0x70, 0x73, 0x65, 0x52, 0x07, 0x65, 0x6c, 0x6c, 0x69, 0x70, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x09, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x66, 0x22, 0x23, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0c, 0x0a, 0x01, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x22, 0x9c, 0x01, 0x0a, 0x07, 0x45, 0x6c, 0x6c, - 0x69, 0x70, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, - 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, - 0x08, 0x73, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x53, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x08, 0x73, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x12, 0x61, 0x75, - 0x74, 0x6f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x70, 0x69, 0x6c, - 0x6f, 0x74, 0x53, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x3f, 0x0a, 0x0a, 0x64, 0x72, - 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0xa3, 0x01, 0x0a, 0x10, 0x53, 0x70, 0x65, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5f, 0x7a, 0x6f, + 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, + 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x64, 0x5a, + 0x6f, 0x6e, 0x65, 0x52, 0x09, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x35, + 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, 0x4c, 0x0a, 0x10, 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x64, 0x72, 0x69, + 0x76, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, + 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x44, + 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x22, 0x79, 0x0a, 0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x5f, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x62, + 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x66, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, 0xac, + 0x01, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, + 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x65, 0x66, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x74, 0x6f, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x2f, 0x0a, + 0x13, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa8, + 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x6f, 0x75, 0x72, 0x12, + 0x31, 0x0a, 0x07, 0x65, 0x6c, 0x6c, 0x69, 0x70, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x45, 0x6c, 0x6c, 0x69, 0x70, 0x73, 0x65, 0x52, 0x07, 0x65, 0x6c, 0x6c, 0x69, 0x70, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x52, + 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x66, 0x22, 0x23, 0x0a, 0x05, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, + 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x22, 0x9c, + 0x01, 0x0a, 0x07, 0x45, 0x6c, 0x6c, 0x69, 0x70, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x62, + 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x06, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, + 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xaf, 0x02, + 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x32, 0x0a, 0x05, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x74, 0x2a, 0x2d, 0x0a, 0x09, 0x44, 0x72, 0x69, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x73, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x12, 0x4e, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x5f, 0x73, 0x74, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x74, + 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x61, + 0x75, 0x74, 0x6f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x53, 0x74, 0x65, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x12, 0x3f, 0x0a, 0x0a, 0x64, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x6f, 0x62, 0x6f, 0x63, 0x61, 0x72, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x74, 0x2a, + 0x38, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x65, 0x64, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0b, 0x0a, 0x07, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4c, 0x4f, + 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x41, 0x53, 0x54, 0x10, 0x03, 0x2a, 0x2d, 0x0a, 0x09, 0x44, 0x72, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x49, 0x4c, 0x4f, 0x54, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, @@ -1007,47 +1136,51 @@ func file_events_events_proto_rawDescGZIP() []byte { return file_events_events_proto_rawDescData } -var file_events_events_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_events_events_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_events_events_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_events_events_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_events_events_proto_goTypes = []interface{}{ - (DriveMode)(0), // 0: robocar.events.DriveMode - (TypeObject)(0), // 1: robocar.events.TypeObject - (*FrameRef)(nil), // 2: robocar.events.FrameRef - (*FrameMessage)(nil), // 3: robocar.events.FrameMessage - (*SteeringMessage)(nil), // 4: robocar.events.SteeringMessage - (*ThrottleMessage)(nil), // 5: robocar.events.ThrottleMessage - (*DriveModeMessage)(nil), // 6: robocar.events.DriveModeMessage - (*ObjectsMessage)(nil), // 7: robocar.events.ObjectsMessage - (*Object)(nil), // 8: robocar.events.Object - (*SwitchRecordMessage)(nil), // 9: robocar.events.SwitchRecordMessage - (*RoadMessage)(nil), // 10: robocar.events.RoadMessage - (*Point)(nil), // 11: robocar.events.Point - (*Ellipse)(nil), // 12: robocar.events.Ellipse - (*RecordMessage)(nil), // 13: robocar.events.RecordMessage - (*timestamp.Timestamp)(nil), // 14: google.protobuf.Timestamp + (SpeedZone)(0), // 0: robocar.events.SpeedZone + (DriveMode)(0), // 1: robocar.events.DriveMode + (TypeObject)(0), // 2: robocar.events.TypeObject + (*FrameRef)(nil), // 3: robocar.events.FrameRef + (*FrameMessage)(nil), // 4: robocar.events.FrameMessage + (*SteeringMessage)(nil), // 5: robocar.events.SteeringMessage + (*ThrottleMessage)(nil), // 6: robocar.events.ThrottleMessage + (*SpeedZoneMessage)(nil), // 7: robocar.events.SpeedZoneMessage + (*DriveModeMessage)(nil), // 8: robocar.events.DriveModeMessage + (*ObjectsMessage)(nil), // 9: robocar.events.ObjectsMessage + (*Object)(nil), // 10: robocar.events.Object + (*SwitchRecordMessage)(nil), // 11: robocar.events.SwitchRecordMessage + (*RoadMessage)(nil), // 12: robocar.events.RoadMessage + (*Point)(nil), // 13: robocar.events.Point + (*Ellipse)(nil), // 14: robocar.events.Ellipse + (*RecordMessage)(nil), // 15: robocar.events.RecordMessage + (*timestamp.Timestamp)(nil), // 16: google.protobuf.Timestamp } var file_events_events_proto_depIdxs = []int32{ - 14, // 0: robocar.events.FrameRef.created_at:type_name -> google.protobuf.Timestamp - 2, // 1: robocar.events.FrameMessage.id:type_name -> robocar.events.FrameRef - 2, // 2: robocar.events.SteeringMessage.frame_ref:type_name -> robocar.events.FrameRef - 2, // 3: robocar.events.ThrottleMessage.frame_ref:type_name -> robocar.events.FrameRef - 0, // 4: robocar.events.DriveModeMessage.drive_mode:type_name -> robocar.events.DriveMode - 8, // 5: robocar.events.ObjectsMessage.objects:type_name -> robocar.events.Object - 2, // 6: robocar.events.ObjectsMessage.frame_ref:type_name -> robocar.events.FrameRef - 1, // 7: robocar.events.Object.type:type_name -> robocar.events.TypeObject - 11, // 8: robocar.events.RoadMessage.contour:type_name -> robocar.events.Point - 12, // 9: robocar.events.RoadMessage.ellipse:type_name -> robocar.events.Ellipse - 2, // 10: robocar.events.RoadMessage.frame_ref:type_name -> robocar.events.FrameRef - 11, // 11: robocar.events.Ellipse.center:type_name -> robocar.events.Point - 3, // 12: robocar.events.RecordMessage.frame:type_name -> robocar.events.FrameMessage - 4, // 13: robocar.events.RecordMessage.steering:type_name -> robocar.events.SteeringMessage - 4, // 14: robocar.events.RecordMessage.autopilot_steering:type_name -> robocar.events.SteeringMessage - 6, // 15: robocar.events.RecordMessage.drive_mode:type_name -> robocar.events.DriveModeMessage - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 16, // 0: robocar.events.FrameRef.created_at:type_name -> google.protobuf.Timestamp + 3, // 1: robocar.events.FrameMessage.id:type_name -> robocar.events.FrameRef + 3, // 2: robocar.events.SteeringMessage.frame_ref:type_name -> robocar.events.FrameRef + 3, // 3: robocar.events.ThrottleMessage.frame_ref:type_name -> robocar.events.FrameRef + 0, // 4: robocar.events.SpeedZoneMessage.speed_zone:type_name -> robocar.events.SpeedZone + 3, // 5: robocar.events.SpeedZoneMessage.frame_ref:type_name -> robocar.events.FrameRef + 1, // 6: robocar.events.DriveModeMessage.drive_mode:type_name -> robocar.events.DriveMode + 10, // 7: robocar.events.ObjectsMessage.objects:type_name -> robocar.events.Object + 3, // 8: robocar.events.ObjectsMessage.frame_ref:type_name -> robocar.events.FrameRef + 2, // 9: robocar.events.Object.type:type_name -> robocar.events.TypeObject + 13, // 10: robocar.events.RoadMessage.contour:type_name -> robocar.events.Point + 14, // 11: robocar.events.RoadMessage.ellipse:type_name -> robocar.events.Ellipse + 3, // 12: robocar.events.RoadMessage.frame_ref:type_name -> robocar.events.FrameRef + 13, // 13: robocar.events.Ellipse.center:type_name -> robocar.events.Point + 4, // 14: robocar.events.RecordMessage.frame:type_name -> robocar.events.FrameMessage + 5, // 15: robocar.events.RecordMessage.steering:type_name -> robocar.events.SteeringMessage + 5, // 16: robocar.events.RecordMessage.autopilot_steering:type_name -> robocar.events.SteeringMessage + 8, // 17: robocar.events.RecordMessage.drive_mode:type_name -> robocar.events.DriveModeMessage + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_events_events_proto_init() } @@ -1105,7 +1238,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DriveModeMessage); i { + switch v := v.(*SpeedZoneMessage); i { case 0: return &v.state case 1: @@ -1117,7 +1250,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectsMessage); i { + switch v := v.(*DriveModeMessage); i { case 0: return &v.state case 1: @@ -1129,7 +1262,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Object); i { + switch v := v.(*ObjectsMessage); i { case 0: return &v.state case 1: @@ -1141,7 +1274,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SwitchRecordMessage); i { + switch v := v.(*Object); i { case 0: return &v.state case 1: @@ -1153,7 +1286,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoadMessage); i { + switch v := v.(*SwitchRecordMessage); i { case 0: return &v.state case 1: @@ -1165,7 +1298,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Point); i { + switch v := v.(*RoadMessage); i { case 0: return &v.state case 1: @@ -1177,7 +1310,7 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ellipse); i { + switch v := v.(*Point); i { case 0: return &v.state case 1: @@ -1189,6 +1322,18 @@ func file_events_events_proto_init() { } } file_events_events_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ellipse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_events_events_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RecordMessage); i { case 0: return &v.state @@ -1206,8 +1351,8 @@ func file_events_events_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_events_events_proto_rawDesc, - NumEnums: 2, - NumMessages: 12, + NumEnums: 3, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, diff --git a/python/events/events_pb2.py b/python/events/events_pb2.py index d884f2a..538ba5a 100644 --- a/python/events/events_pb2.py +++ b/python/events/events_pb2.py @@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default() from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x65vents/events.proto\x12\x0erobocar.events\x1a\x1fgoogle/protobuf/timestamp.proto\"T\n\x08\x46rameRef\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"C\n\x0c\x46rameMessage\x12$\n\x02id\x18\x01 \x01(\x0b\x32\x18.robocar.events.FrameRef\x12\r\n\x05\x66rame\x18\x02 \x01(\x0c\"d\n\x0fSteeringMessage\x12\x10\n\x08steering\x18\x01 \x01(\x02\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"d\n\x0fThrottleMessage\x12\x10\n\x08throttle\x18\x01 \x01(\x02\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"A\n\x10\x44riveModeMessage\x12-\n\ndrive_mode\x18\x01 \x01(\x0e\x32\x19.robocar.events.DriveMode\"f\n\x0eObjectsMessage\x12\'\n\x07objects\x18\x01 \x03(\x0b\x32\x16.robocar.events.Object\x12+\n\tframe_ref\x18\x02 \x01(\x0b\x32\x18.robocar.events.FrameRef\"\x80\x01\n\x06Object\x12(\n\x04type\x18\x01 \x01(\x0e\x32\x1a.robocar.events.TypeObject\x12\x0c\n\x04left\x18\x02 \x01(\x02\x12\x0b\n\x03top\x18\x03 \x01(\x02\x12\r\n\x05right\x18\x04 \x01(\x02\x12\x0e\n\x06\x62ottom\x18\x05 \x01(\x02\x12\x12\n\nconfidence\x18\x06 \x01(\x02\"&\n\x13SwitchRecordMessage\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\x8c\x01\n\x0bRoadMessage\x12&\n\x07\x63ontour\x18\x01 \x03(\x0b\x32\x15.robocar.events.Point\x12(\n\x07\x65llipse\x18\x02 \x01(\x0b\x32\x17.robocar.events.Ellipse\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"r\n\x07\x45llipse\x12%\n\x06\x63\x65nter\x18\x01 \x01(\x0b\x32\x15.robocar.events.Point\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\x12\x12\n\nconfidence\x18\x05 \x01(\x02\"\xf5\x01\n\rRecordMessage\x12+\n\x05\x66rame\x18\x01 \x01(\x0b\x32\x1c.robocar.events.FrameMessage\x12\x31\n\x08steering\x18\x02 \x01(\x0b\x32\x1f.robocar.events.SteeringMessage\x12;\n\x12\x61utopilot_steering\x18\x04 \x01(\x0b\x32\x1f.robocar.events.SteeringMessage\x12\x34\n\ndrive_mode\x18\x05 \x01(\x0b\x32 .robocar.events.DriveModeMessage\x12\x11\n\trecordSet\x18\x03 \x01(\t*-\n\tDriveMode\x12\x0b\n\x07INVALID\x10\x00\x12\x08\n\x04USER\x10\x01\x12\t\n\x05PILOT\x10\x02*2\n\nTypeObject\x12\x07\n\x03\x41NY\x10\x00\x12\x07\n\x03\x43\x41R\x10\x01\x12\x08\n\x04\x42UMP\x10\x02\x12\x08\n\x04PLOT\x10\x03\x42\nZ\x08./eventsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x65vents/events.proto\x12\x0erobocar.events\x1a\x1fgoogle/protobuf/timestamp.proto\"T\n\x08\x46rameRef\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"C\n\x0c\x46rameMessage\x12$\n\x02id\x18\x01 \x01(\x0b\x32\x18.robocar.events.FrameRef\x12\r\n\x05\x66rame\x18\x02 \x01(\x0c\"d\n\x0fSteeringMessage\x12\x10\n\x08steering\x18\x01 \x01(\x02\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"d\n\x0fThrottleMessage\x12\x10\n\x08throttle\x18\x01 \x01(\x02\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"\x82\x01\n\x10SpeedZoneMessage\x12-\n\nspeed_zone\x18\x01 \x01(\x0e\x32\x19.robocar.events.SpeedZone\x12\x12\n\nconfidence\x18\x02 \x01(\x02\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"A\n\x10\x44riveModeMessage\x12-\n\ndrive_mode\x18\x01 \x01(\x0e\x32\x19.robocar.events.DriveMode\"f\n\x0eObjectsMessage\x12\'\n\x07objects\x18\x01 \x03(\x0b\x32\x16.robocar.events.Object\x12+\n\tframe_ref\x18\x02 \x01(\x0b\x32\x18.robocar.events.FrameRef\"\x80\x01\n\x06Object\x12(\n\x04type\x18\x01 \x01(\x0e\x32\x1a.robocar.events.TypeObject\x12\x0c\n\x04left\x18\x02 \x01(\x02\x12\x0b\n\x03top\x18\x03 \x01(\x02\x12\r\n\x05right\x18\x04 \x01(\x02\x12\x0e\n\x06\x62ottom\x18\x05 \x01(\x02\x12\x12\n\nconfidence\x18\x06 \x01(\x02\"&\n\x13SwitchRecordMessage\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\x8c\x01\n\x0bRoadMessage\x12&\n\x07\x63ontour\x18\x01 \x03(\x0b\x32\x15.robocar.events.Point\x12(\n\x07\x65llipse\x18\x02 \x01(\x0b\x32\x17.robocar.events.Ellipse\x12+\n\tframe_ref\x18\x03 \x01(\x0b\x32\x18.robocar.events.FrameRef\"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"r\n\x07\x45llipse\x12%\n\x06\x63\x65nter\x18\x01 \x01(\x0b\x32\x15.robocar.events.Point\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\x12\x12\n\nconfidence\x18\x05 \x01(\x02\"\xf5\x01\n\rRecordMessage\x12+\n\x05\x66rame\x18\x01 \x01(\x0b\x32\x1c.robocar.events.FrameMessage\x12\x31\n\x08steering\x18\x02 \x01(\x0b\x32\x1f.robocar.events.SteeringMessage\x12;\n\x12\x61utopilot_steering\x18\x04 \x01(\x0b\x32\x1f.robocar.events.SteeringMessage\x12\x34\n\ndrive_mode\x18\x05 \x01(\x0b\x32 .robocar.events.DriveModeMessage\x12\x11\n\trecordSet\x18\x03 \x01(\t*8\n\tSpeedZone\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04SLOW\x10\x01\x12\n\n\x06NORMAL\x10\x02\x12\x08\n\x04\x46\x41ST\x10\x03*-\n\tDriveMode\x12\x0b\n\x07INVALID\x10\x00\x12\x08\n\x04USER\x10\x01\x12\t\n\x05PILOT\x10\x02*2\n\nTypeObject\x12\x07\n\x03\x41NY\x10\x00\x12\x07\n\x03\x43\x41R\x10\x01\x12\x08\n\x04\x42UMP\x10\x02\x12\x08\n\x04PLOT\x10\x03\x42\nZ\x08./eventsb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'events.events_pb2', globals()) @@ -22,10 +22,12 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'Z\010./events' - _DRIVEMODE._serialized_start=1311 - _DRIVEMODE._serialized_end=1356 - _TYPEOBJECT._serialized_start=1358 - _TYPEOBJECT._serialized_end=1408 + _SPEEDZONE._serialized_start=1444 + _SPEEDZONE._serialized_end=1500 + _DRIVEMODE._serialized_start=1502 + _DRIVEMODE._serialized_end=1547 + _TYPEOBJECT._serialized_start=1549 + _TYPEOBJECT._serialized_end=1599 _FRAMEREF._serialized_start=72 _FRAMEREF._serialized_end=156 _FRAMEMESSAGE._serialized_start=158 @@ -34,20 +36,22 @@ if _descriptor._USE_C_DESCRIPTORS == False: _STEERINGMESSAGE._serialized_end=327 _THROTTLEMESSAGE._serialized_start=329 _THROTTLEMESSAGE._serialized_end=429 - _DRIVEMODEMESSAGE._serialized_start=431 - _DRIVEMODEMESSAGE._serialized_end=496 - _OBJECTSMESSAGE._serialized_start=498 - _OBJECTSMESSAGE._serialized_end=600 - _OBJECT._serialized_start=603 - _OBJECT._serialized_end=731 - _SWITCHRECORDMESSAGE._serialized_start=733 - _SWITCHRECORDMESSAGE._serialized_end=771 - _ROADMESSAGE._serialized_start=774 - _ROADMESSAGE._serialized_end=914 - _POINT._serialized_start=916 - _POINT._serialized_end=945 - _ELLIPSE._serialized_start=947 - _ELLIPSE._serialized_end=1061 - _RECORDMESSAGE._serialized_start=1064 - _RECORDMESSAGE._serialized_end=1309 + _SPEEDZONEMESSAGE._serialized_start=432 + _SPEEDZONEMESSAGE._serialized_end=562 + _DRIVEMODEMESSAGE._serialized_start=564 + _DRIVEMODEMESSAGE._serialized_end=629 + _OBJECTSMESSAGE._serialized_start=631 + _OBJECTSMESSAGE._serialized_end=733 + _OBJECT._serialized_start=736 + _OBJECT._serialized_end=864 + _SWITCHRECORDMESSAGE._serialized_start=866 + _SWITCHRECORDMESSAGE._serialized_end=904 + _ROADMESSAGE._serialized_start=907 + _ROADMESSAGE._serialized_end=1047 + _POINT._serialized_start=1049 + _POINT._serialized_end=1078 + _ELLIPSE._serialized_start=1080 + _ELLIPSE._serialized_end=1194 + _RECORDMESSAGE._serialized_start=1197 + _RECORDMESSAGE._serialized_end=1442 # @@protoc_insertion_point(module_scope) diff --git a/python/events/events_pb2.pyi b/python/events/events_pb2.pyi index 897dff7..610cc4b 100644 --- a/python/events/events_pb2.pyi +++ b/python/events/events_pb2.pyi @@ -19,6 +19,25 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class _SpeedZone: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _SpeedZoneEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SpeedZone.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNKNOWN: _SpeedZone.ValueType # 0 + SLOW: _SpeedZone.ValueType # 1 + NORMAL: _SpeedZone.ValueType # 2 + FAST: _SpeedZone.ValueType # 3 + +class SpeedZone(_SpeedZone, metaclass=_SpeedZoneEnumTypeWrapper): ... + +UNKNOWN: SpeedZone.ValueType # 0 +SLOW: SpeedZone.ValueType # 1 +NORMAL: SpeedZone.ValueType # 2 +FAST: SpeedZone.ValueType # 3 +global___SpeedZone = SpeedZone + class _DriveMode: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType @@ -144,6 +163,29 @@ class ThrottleMessage(google.protobuf.message.Message): global___ThrottleMessage = ThrottleMessage +@typing_extensions.final +class SpeedZoneMessage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEED_ZONE_FIELD_NUMBER: builtins.int + CONFIDENCE_FIELD_NUMBER: builtins.int + FRAME_REF_FIELD_NUMBER: builtins.int + speed_zone: global___SpeedZone.ValueType + confidence: builtins.float + @property + def frame_ref(self) -> global___FrameRef: ... + def __init__( + self, + *, + speed_zone: global___SpeedZone.ValueType = ..., + confidence: builtins.float = ..., + frame_ref: global___FrameRef | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["frame_ref", b"frame_ref"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["confidence", b"confidence", "frame_ref", b"frame_ref", "speed_zone", b"speed_zone"]) -> None: ... + +global___SpeedZoneMessage = SpeedZoneMessage + @typing_extensions.final class DriveModeMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor