feat: 客服聊天
This commit is contained in:
parent
b979be1484
commit
c81b87d824
@ -9268,7 +9268,8 @@ type ChatAutoReplyRulerData struct {
|
|||||||
DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` //
|
DeletedAt int64 `protobuf:"varint,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` //
|
||||||
Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //标题
|
Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` //标题
|
||||||
Ruler string `protobuf:"bytes,6,opt,name=ruler,proto3" json:"ruler,omitempty"` //规则内容
|
Ruler string `protobuf:"bytes,6,opt,name=ruler,proto3" json:"ruler,omitempty"` //规则内容
|
||||||
RulerStatus int32 `protobuf:"varint,7,opt,name=rulerStatus,proto3" json:"rulerStatus,omitempty"` //规则状态: 1=启用 2=禁用
|
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` //规则状态: 1=启用 2=禁用
|
||||||
|
Response string `protobuf:"bytes,8,opt,name=response,proto3" json:"response,omitempty"` //回复内容
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ChatAutoReplyRulerData) Reset() {
|
func (x *ChatAutoReplyRulerData) Reset() {
|
||||||
@ -9345,13 +9346,20 @@ func (x *ChatAutoReplyRulerData) GetRuler() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ChatAutoReplyRulerData) GetRulerStatus() int32 {
|
func (x *ChatAutoReplyRulerData) GetStatus() int32 {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.RulerStatus
|
return x.Status
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *ChatAutoReplyRulerData) GetResponse() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Response
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
type CreateChatAutoReplyRulerResp struct {
|
type CreateChatAutoReplyRulerResp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
@ -11259,7 +11267,7 @@ var file_accountFiee_proto_rawDesc = []byte{
|
|||||||
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14,
|
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14,
|
||||||
0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54,
|
0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54,
|
||||||
0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x05, 0x20,
|
0x6f, 0x74, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x05, 0x20,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x16, 0x43,
|
0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x16, 0x43,
|
||||||
0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65,
|
0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65,
|
||||||
0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x03, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
|
0x03, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
|
||||||
@ -11270,453 +11278,454 @@ var file_accountFiee_proto_rawDesc = []byte{
|
|||||||
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
|
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
|
||||||
0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
||||||
0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06,
|
0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06,
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x72,
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73,
|
||||||
0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61,
|
||||||
0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x69, 0x0a,
|
0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
|
||||||
0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52,
|
0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
|
||||||
0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a,
|
0x69, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74,
|
||||||
0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63,
|
0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12,
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75,
|
0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
|
||||||
0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61,
|
|
||||||
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x43, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65,
|
|
||||||
0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52,
|
|
||||||
0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
|
|
||||||
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69,
|
|
||||||
0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x32, 0x0a,
|
|
||||||
0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c,
|
|
||||||
0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
|
||||||
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
|
|
||||||
0x64, 0x22, 0xb9, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74,
|
|
||||||
0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
|
|
||||||
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c,
|
|
||||||
0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72,
|
|
||||||
0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
|
|
||||||
0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
|
|
||||||
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
|
|
||||||
0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
|
|
||||||
0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72,
|
|
||||||
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x9e, 0x01,
|
|
||||||
0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70,
|
|
||||||
0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12,
|
|
||||||
0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74,
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74,
|
||||||
0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61,
|
0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61,
|
||||||
0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65,
|
0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08,
|
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x43, 0x0a, 0x1f, 0x44, 0x65,
|
||||||
0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
|
0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c,
|
||||||
0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61,
|
0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a,
|
||||||
0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x8e,
|
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a,
|
||||||
0x02, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12,
|
0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22,
|
||||||
0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x44, 0x12,
|
0x32, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65,
|
||||||
0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01,
|
0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||||
0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a,
|
0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||||
0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
|
0x02, 0x69, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41,
|
||||||
0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64,
|
0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
||||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
|
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72,
|
||||||
0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63,
|
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65,
|
||||||
0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x71, 0x75,
|
||||||
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
|
0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||||
0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72,
|
0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
|
||||||
0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x08, 0x20,
|
0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f,
|
0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f,
|
0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64,
|
||||||
0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61,
|
0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22,
|
||||||
0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22,
|
0x9e, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52,
|
||||||
0x55, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65,
|
0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
|
||||||
0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
|
0x70, 0x12, 0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||||
0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68,
|
||||||
0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04,
|
0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72,
|
||||||
0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
|
||||||
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
|
|
||||||
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12,
|
|
||||||
0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x69, 0x64,
|
|
||||||
0x73, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72,
|
|
||||||
0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
|
|
||||||
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x16,
|
|
||||||
0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
|
|
||||||
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61,
|
|
||||||
0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
|
|
||||||
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70,
|
|
||||||
0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65,
|
|
||||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12, 0x14, 0x0a,
|
|
||||||
0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72,
|
|
||||||
0x64, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55,
|
|
||||||
0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x6c,
|
|
||||||
0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72,
|
|
||||||
0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
|
0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
|
||||||
0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a,
|
0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a,
|
||||||
0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
|
0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f,
|
0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f,
|
||||||
0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c,
|
0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c,
|
||||||
0x2a, 0x72, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x55,
|
0x22, 0x8e, 0x02, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74,
|
||||||
0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12,
|
0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49,
|
||||||
0x0f, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x01,
|
0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02,
|
||||||
0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65,
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
|
||||||
0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x73, 0x67, 0x54, 0x79,
|
0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x70, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x73, 0x67,
|
0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a,
|
||||||
0x54, 0x79, 0x70, 0x65, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79,
|
0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x70, 0x65, 0x10, 0x05, 0x32, 0xeb, 0x2b, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e,
|
||||||
0x46, 0x69, 0x65, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e,
|
0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69,
|
0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
|
0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b,
|
0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18,
|
||||||
0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x0a,
|
||||||
0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71,
|
0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61,
|
||||||
0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x47,
|
0x74, 0x61, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61,
|
||||||
0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x72, 0x22, 0x55, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77,
|
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
|
||||||
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73,
|
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61,
|
||||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x07, 0x4f, 0x66, 0x66, 0x4c, 0x69,
|
0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
|
||||||
0x6e, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65,
|
||||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
|
0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
|
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
|
||||||
0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a,
|
0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03,
|
||||||
0x09, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63,
|
0x69, 0x64, 0x73, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73,
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x6e,
|
0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a,
|
||||||
0x66, 0x6f, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa5, 0x01,
|
||||||
0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
||||||
0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72,
|
||||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f,
|
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x67, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49,
|
0x74, 0x61, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67,
|
||||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x22,
|
0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||||
0x00, 0x12, 0x47, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x12, 0x1c, 0x2e,
|
0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65,
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63,
|
0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x12,
|
||||||
0x6b, 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63,
|
0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x07, 0x53, 0x65,
|
0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a,
|
||||||
0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73,
|
||||||
0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
|
||||||
0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
|
0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64,
|
0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74,
|
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74,
|
||||||
0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61,
|
0x61, 0x6c, 0x2a, 0x72, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d,
|
0x0e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10,
|
||||||
0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65,
|
||||||
0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x78, 0x43, 0x75, 0x73, 0x74,
|
0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x73, 0x67, 0x54, 0x79,
|
||||||
0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x70, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x73, 0x67,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73,
|
0x54, 0x79, 0x70, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d,
|
||||||
0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74,
|
0x54, 0x79, 0x70, 0x65, 0x10, 0x05, 0x32, 0xeb, 0x2b, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75,
|
||||||
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54,
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12,
|
||||||
0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
|
0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f,
|
||||||
0x72, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e,
|
||||||
|
0x66, 0x6f, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54,
|
||||||
|
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
|
||||||
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00,
|
||||||
|
0x12, 0x47, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74,
|
||||||
|
0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52,
|
||||||
|
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x07, 0x4f, 0x66, 0x66,
|
||||||
|
0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
|
0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
||||||
|
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
|
||||||
|
0x55, 0x0a, 0x09, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x26, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
|
||||||
|
0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71,
|
||||||
|
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
|
||||||
|
0x4c, 0x6f, 0x67, 0x42, 0x79, 0x49, 0x64, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x42,
|
||||||
|
0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4c, 0x6f,
|
||||||
|
0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x12,
|
||||||
|
0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68,
|
||||||
|
0x65, 0x63, 0x6b, 0x50, 0x77, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e,
|
||||||
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61,
|
||||||
|
0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x07,
|
||||||
|
0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71,
|
||||||
|
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65,
|
||||||
|
0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75,
|
||||||
|
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e,
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e,
|
||||||
0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67,
|
0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x45, 0x78, 0x43, 0x75,
|
||||||
0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e,
|
|
||||||
0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
|
||||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54,
|
|
||||||
0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65,
|
|
||||||
0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
|
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e,
|
|
||||||
0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
|
||||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65,
|
|
||||||
0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
|
||||||
0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d,
|
|
||||||
0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63,
|
0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67,
|
||||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
|
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
|
||||||
0x12, 0x52, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69,
|
0x12, 0x54, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73,
|
||||||
0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x74, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
|
0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53,
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74,
|
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a,
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d,
|
||||||
0x77, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53,
|
||||||
0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e,
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65,
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f,
|
0x77, 0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77,
|
||||||
|
0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
|
0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53,
|
||||||
|
0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||||
|
0x54, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x54, 0x65, 0x6c, 0x4e,
|
||||||
|
0x75, 0x6d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d,
|
||||||
|
0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||||
|
0x22, 0x00, 0x12, 0x52, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
|
||||||
|
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||||
|
0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70,
|
||||||
|
0x74, 0x4a, 0x77, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x71,
|
||||||
|
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x77, 0x74, 0x52, 0x65, 0x73,
|
||||||
|
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
||||||
|
0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e,
|
||||||
|
0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
||||||
|
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
|
||||||
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x4a, 0x6f,
|
||||||
|
0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x61, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d,
|
||||||
|
0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66,
|
||||||
|
0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4c,
|
||||||
|
0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
|
0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e,
|
||||||
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74,
|
||||||
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x52, 0x61,
|
||||||
|
0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
|
0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c,
|
||||||
|
0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a,
|
||||||
|
0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49,
|
||||||
|
0x44, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
||||||
|
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
|
||||||
|
0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52,
|
||||||
|
0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
|
||||||
|
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55,
|
||||||
|
0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
||||||
|
0x69, 0x65, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
|
0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
||||||
|
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
|
||||||
|
0x12, 0x49, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1e,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65,
|
||||||
|
0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73,
|
||||||
|
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x09, 0x55,
|
||||||
|
0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c,
|
||||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x4e,
|
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x79,
|
||||||
0x75, 0x6d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x47, 0x65,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71,
|
||||||
0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61,
|
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52,
|
0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4c, 0x69, 0x73,
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0c, 0x4f, 0x6e,
|
||||||
0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73,
|
||||||
|
0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65,
|
||||||
|
0x0a, 0x15, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e,
|
||||||
|
0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x42, 0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
|
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
|
0x2e, 0x4d, 0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||||
|
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12,
|
||||||
|
0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69,
|
||||||
|
0x73, 0x74, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63,
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x64,
|
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65,
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
0x72, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54,
|
||||||
0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
|
0x68, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65,
|
||||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x09, 0x4c,
|
0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61,
|
||||||
0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x49, 0x44, 0x73,
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72,
|
||||||
|
0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68,
|
||||||
|
0x65, 0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||||
|
0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f,
|
||||||
|
0x62, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d,
|
||||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x1a,
|
0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d,
|
0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52,
|
||||||
0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63,
|
0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52,
|
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x06, 0x55, 0x70, 0x64,
|
|
||||||
0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
|
||||||
0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
|
||||||
0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x70,
|
|
||||||
0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49,
|
|
||||||
0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1e, 0x2e, 0x61,
|
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73,
|
|
||||||
0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61,
|
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x09, 0x55, 0x73, 0x65,
|
|
||||||
0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x54, 0x65, 0x6c, 0x52, 0x65,
|
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
|
|
||||||
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x79, 0x53, 0x65,
|
|
||||||
0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
|
|
||||||
0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
|
||||||
0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
|
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0c, 0x4f, 0x6e, 0x6c, 0x79,
|
|
||||||
0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x73, 0x67, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74,
|
|
||||||
0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x15,
|
|
||||||
0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x4e, 0x69, 0x63,
|
|
||||||
0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42,
|
|
||||||
0x79, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
|
||||||
0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4d,
|
|
||||||
0x61, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
|
||||||
0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1a, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74,
|
|
||||||
0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
|
|
||||||
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x88, 0x01, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79,
|
|
||||||
0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65,
|
|
||||||
0x53, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x73,
|
|
||||||
0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53, 0x61, 0x6d, 0x65,
|
|
||||||
0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x63,
|
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,
|
|
||||||
0x65, 0x72, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x68, 0x65, 0x53,
|
|
||||||
0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
|
|
||||||
0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e,
|
|
||||||
0x75, 0x6d, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
|
||||||
0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4a, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x52, 0x65,
|
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
|
||||||
0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c,
|
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61,
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61,
|
||||||
0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61,
|
0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e,
|
0x47, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x63,
|
||||||
0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a,
|
|
||||||
0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x52, 0x65,
|
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
|
||||||
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69,
|
|
||||||
0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
|
||||||
0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
|
||||||
0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x55,
|
|
||||||
0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
|
|
||||||
0x00, 0x12, 0x58, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61,
|
|
||||||
0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
|
||||||
0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65,
|
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d,
|
|
||||||
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x15, 0x47,
|
|
||||||
0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70,
|
|
||||||
0x74, 0x63, 0x68, 0x61, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
|
||||||
0x65, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65,
|
|
||||||
0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
|
||||||
0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65,
|
|
||||||
0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74,
|
|
||||||
0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a,
|
|
||||||
0x13, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70,
|
|
||||||
0x74, 0x63, 0x68, 0x61, 0x12, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
|
||||||
0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43,
|
|
||||||
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69,
|
|
||||||
0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52,
|
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53, 0x65, 0x6e,
|
|
||||||
0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63,
|
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74,
|
|
||||||
0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64,
|
|
||||||
0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
|
||||||
0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69,
|
|
||||||
0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c,
|
|
||||||
0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
|
||||||
0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
|
||||||
0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
|
|
||||||
0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0e,
|
|
||||||
0x53, 0x61, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e,
|
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x75, 0x62,
|
|
||||||
0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
|
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
|
|
||||||
0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x43,
|
|
||||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74,
|
|
||||||
0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61,
|
|
||||||
0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x55,
|
|
||||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74,
|
|
||||||
0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67,
|
|
||||||
0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73,
|
|
||||||
0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
|
||||||
0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
|
|
||||||
0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
|
||||||
0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68,
|
|
||||||
0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
|
|
||||||
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
|
|
||||||
0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68,
|
|
||||||
0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x61,
|
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68,
|
|
||||||
0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
|
||||||
0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
|
||||||
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5a,
|
|
||||||
0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
|
||||||
0x74, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
|
||||||
0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72,
|
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65,
|
|
||||||
0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x12, 0x24,
|
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74,
|
|
||||||
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
|
|
||||||
0x65, 0x73, 0x74, 0x32, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
|
||||||
0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69,
|
|
||||||
0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x32, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x67,
|
|
||||||
0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63,
|
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
|
||||||
0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
|
||||||
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72,
|
||||||
0x22, 0x00, 0x12, 0x54, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74,
|
0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x65, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44,
|
0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
0x61, 0x74, 0x61, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||||
0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f,
|
0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c,
|
||||||
0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61,
|
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61,
|
0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52,
|
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x6c, 0x4e,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73,
|
0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a,
|
||||||
0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52,
|
0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43,
|
||||||
0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61,
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69,
|
||||||
0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x10,
|
0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
||||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61,
|
||||||
0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44,
|
0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
|
||||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
|
0x6a, 0x0a, 0x13, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43,
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x12, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00,
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65,
|
||||||
0x12, 0x5b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72,
|
0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||||
0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
0x28, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65,
|
||||||
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63,
|
0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x43, 0x61, 0x70, 0x74, 0x63, 0x68,
|
||||||
0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
|
0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x53,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61,
|
0x65, 0x6e, 0x64, 0x4e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x2e, 0x61,
|
||||||
0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x60, 0x0a,
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e,
|
||||||
0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69,
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||||
0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65,
|
||||||
0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69,
|
0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||||
0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52,
|
0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x63,
|
||||||
0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
|
||||||
0x51, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64,
|
0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75,
|
||||||
0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x20,
|
0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x53, 0x74,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65,
|
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d,
|
||||||
0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x73, 0x70,
|
0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f,
|
||||||
0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74,
|
0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53,
|
||||||
0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74,
|
0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
||||||
0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a,
|
||||||
0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0d, 0x53,
|
0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12,
|
||||||
0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61,
|
0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d,
|
0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67,
|
0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a,
|
||||||
0x22, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74,
|
0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12,
|
||||||
0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65,
|
0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63,
|
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d,
|
||||||
0x73, 0x67, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d,
|
0x73, 0x67, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74,
|
||||||
0x65, 0x64, 0x69, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63,
|
0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a,
|
||||||
|
0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f,
|
||||||
|
0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c,
|
||||||
|
0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||||
|
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||||
|
0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f,
|
||||||
|
0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74,
|
||||||
|
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74,
|
||||||
|
0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||||
|
0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
|
0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00,
|
||||||
|
0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c,
|
||||||
|
0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
|
0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
||||||
|
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73,
|
||||||
|
0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10,
|
||||||
|
0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32,
|
||||||
|
0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47,
|
||||||
|
0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
|
||||||
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||||
|
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x32, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52,
|
||||||
|
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x2e,
|
||||||
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69,
|
||||||
|
0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
|
0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
||||||
|
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65,
|
||||||
|
0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68,
|
||||||
|
0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72,
|
||||||
|
0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
||||||
|
0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65,
|
||||||
|
0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x55, 0x70,
|
||||||
|
0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
|
||||||
|
0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
||||||
|
0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x52,
|
||||||
|
0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f,
|
||||||
|
0x72, 0x64, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
|
0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72,
|
||||||
|
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67,
|
||||||
|
0x22, 0x00, 0x12, 0x5b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63,
|
||||||
|
0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
||||||
|
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52,
|
||||||
|
0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
|
0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
||||||
|
0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12,
|
||||||
|
0x60, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
||||||
|
0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
||||||
|
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63,
|
||||||
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22,
|
||||||
|
0x00, 0x12, 0x51, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d,
|
||||||
|
0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61,
|
||||||
|
0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
||||||
|
0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65,
|
||||||
|
0x73, 0x70, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68,
|
||||||
|
0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44,
|
||||||
|
0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
|
0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a,
|
||||||
|
0x0d, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a,
|
||||||
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63,
|
||||||
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d,
|
||||||
|
0x73, 0x67, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68,
|
||||||
|
0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74,
|
||||||
|
0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
|
||||||
|
0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68,
|
||||||
|
0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
|
0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
|
0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00,
|
||||||
|
0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61,
|
||||||
|
0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
|
0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c,
|
||||||
|
0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63,
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74,
|
0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74,
|
||||||
0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12,
|
||||||
0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
0x6c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74,
|
||||||
0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5d,
|
0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63,
|
||||||
0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75,
|
||||||
0x73, 0x74, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61,
|
||||||
0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73,
|
0x1a, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
||||||
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70,
|
||||||
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65,
|
0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x59, 0x0a,
|
||||||
0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a,
|
0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52,
|
||||||
0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52,
|
|
||||||
0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f,
|
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f,
|
||||||
0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x29,
|
0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16,
|
||||||
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65,
|
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
|
||||||
0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79,
|
0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65,
|
||||||
0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x18, 0x55,
|
|
||||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70,
|
|
||||||
0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
|
||||||
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65,
|
|
||||||
0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61,
|
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
|
|
||||||
0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68,
|
|
||||||
0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72,
|
|
||||||
0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43,
|
|
||||||
0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65,
|
|
||||||
0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12,
|
|
||||||
0x62, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74,
|
|
||||||
0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x61, 0x63,
|
|
||||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
|
||||||
0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c,
|
0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c,
|
||||||
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f,
|
0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
||||||
0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73,
|
0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75,
|
||||||
0x67, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75,
|
0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61,
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22,
|
||||||
0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65,
|
0x00, 0x12, 0x62, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41,
|
||||||
0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c,
|
0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x2e,
|
||||||
0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65,
|
||||||
0x74, 0x1a, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e,
|
0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52,
|
||||||
0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c,
|
0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63,
|
||||||
0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
|
||||||
0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65,
|
0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74,
|
||||||
0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46,
|
0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x65,
|
||||||
0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52,
|
0x74, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
||||||
0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69,
|
|
||||||
0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65,
|
0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65,
|
||||||
0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
|
0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||||
0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65,
|
||||||
0x46, 0x69, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52,
|
||||||
|
0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65,
|
||||||
|
0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75,
|
||||||
|
0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
|
0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74,
|
||||||
|
0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52,
|
||||||
|
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
|
0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f,
|
||||||
|
0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
|
||||||
|
0x73, 0x70, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
|
0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -986,8 +986,8 @@ message ChatAutoReplyRulerData{
|
|||||||
int64 deletedAt = 4; //
|
int64 deletedAt = 4; //
|
||||||
string title = 5; //标题
|
string title = 5; //标题
|
||||||
string ruler = 6; //规则内容
|
string ruler = 6; //规则内容
|
||||||
int32 rulerStatus = 7; //规则状态: 1=启用 2=禁用
|
int32 status = 7; //规则状态: 1=启用 2=禁用
|
||||||
|
string response =8; //回复内容
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateChatAutoReplyRulerResp{
|
message CreateChatAutoReplyRulerResp{
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
"fonchain-fiee/pkg/e"
|
"fonchain-fiee/pkg/e"
|
||||||
"fonchain-fiee/pkg/service"
|
"fonchain-fiee/pkg/service"
|
||||||
"fonchain-fiee/pkg/utils/secret"
|
"fonchain-fiee/pkg/utils/secret"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,6 +25,9 @@ func ParseToChatUser(c *gin.Context) (chatUserInfo *accountFiee.ChatUserData, co
|
|||||||
if exist {
|
if exist {
|
||||||
domain = domainAny.(string)
|
domain = domainAny.(string)
|
||||||
}
|
}
|
||||||
|
if domain == "" {
|
||||||
|
domain = config.AppConfig.System.Domain
|
||||||
|
}
|
||||||
var err error
|
var err error
|
||||||
token := c.GetHeader(e.Authorization)
|
token := c.GetHeader(e.Authorization)
|
||||||
if token == "" {
|
if token == "" {
|
||||||
|
@ -13,17 +13,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WsType int
|
|
||||||
|
|
||||||
const (
|
|
||||||
RegisterType WsType = iota
|
|
||||||
ErrorType
|
|
||||||
TestType
|
|
||||||
ChatType
|
|
||||||
NewChatMsgType //新消息通知
|
|
||||||
AuthorizationType //token校验通知
|
|
||||||
)
|
|
||||||
|
|
||||||
// 消息结构
|
// 消息结构
|
||||||
type WSMessage struct {
|
type WSMessage struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
@ -40,6 +40,8 @@ func NewChatRoom() *ChatRoom {
|
|||||||
register: make(clientChan),
|
register: make(clientChan),
|
||||||
UnRegister: make(clientChan),
|
UnRegister: make(clientChan),
|
||||||
broadcast: make(broadcastChan),
|
broadcast: make(broadcastChan),
|
||||||
|
eventBus: []*EventListener{},
|
||||||
|
EventRwLocker: &sync.RWMutex{},
|
||||||
}
|
}
|
||||||
go room.Run()
|
go room.Run()
|
||||||
return &room
|
return &room
|
||||||
@ -49,12 +51,14 @@ type broadcastMessage struct {
|
|||||||
UserIds []int64
|
UserIds []int64
|
||||||
message []byte
|
message []byte
|
||||||
}
|
}
|
||||||
type (
|
|
||||||
// []byte类型管道 用于客户端接收消息数据
|
|
||||||
messageChan chan []byte
|
|
||||||
|
|
||||||
//
|
type ChatRoomEvent struct {
|
||||||
wsConnChan chan *websocket.Conn
|
ListenEvent []ListenEvent
|
||||||
|
message []byte
|
||||||
|
SenderId int64
|
||||||
|
ReceiverIds []int64
|
||||||
|
}
|
||||||
|
type (
|
||||||
|
|
||||||
// Client类型数据管道
|
// Client类型数据管道
|
||||||
clientChan chan *Client
|
clientChan chan *Client
|
||||||
@ -64,6 +68,7 @@ type (
|
|||||||
|
|
||||||
type ChatRoom struct {
|
type ChatRoom struct {
|
||||||
clientsRwLocker *sync.RWMutex
|
clientsRwLocker *sync.RWMutex
|
||||||
|
EventRwLocker *sync.RWMutex
|
||||||
//clients 客户端信息存储
|
//clients 客户端信息存储
|
||||||
//// 支持多客户端连接 map[userId]map[clientId]*Client
|
//// 支持多客户端连接 map[userId]map[clientId]*Client
|
||||||
clients map[int64]map[string]*Client
|
clients map[int64]map[string]*Client
|
||||||
@ -77,7 +82,11 @@ type ChatRoom struct {
|
|||||||
//unRegister 注销管道 接收需要注销的客户端
|
//unRegister 注销管道 接收需要注销的客户端
|
||||||
UnRegister clientChan
|
UnRegister clientChan
|
||||||
|
|
||||||
|
// 消息广播管道
|
||||||
broadcast broadcastChan
|
broadcast broadcastChan
|
||||||
|
|
||||||
|
// 事件广播管道,向其它程序推送消息
|
||||||
|
eventBus []*EventListener
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *ChatRoom) Run() {
|
func (o *ChatRoom) Run() {
|
||||||
@ -86,8 +95,9 @@ func (o *ChatRoom) Run() {
|
|||||||
select {
|
select {
|
||||||
// 注册事件
|
// 注册事件
|
||||||
case newClient := <-o.register:
|
case newClient := <-o.register:
|
||||||
////删除临时map中的客户户端
|
o.pushEvent(EventUserJoin, EventProgressBefore, newClient)
|
||||||
//delete(o.tempClient, client.clientId)
|
defer o.pushEvent(EventUserJoin, EventProgressAfter, newClient)
|
||||||
|
|
||||||
o.clientsRwLocker.Lock()
|
o.clientsRwLocker.Lock()
|
||||||
//添加到客户端集合中
|
//添加到客户端集合中
|
||||||
if o.clients[newClient.UserId] == nil {
|
if o.clients[newClient.UserId] == nil {
|
||||||
@ -98,15 +108,6 @@ func (o *ChatRoom) Run() {
|
|||||||
if o.Session == nil {
|
if o.Session == nil {
|
||||||
o.Session = make(map[string][]*Client)
|
o.Session = make(map[string][]*Client)
|
||||||
}
|
}
|
||||||
//if _, ok := o.Session[newClient.SessionId]; ok {
|
|
||||||
// for i, client := range o.Session[newClient.SessionId] {
|
|
||||||
// if client.ClientId == newClient.ClientId {
|
|
||||||
// //将之前的客户端注销
|
|
||||||
// o.UnRegister <- client
|
|
||||||
// }
|
|
||||||
// o.Session[newClient.SessionId][i] = newClient
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
if newClient.Waiter {
|
if newClient.Waiter {
|
||||||
//客服人员没有默认会话窗口,而是自动加入所有用户的会话
|
//客服人员没有默认会话窗口,而是自动加入所有用户的会话
|
||||||
for sessionId, _ := range o.Session {
|
for sessionId, _ := range o.Session {
|
||||||
@ -118,7 +119,7 @@ func (o *ChatRoom) Run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//画家添加会话的逻辑
|
//普通用户添加会话的逻辑
|
||||||
_, ok := o.Session[newClient.SessionId]
|
_, ok := o.Session[newClient.SessionId]
|
||||||
if !ok {
|
if !ok {
|
||||||
o.Session[newClient.SessionId] = make([]*Client, 0)
|
o.Session[newClient.SessionId] = make([]*Client, 0)
|
||||||
@ -141,6 +142,8 @@ func (o *ChatRoom) Run() {
|
|||||||
o.clientsRwLocker.Unlock()
|
o.clientsRwLocker.Unlock()
|
||||||
//注销事件
|
//注销事件
|
||||||
case client := <-o.UnRegister:
|
case client := <-o.UnRegister:
|
||||||
|
o.pushEvent(EventUserLeave, EventProgressBefore, client)
|
||||||
|
defer o.pushEvent(EventUserLeave, EventProgressAfter, client)
|
||||||
//panic 恢复
|
//panic 恢复
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != "" {
|
if r := recover(); r != "" {
|
||||||
@ -189,6 +192,10 @@ func (o *ChatRoom) Register(c *Client) (sessionId string) {
|
|||||||
func (o *ChatRoom) SendSessionMessage(sendUserId int64, sessionId string, msgType WsType, message any) (userIdInSession []int64, err error) {
|
func (o *ChatRoom) SendSessionMessage(sendUserId int64, sessionId string, msgType WsType, message any) (userIdInSession []int64, err error) {
|
||||||
o.clientsRwLocker.Lock()
|
o.clientsRwLocker.Lock()
|
||||||
defer o.clientsRwLocker.Unlock()
|
defer o.clientsRwLocker.Unlock()
|
||||||
|
|
||||||
|
o.pushEvent(EventChatMessage, EventProgressBefore, sendUserId, sessionId, msgType, message)
|
||||||
|
defer o.pushEvent(EventChatMessage, EventProgressAfter, sendUserId, sessionId, msgType, message)
|
||||||
|
|
||||||
var msg = WsSessionInfo{
|
var msg = WsSessionInfo{
|
||||||
Type: msgType,
|
Type: msgType,
|
||||||
Content: message,
|
Content: message,
|
||||||
@ -234,7 +241,7 @@ func (o *ChatRoom) GetUserIdInSession(sessionId string, withoutUserId ...int64)
|
|||||||
for _, userId := range withoutUserId {
|
for _, userId := range withoutUserId {
|
||||||
if client.UserId == userId {
|
if client.UserId == userId {
|
||||||
jump = true
|
jump = true
|
||||||
continue
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,14 +275,14 @@ func (o *ChatRoom) GetUserIdInSession(sessionId string, withoutUserId ...int64)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (o ChatRoom) RegisterClient(c *Client) {
|
// func (o *ChatRoom) RegisterClient(c *Client) {
|
||||||
// o.register <- c
|
// o.register <- c
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// func (o ChatRoom) DeleteClient(c *Client) {
|
// func (o *ChatRoom) DeleteClient(c *Client) {
|
||||||
// o.unRegister <- c
|
// o.unRegister <- c
|
||||||
// }
|
// }
|
||||||
func (o ChatRoom) Broadcast(message []byte, userIds ...int64) {
|
func (o *ChatRoom) Broadcast(message []byte, userIds ...int64) {
|
||||||
// 如果userIds为空则群发,否则找到这个用户的ws对象
|
// 如果userIds为空则群发,否则找到这个用户的ws对象
|
||||||
if userIds == nil {
|
if userIds == nil {
|
||||||
for _, userClients := range o.clients {
|
for _, userClients := range o.clients {
|
||||||
@ -313,3 +320,49 @@ func (o ChatRoom) Broadcast(message []byte, userIds ...int64) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RegisterEventListener 注册聊天室事件监听者
|
||||||
|
func (o *ChatRoom) RegisterEventListener(listenerChan *EventListener) {
|
||||||
|
o.EventRwLocker.Lock()
|
||||||
|
defer o.EventRwLocker.Unlock()
|
||||||
|
o.eventBus = append(o.eventBus, listenerChan)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注销监听者
|
||||||
|
func (o *ChatRoom) UnRegisterEventListener(listenerChan *EventListener) {
|
||||||
|
o.EventRwLocker.Lock()
|
||||||
|
defer o.EventRwLocker.Unlock()
|
||||||
|
var registerListenerList []*EventListener
|
||||||
|
for i, listener := range o.eventBus {
|
||||||
|
if listener.Name == listenerChan.Name {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
registerListenerList = append(registerListenerList, o.eventBus[i])
|
||||||
|
}
|
||||||
|
o.eventBus = registerListenerList
|
||||||
|
}
|
||||||
|
|
||||||
|
// pushEvent 推送聊天室事件
|
||||||
|
func (o *ChatRoom) pushEvent(eventType EventType, progress EventProgress, data ...any) {
|
||||||
|
o.EventRwLocker.Lock()
|
||||||
|
defer o.EventRwLocker.Unlock()
|
||||||
|
for _, listener := range o.eventBus {
|
||||||
|
hit := false
|
||||||
|
for _, need := range listener.ListenEvents {
|
||||||
|
if need.EventType == eventType && need.ProgressType == progress {
|
||||||
|
hit = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if hit == false {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
listener.Chan <- ListenEventData{
|
||||||
|
ListenEvent: ListenEvent{
|
||||||
|
EventType: eventType,
|
||||||
|
ProgressType: progress,
|
||||||
|
},
|
||||||
|
Data: data,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
52
pkg/common/ws/consts.go
Normal file
52
pkg/common/ws/consts.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Package ws -----------------------------
|
||||||
|
// @file : consts.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/14 09:44
|
||||||
|
// -------------------------------------------
|
||||||
|
package ws
|
||||||
|
|
||||||
|
// websocket 消息类型
|
||||||
|
type WsType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
RegisterType WsType = iota //用户注册消息
|
||||||
|
ErrorType //错误消息
|
||||||
|
TestType //测试消息
|
||||||
|
ChatType //聊天消息
|
||||||
|
NewChatMsgType //新消息通知
|
||||||
|
AuthorizationType //token校验通知
|
||||||
|
)
|
||||||
|
|
||||||
|
// 事件总线中的事件类型
|
||||||
|
type EventType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
EventConnection EventType = "connection" //websocket连接事件
|
||||||
|
EventUserJoin EventType = "user_join" //用户/客服加入聊天事件
|
||||||
|
EventUserLeave EventType = "user_leave" //用户离开事件
|
||||||
|
EventChatMessage EventType = "chat_message" //聊天消息传递事件
|
||||||
|
)
|
||||||
|
|
||||||
|
// before
|
||||||
|
type EventProgress string
|
||||||
|
|
||||||
|
const (
|
||||||
|
EventProgressBefore EventProgress = "before"
|
||||||
|
EventProgressAfter EventProgress = "after"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ListenEvent struct {
|
||||||
|
EventType EventType `json:"type"`
|
||||||
|
ProgressType EventProgress `json:"progress"`
|
||||||
|
}
|
||||||
|
type ListenEventData struct {
|
||||||
|
ListenEvent
|
||||||
|
Data interface{}
|
||||||
|
}
|
||||||
|
type ListenEventChan chan ListenEventData
|
||||||
|
type EventListener struct {
|
||||||
|
Name string
|
||||||
|
ListenEvents []ListenEvent //需要监听的事件列表
|
||||||
|
Chan ListenEventChan
|
||||||
|
}
|
@ -1,11 +1,13 @@
|
|||||||
package asChat
|
package asChat
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"fonchain-fiee/api/account"
|
"fonchain-fiee/api/account"
|
||||||
"fonchain-fiee/api/accountFiee"
|
"fonchain-fiee/api/accountFiee"
|
||||||
"fonchain-fiee/cmd/config"
|
"fonchain-fiee/cmd/config"
|
||||||
"fonchain-fiee/pkg/service"
|
"fonchain-fiee/pkg/service"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/dto"
|
||||||
"fonchain-fiee/pkg/utils"
|
"fonchain-fiee/pkg/utils"
|
||||||
"fonchain-fiee/pkg/utils/secret"
|
"fonchain-fiee/pkg/utils/secret"
|
||||||
"fonchain-fiee/pkg/utils/stime"
|
"fonchain-fiee/pkg/utils/stime"
|
||||||
@ -21,12 +23,18 @@ type ChatAutoReplyRulerHandler struct {
|
|||||||
|
|
||||||
// 创建自动回复规则
|
// 创建自动回复规则
|
||||||
func (a *ChatAutoReplyRulerHandler) CreateChatAutoReplyRuler(c *gin.Context) {
|
func (a *ChatAutoReplyRulerHandler) CreateChatAutoReplyRuler(c *gin.Context) {
|
||||||
var req accountFiee.ChatAutoReplyRulerData
|
var req dto.ChatAutoReplyData
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err := service.AccountFieeProvider.CreateChatAutoReplyRuler(c, &req)
|
rulerBytes, _ := json.Marshal(req.Rules)
|
||||||
|
protoReq := accountFiee.ChatAutoReplyRulerData{
|
||||||
|
Title: req.Title,
|
||||||
|
Ruler: string(rulerBytes),
|
||||||
|
Response: req.Response,
|
||||||
|
}
|
||||||
|
_, err := service.AccountFieeProvider.CreateChatAutoReplyRuler(c, &protoReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -51,12 +59,13 @@ func (a *ChatAutoReplyRulerHandler) DeleteChatAutoReplyRuler(c *gin.Context) {
|
|||||||
|
|
||||||
// 更新自动回复规则
|
// 更新自动回复规则
|
||||||
func (a *ChatAutoReplyRulerHandler) UpdateChatAutoReplyRuler(c *gin.Context) {
|
func (a *ChatAutoReplyRulerHandler) UpdateChatAutoReplyRuler(c *gin.Context) {
|
||||||
var req accountFiee.ChatAutoReplyRulerData
|
var req dto.ChatAutoReplyData
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err := service.AccountFieeProvider.UpdateChatAutoReplyRuler(c, &req)
|
protoReq := req.ToProtoData()
|
||||||
|
_, err := service.AccountFieeProvider.UpdateChatAutoReplyRuler(c, protoReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -76,12 +85,14 @@ func (a *ChatAutoReplyRulerHandler) GetChatAutoReplyRulerDetail(c *gin.Context)
|
|||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
service.Success(c, resp)
|
tmp := dto.ChatAutoReplyData{}
|
||||||
|
tmp.Parse(resp)
|
||||||
|
service.Success(c, tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 批量查询自动回复规则
|
// 批量查询自动回复规则
|
||||||
func (a *ChatAutoReplyRulerHandler) GetChatAutoReplyRulerList(c *gin.Context) {
|
func (a *ChatAutoReplyRulerHandler) GetChatAutoReplyRulerList(c *gin.Context) {
|
||||||
var req GetChatAutoReplyRulerListRequest
|
var req dto.GetChatAutoReplyRulerListRequest
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -93,10 +104,21 @@ func (a *ChatAutoReplyRulerHandler) GetChatAutoReplyRulerList(c *gin.Context) {
|
|||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
service.Success(c, resp.List)
|
var data []dto.ChatAutoReplyData
|
||||||
|
for _, v := range resp.List {
|
||||||
|
tmp := dto.ChatAutoReplyData{}
|
||||||
|
tmp.Parse(v)
|
||||||
|
data = append(data, tmp)
|
||||||
|
}
|
||||||
|
service.Success(c, map[string]interface{}{
|
||||||
|
"data": data,
|
||||||
|
"page": resp.Page,
|
||||||
|
"pagesize": resp.PageSize,
|
||||||
|
"total": resp.Total,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
func (a *ChatAutoReplyRulerHandler) ErpLoginDemo(c *gin.Context) {
|
func (a *ChatAutoReplyRulerHandler) ErpLoginDemo(c *gin.Context) {
|
||||||
var req ErpLoginDemoReq
|
var req dto.ErpLoginDemoReq
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -141,7 +163,7 @@ func (a *ChatAutoReplyRulerHandler) ErpLoginDemo(c *gin.Context) {
|
|||||||
service.Success(c, loginRes)
|
service.Success(c, loginRes)
|
||||||
}
|
}
|
||||||
func (a *ChatAutoReplyRulerHandler) FieeLoginDemo(c *gin.Context) {
|
func (a *ChatAutoReplyRulerHandler) FieeLoginDemo(c *gin.Context) {
|
||||||
var req ErpLoginDemoReq
|
var req dto.ErpLoginDemoReq
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// @contact : wavingbear@163.com
|
// @contact : wavingbear@163.com
|
||||||
// @time : 2024/9/11 下午5:18
|
// @time : 2024/9/11 下午5:18
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
package asChat
|
package chatCache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -12,6 +12,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"fonchain-fiee/api/accountFiee"
|
"fonchain-fiee/api/accountFiee"
|
||||||
"fonchain-fiee/pkg/cache"
|
"fonchain-fiee/pkg/cache"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/dto"
|
||||||
"github.com/go-redis/redis"
|
"github.com/go-redis/redis"
|
||||||
"github.com/goccy/go-json"
|
"github.com/goccy/go-json"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
@ -28,7 +29,7 @@ const CacheNewMsgStatKey = "fiee:newMsgStat"
|
|||||||
var chatCacheLocker sync.RWMutex
|
var chatCacheLocker sync.RWMutex
|
||||||
|
|
||||||
type ChatCache struct {
|
type ChatCache struct {
|
||||||
newMessageStatExpireAfter time.Duration //消息统计的数据过期时间
|
NewMessageStatExpireAfter time.Duration //消息统计的数据过期时间
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------存储用户的会话ID--------------------------------
|
// ------------------------------存储用户的会话ID--------------------------------
|
||||||
@ -41,7 +42,7 @@ func (cr ChatCache) SaveUserSession(userId int64, sessionId string) {
|
|||||||
////var c = context.Background()
|
////var c = context.Background()
|
||||||
err := cache.RedisClient.Set(cr.GetUserSessionCacheKey(userId), sessionId, 0).Err()
|
err := cache.RedisClient.Set(cr.GetUserSessionCacheKey(userId), sessionId, 0).Err()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("保存用户会话失败", zap.Error(err))
|
log.Print("保存用户会话失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (cr ChatCache) GetUserSession(userId int64) (sessionId string) {
|
func (cr ChatCache) GetUserSession(userId int64) (sessionId string) {
|
||||||
@ -55,7 +56,7 @@ func (cr ChatCache) GetUserSession(userId int64) (sessionId string) {
|
|||||||
if err.Error() == "redis: nil" {
|
if err.Error() == "redis: nil" {
|
||||||
err = nil
|
err = nil
|
||||||
} else {
|
} else {
|
||||||
log.Fatal("获取用户会话失败", zap.Error(err))
|
log.Print("获取用户会话失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println("GetUserSession-3, sessionId:", sessionId)
|
fmt.Println("GetUserSession-3, sessionId:", sessionId)
|
||||||
@ -95,7 +96,7 @@ func (cr ChatCache) GetChatRecord(sessionId string) (data []*accountFiee.ChatRec
|
|||||||
if err.Error() == "redis: nil" {
|
if err.Error() == "redis: nil" {
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
//log.Fatal("获取聊天记录失败", zap.Error(err))
|
//log.Print("获取聊天记录失败", zap.Error(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Printf("cache data: %+v", string(messages))
|
fmt.Printf("cache data: %+v", string(messages))
|
||||||
@ -133,10 +134,10 @@ func (cr ChatCache) IncreaseNewMessageTotal(ownerId int64, sessionId string) (er
|
|||||||
copy(data[1:], data[0:foundIndex])
|
copy(data[1:], data[0:foundIndex])
|
||||||
data[0] = elementToMove
|
data[0] = elementToMove
|
||||||
} else if foundIndex == -1 {
|
} else if foundIndex == -1 {
|
||||||
data = append([]UserMsgStatic{{SessionId: sessionId, Total: 1}}, data...)
|
data = append([]dto.UserMsgStatic{{SessionId: sessionId, Total: 1}}, data...)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data = []UserMsgStatic{{SessionId: sessionId, Total: 1}}
|
data = []dto.UserMsgStatic{{SessionId: sessionId, Total: 1}}
|
||||||
}
|
}
|
||||||
return cr.coverOwnerNewMessageStat(ctx, ownerId, data)
|
return cr.coverOwnerNewMessageStat(ctx, ownerId, data)
|
||||||
}
|
}
|
||||||
@ -160,7 +161,7 @@ func (cr ChatCache) ResetNewMessageTotal(ownerId int64, sessionId string, total
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
data = append(data, UserMsgStatic{
|
data = append(data, dto.UserMsgStatic{
|
||||||
SessionId: sessionId,
|
SessionId: sessionId,
|
||||||
Total: tl,
|
Total: tl,
|
||||||
})
|
})
|
||||||
@ -174,7 +175,7 @@ func (cr ChatCache) RecountNewMessageTotal(ownerId int64) {
|
|||||||
var err error
|
var err error
|
||||||
keys, err = cache.RedisClient.Keys(CacheChatRecordKey + "*").Result()
|
keys, err = cache.RedisClient.Keys(CacheChatRecordKey + "*").Result()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("获取聊天记录所有缓存KEY失败", zap.Error(err))
|
log.Print("获取聊天记录所有缓存KEY失败", zap.Error(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var countMap = make(map[string]int)
|
var countMap = make(map[string]int)
|
||||||
@ -186,7 +187,7 @@ func (cr ChatCache) RecountNewMessageTotal(ownerId int64) {
|
|||||||
if err.Error() == "redis: nil" {
|
if err.Error() == "redis: nil" {
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
log.Fatal("获取聊天记录失败", zap.Error(err))
|
log.Print("获取聊天记录失败", zap.Error(err))
|
||||||
data = make([]*accountFiee.ChatRecordData, 0)
|
data = make([]*accountFiee.ChatRecordData, 0)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -204,7 +205,7 @@ func (cr ChatCache) RecountNewMessageTotal(ownerId int64) {
|
|||||||
for sessionId, count := range countMap {
|
for sessionId, count := range countMap {
|
||||||
err = cr.ResetNewMessageTotal(ownerId, sessionId, int64(count))
|
err = cr.ResetNewMessageTotal(ownerId, sessionId, int64(count))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("重置新消息数量统计",
|
log.Print("重置新消息数量统计",
|
||||||
zap.String("function", "RecountNewMessageTotal"),
|
zap.String("function", "RecountNewMessageTotal"),
|
||||||
zap.Int64("ownerId", ownerId),
|
zap.Int64("ownerId", ownerId),
|
||||||
zap.String("sessionId", sessionId),
|
zap.String("sessionId", sessionId),
|
||||||
@ -217,13 +218,13 @@ func (cr ChatCache) RecountNewMessageTotal(ownerId int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// erp获取最新的消息统计
|
// erp获取最新的消息统计
|
||||||
func (cr ChatCache) GetNewMessageStat(ctx context.Context, ownerId int64) (result []UserMsgStatic) {
|
func (cr ChatCache) GetNewMessageStat(ctx context.Context, ownerId int64) (result []dto.UserMsgStatic) {
|
||||||
//chatCacheLocker.RLock()
|
//chatCacheLocker.RLock()
|
||||||
//defer chatCacheLocker.RUnlock()
|
//defer chatCacheLocker.RUnlock()
|
||||||
result = make([]UserMsgStatic, 0)
|
result = make([]dto.UserMsgStatic, 0)
|
||||||
vals, err := cache.RedisClient.Get(cr.GetNewMsgStatCacheKey(ownerId)).Bytes()
|
vals, err := cache.RedisClient.Get(cr.GetNewMsgStatCacheKey(ownerId)).Bytes()
|
||||||
if err != nil && errors.Is(err, redis.Nil) {
|
if err != nil && errors.Is(err, redis.Nil) {
|
||||||
log.Fatal("从缓存获取新消息统计失败", zap.Error(err), zap.Int64("ownerId", ownerId))
|
log.Print("从缓存获取新消息统计失败", zap.Error(err), zap.Int64("ownerId", ownerId))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if vals != nil {
|
if vals != nil {
|
||||||
@ -233,9 +234,9 @@ func (cr ChatCache) GetNewMessageStat(ctx context.Context, ownerId int64) (resul
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 覆盖指定erp用户的新消息统计
|
// 覆盖指定erp用户的新消息统计
|
||||||
func (cr ChatCache) coverOwnerNewMessageStat(ctx context.Context, ownerId int64, data []UserMsgStatic) (err error) {
|
func (cr ChatCache) coverOwnerNewMessageStat(ctx context.Context, ownerId int64, data []dto.UserMsgStatic) (err error) {
|
||||||
value, _ := json.Marshal(data)
|
value, _ := json.Marshal(data)
|
||||||
//err = cache.RedisClient.Set(ctx, cr.GetNewMsgStatCacheKey(ownerId), value, cr.newMessageStatExpireAfter).Err()
|
//err = cache.RedisClient.Set(ctx, cr.GetNewMsgStatCacheKey(ownerId), value, cr.NewMessageStatExpireAfter).Err()
|
||||||
err = cache.RedisClient.Set(cr.GetNewMsgStatCacheKey(ownerId), value, 0).Err()
|
err = cache.RedisClient.Set(cr.GetNewMsgStatCacheKey(ownerId), value, 0).Err()
|
||||||
return
|
return
|
||||||
}
|
}
|
@ -4,7 +4,7 @@
|
|||||||
// @contact : wavingbear@163.com
|
// @contact : wavingbear@163.com
|
||||||
// @time : 2022/10/21 18:17:17
|
// @time : 2022/10/21 18:17:17
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
package asChat
|
package consts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
7
pkg/service/asChat/consts/consts.go
Normal file
7
pkg/service/asChat/consts/consts.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// Package consts -----------------------------
|
||||||
|
// @file : consts.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 17:40
|
||||||
|
// -------------------------------------------
|
||||||
|
package consts
|
@ -4,11 +4,12 @@
|
|||||||
// @contact : wavingbear@163.com
|
// @contact : wavingbear@163.com
|
||||||
// @time : 2024/9/10 下午6:28
|
// @time : 2024/9/10 下午6:28
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
package asChat
|
package dto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fonchain-fiee/api/accountFiee"
|
"fonchain-fiee/api/accountFiee"
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -140,3 +141,43 @@ type ErpLoginDemoReq struct {
|
|||||||
Nickname string `json:"nickname"`
|
Nickname string `json:"nickname"`
|
||||||
RealName string `json:"realName"`
|
RealName string `json:"realName"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ChatAutoReplyData struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Rules map[string]*AutoReplyRule `json:"rules"`
|
||||||
|
Response string `json:"response"`
|
||||||
|
CreatedAt string `json:"createdAt"`
|
||||||
|
UpdatedAt string `json:"updatedAt"`
|
||||||
|
Status int32 `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ChatAutoReplyData) ToProtoData() (data *accountFiee.ChatAutoReplyRulerData) {
|
||||||
|
jsonBytes, _ := json.Marshal(r.Rules)
|
||||||
|
data = &accountFiee.ChatAutoReplyRulerData{
|
||||||
|
ID: r.ID,
|
||||||
|
CreatedAt: r.CreatedAt,
|
||||||
|
UpdatedAt: r.UpdatedAt,
|
||||||
|
Title: r.Title,
|
||||||
|
Ruler: string(jsonBytes),
|
||||||
|
Status: r.Status,
|
||||||
|
Response: r.Response,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
func (r *ChatAutoReplyData) Parse(data *accountFiee.ChatAutoReplyRulerData) {
|
||||||
|
err := json.Unmarshal([]byte(data.Ruler), &r.Rules)
|
||||||
|
log.Printf("ChatAutoReplyData parse err:%v\n", err)
|
||||||
|
r.ID = data.ID
|
||||||
|
r.CreatedAt = data.CreatedAt
|
||||||
|
r.UpdatedAt = data.UpdatedAt
|
||||||
|
r.Title = data.Title
|
||||||
|
r.Status = data.Status
|
||||||
|
r.Response = data.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
type AutoReplyRule struct {
|
||||||
|
Enable bool `json:"enable"`
|
||||||
|
Content string `json:"content,omitempty"`
|
||||||
|
SecondDuration time.Duration `json:"secondDuration,omitempty"`
|
||||||
|
}
|
@ -18,6 +18,11 @@ import (
|
|||||||
"fonchain-fiee/pkg/common/ws"
|
"fonchain-fiee/pkg/common/ws"
|
||||||
"fonchain-fiee/pkg/e"
|
"fonchain-fiee/pkg/e"
|
||||||
"fonchain-fiee/pkg/service"
|
"fonchain-fiee/pkg/service"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/chatCache"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/consts"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/dto"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/logic"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/robot"
|
||||||
"fonchain-fiee/pkg/service/upload"
|
"fonchain-fiee/pkg/service/upload"
|
||||||
"fonchain-fiee/pkg/utils"
|
"fonchain-fiee/pkg/utils"
|
||||||
"fonchain-fiee/pkg/utils/stime"
|
"fonchain-fiee/pkg/utils/stime"
|
||||||
@ -37,18 +42,20 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var ChatHandlerIns = ChatHandler{
|
var ChatHandlerIns = ChatHandler{
|
||||||
cache: ChatCache{newMessageStatExpireAfter: 10 * time.Minute},
|
cache: chatCache.ChatCache{NewMessageStatExpireAfter: 10 * time.Minute},
|
||||||
|
robot: robot.NewRobot(),
|
||||||
}
|
}
|
||||||
|
|
||||||
type ChatHandler struct {
|
type ChatHandler struct {
|
||||||
cache ChatCache
|
cache chatCache.ChatCache
|
||||||
|
robot *robot.Robot
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cr ChatHandler) Connection(c *gin.Context) {
|
func (cr ChatHandler) Connection(c *gin.Context) {
|
||||||
conn, err := ws.UpGrader.Upgrade(c.Writer, c.Request, nil)
|
conn, err := ws.UpGrader.Upgrade(c.Writer, c.Request, nil)
|
||||||
conn.SetReadDeadline(time.Now().Add(time.Second * 10))
|
conn.SetReadDeadline(time.Now().Add(time.Second * 10))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("无法升级为websocket连接", zap.Error(err))
|
log.Print("无法升级为websocket连接", zap.Error(err))
|
||||||
c.String(500, "无法转为websocket连接")
|
c.String(500, "无法转为websocket连接")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -80,16 +87,16 @@ func (cr ChatHandler) Connection(c *gin.Context) {
|
|||||||
|
|
||||||
fmt.Println("44444444444444,ws.NewClient")
|
fmt.Println("44444444444444,ws.NewClient")
|
||||||
//注册ws客户端,并发送clientId给ws客户端
|
//注册ws客户端,并发送clientId给ws客户端
|
||||||
var cli = ws.NewClient(userInfo.ID, "", conn, ChatRoom)
|
var cli = ws.NewClient(userInfo.ID, "", conn, consts.ChatRoom)
|
||||||
cli.Waiter = userInfo.Role == 2
|
cli.Waiter = userInfo.Role == 2
|
||||||
fmt.Println("55555555555555,GetUserSession")
|
fmt.Println("55555555555555,GetUserSession")
|
||||||
//查询是否有历史的sessionId
|
//查询是否有历史的sessionId
|
||||||
cli.SessionId = cr.cache.GetUserSession(userInfo.ID)
|
cli.SessionId = cr.cache.GetUserSession(userInfo.ID)
|
||||||
ChatRoom.Register(cli)
|
consts.ChatRoom.Register(cli)
|
||||||
cr.cache.SaveUserSession(userInfo.ID, cli.SessionId)
|
cr.cache.SaveUserSession(userInfo.ID, cli.SessionId)
|
||||||
fmt.Println("66666666666666666666666666")
|
fmt.Println("66666666666666666666666666")
|
||||||
go cli.WriteWait()
|
go cli.WriteWait()
|
||||||
cli.Send <- WsMessageRegisterCallback(cli.ClientId, cli.SessionId)
|
cli.Send <- consts.WsMessageRegisterCallback(cli.ClientId, cli.SessionId)
|
||||||
fmt.Println("777777777777777777777777")
|
fmt.Println("777777777777777777777777")
|
||||||
// 处理websocket连接的逻辑
|
// 处理websocket连接的逻辑
|
||||||
ctx, _ := context.WithCancel(context.Background())
|
ctx, _ := context.WithCancel(context.Background())
|
||||||
@ -102,7 +109,7 @@ func (cr ChatHandler) Connection(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cr ChatHandler) NewMessage(c *gin.Context) {
|
func (cr ChatHandler) NewMessage(c *gin.Context) {
|
||||||
var request NewMessageRequest
|
var request dto.NewMessageRequest
|
||||||
if err := c.ShouldBindJSON(&request); err != nil {
|
if err := c.ShouldBindJSON(&request); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -122,90 +129,97 @@ func (cr ChatHandler) NewMessage(c *gin.Context) {
|
|||||||
service.ErrWithCode(c, code)
|
service.ErrWithCode(c, code)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Println("NewMessage 22222222222222222222222222222222222")
|
err := logic.NewMessage(c, &cr.cache, chatUser, request)
|
||||||
//存储入库
|
|
||||||
if chatUser.NickName != "" {
|
|
||||||
chatUser.NickName = fmt.Sprintf("未知用户(%d)", chatUser.ID)
|
|
||||||
}
|
|
||||||
fmt.Println("NewMessage 3333333333333333333333333333333333")
|
|
||||||
var data = accountFiee.ChatRecordData{
|
|
||||||
SessionId: request.SessionId,
|
|
||||||
UserId: chatUser.ID,
|
|
||||||
Name: chatUser.NickName,
|
|
||||||
Avatar: "",
|
|
||||||
MsgType: request.MsgType,
|
|
||||||
Content: request.Message.Text,
|
|
||||||
LocalStamp: request.LocalStamp,
|
|
||||||
Medias: nil,
|
|
||||||
}
|
|
||||||
if len(request.Message.Media) > 0 {
|
|
||||||
for _, media := range request.Message.Media {
|
|
||||||
data.Medias = append(data.Medias, &accountFiee.ChatMediaData{
|
|
||||||
ID: media.MediaId,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println("NewMessage 4444444444444444444444444444444444")
|
|
||||||
resp, err := service.AccountFieeProvider.CreateChatRecord(c, &data)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
service.Error(c, errors.New("创建失败"))
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Printf("CreateChatRecord resp:%+v\n", resp)
|
|
||||||
//录入缓存
|
//fmt.Println("NewMessage 22222222222222222222222222222222222")
|
||||||
err = cr.cache.AddChatRecord(request.SessionId, resp.Data)
|
////存储入库
|
||||||
if err != nil {
|
//if chatUser.NickName != "" {
|
||||||
service.Error(c, errors.New("创建失败"))
|
// chatUser.NickName = fmt.Sprintf("未知用户(%d)", chatUser.ID)
|
||||||
return
|
//}
|
||||||
}
|
//fmt.Println("NewMessage 3333333333333333333333333333333333")
|
||||||
fmt.Println("NewMessage 5 消息数量+1")
|
//var data = accountFiee.ChatRecordData{
|
||||||
//新消息数量统计+1
|
// SessionId: request.SessionId,
|
||||||
noticeUserId := ChatRoom.GetUserIdInSession(request.SessionId, chatUser.ID)
|
// UserId: chatUser.ID,
|
||||||
fmt.Println("NewMessage 5.1 消息数量配置结束")
|
// Name: chatUser.NickName,
|
||||||
fmt.Printf("noticeUserId %+v\n", noticeUserId)
|
// Avatar: "",
|
||||||
for _, userId := range noticeUserId {
|
// MsgType: request.MsgType,
|
||||||
fmt.Println("userId")
|
// Content: request.Message.Text,
|
||||||
cr.cache.IncreaseNewMessageTotal(userId, request.SessionId)
|
// LocalStamp: request.LocalStamp,
|
||||||
}
|
// Medias: nil,
|
||||||
fmt.Println("NewMessage 6")
|
//}
|
||||||
//发送websocket消息提醒通知
|
//if len(request.Message.Media) > 0 {
|
||||||
var notice = MessageListType{}
|
// for _, media := range request.Message.Media {
|
||||||
notice.BuildMessage(resp.Data)
|
// data.Medias = append(data.Medias, &accountFiee.ChatMediaData{
|
||||||
fmt.Printf("ws消息提醒:%+v\n", notice)
|
// ID: media.MediaId,
|
||||||
_, err = ChatRoom.SendSessionMessage(chatUser.ID, request.SessionId, ws.NewChatMsgType, notice)
|
// })
|
||||||
if err != nil {
|
|
||||||
log.Fatal("发送新消息通知失败", zap.Error(err), zap.Any("notice", notice))
|
|
||||||
}
|
|
||||||
fmt.Println("NewMessage 7 -end")
|
|
||||||
//发送app推送(无横幅推送)
|
|
||||||
//go func() {
|
|
||||||
// omitMessage := ""
|
|
||||||
// switch request.MsgType {
|
|
||||||
// case accountFiee.MsgType_TextMsgType:
|
|
||||||
// runMsg := []rune(request.Text)
|
|
||||||
// if len(runMsg) > 15 {
|
|
||||||
// omitMessage = string(runMsg[:15]) + "..."
|
|
||||||
// } else {
|
|
||||||
// omitMessage = request.Text
|
|
||||||
// }
|
// }
|
||||||
// case accountFiee.MsgType_ImageMsgType:
|
//}
|
||||||
// omitMessage = "[图片]"
|
//fmt.Println("NewMessage 4444444444444444444444444444444444")
|
||||||
// case accountFiee.MsgType_AudioMsgType:
|
//resp, err := service.AccountFieeProvider.CreateChatRecord(c, &data)
|
||||||
// omitMessage = "[音频]"
|
//if err != nil {
|
||||||
// case accountFiee.MsgType_VideoMsgType:
|
// service.Error(c, errors.New("创建失败"))
|
||||||
// omitMessage = "[视频]"
|
// return
|
||||||
// default:
|
//}
|
||||||
// omitMessage = "新消息请查收"
|
//fmt.Printf("CreateChatRecord resp:%+v\n", resp)
|
||||||
// }
|
////录入缓存
|
||||||
// for _, userId := range noticeUserId {
|
//err = cr.cache.AddChatRecord(request.SessionId, resp.Data)
|
||||||
// _ = asPusher.NewArtistinfoUniPush().NewChatMessageNotice(userId, omitMessage)
|
//if err != nil {
|
||||||
// }
|
// service.Error(c, errors.New("创建失败"))
|
||||||
//}()
|
// return
|
||||||
|
//}
|
||||||
|
//fmt.Println("NewMessage 5 消息数量+1")
|
||||||
|
////新消息数量统计+1
|
||||||
|
//noticeUserId := consts.ChatRoom.GetUserIdInSession(request.SessionId, chatUser.ID)
|
||||||
|
//fmt.Println("NewMessage 5.1 消息数量配置结束")
|
||||||
|
//fmt.Printf("noticeUserId %+v\n", noticeUserId)
|
||||||
|
//for _, userId := range noticeUserId {
|
||||||
|
// fmt.Println("userId")
|
||||||
|
// cr.cache.IncreaseNewMessageTotal(userId, request.SessionId)
|
||||||
|
//}
|
||||||
|
//fmt.Println("NewMessage 6")
|
||||||
|
////发送websocket消息提醒通知
|
||||||
|
//var notice = dto.MessageListType{}
|
||||||
|
//notice.BuildMessage(resp.Data)
|
||||||
|
//fmt.Printf("ws消息提醒:%+v\n", notice)
|
||||||
|
//_, err = consts.ChatRoom.SendSessionMessage(chatUser.ID, request.SessionId, ws.NewChatMsgType, notice)
|
||||||
|
//if err != nil {
|
||||||
|
// log.Print("发送新消息通知失败", zap.Error(err), zap.Any("notice", notice))
|
||||||
|
//}
|
||||||
|
//cr.robot.Listen(&data)
|
||||||
|
//fmt.Println("NewMessage 7 -end")
|
||||||
|
////发送app推送(无横幅推送)
|
||||||
|
////go func() {
|
||||||
|
//// omitMessage := ""
|
||||||
|
//// switch request.MsgType {
|
||||||
|
//// case accountFiee.MsgType_TextMsgType:
|
||||||
|
//// runMsg := []rune(request.Text)
|
||||||
|
//// if len(runMsg) > 15 {
|
||||||
|
//// omitMessage = string(runMsg[:15]) + "..."
|
||||||
|
//// } else {
|
||||||
|
//// omitMessage = request.Text
|
||||||
|
//// }
|
||||||
|
//// case accountFiee.MsgType_ImageMsgType:
|
||||||
|
//// omitMessage = "[图片]"
|
||||||
|
//// case accountFiee.MsgType_AudioMsgType:
|
||||||
|
//// omitMessage = "[音频]"
|
||||||
|
//// case accountFiee.MsgType_VideoMsgType:
|
||||||
|
//// omitMessage = "[视频]"
|
||||||
|
//// default:
|
||||||
|
//// omitMessage = "新消息请查收"
|
||||||
|
//// }
|
||||||
|
//// for _, userId := range noticeUserId {
|
||||||
|
//// _ = asPusher.NewArtistinfoUniPush().NewChatMessageNotice(userId, omitMessage)
|
||||||
|
//// }
|
||||||
|
////}()
|
||||||
service.Success(c)
|
service.Success(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cr ChatHandler) MessageList(c *gin.Context) {
|
func (cr ChatHandler) MessageList(c *gin.Context) {
|
||||||
var request MessageListRequest
|
var request dto.MessageListRequest
|
||||||
if err := c.ShouldBindJSON(&request); err != nil {
|
if err := c.ShouldBindJSON(&request); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
@ -223,7 +237,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
service.Error(c, errors.New("pageSize校验错误"))
|
service.Error(c, errors.New("pageSize校验错误"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var resp = make([]*MessageListType, 0)
|
var resp = make([]*dto.MessageListType, 0)
|
||||||
if request.CurrentId == 0 && request.Direction == 1 {
|
if request.CurrentId == 0 && request.Direction == 1 {
|
||||||
service.Success(c, resp)
|
service.Success(c, resp)
|
||||||
return
|
return
|
||||||
@ -259,12 +273,12 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
err := cr.cache.CoverChatRecord(request.SessionId, messages)
|
err := cr.cache.CoverChatRecord(request.SessionId, messages)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("设置消息已读失败", zap.Error(err))
|
log.Print("设置消息已读失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
for _, v := range messages {
|
for _, v := range messages {
|
||||||
_, err = service.AccountFieeProvider.SaveChatRecord(context.Background(), v)
|
_, err = service.AccountFieeProvider.SaveChatRecord(context.Background(), v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("设置消息已读失败", zap.Error(err))
|
log.Print("设置消息已读失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -284,7 +298,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
messages = recordResp.List
|
messages = recordResp.List
|
||||||
err = cr.cache.CoverChatRecord(request.SessionId, messages)
|
err = cr.cache.CoverChatRecord(request.SessionId, messages)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("覆盖聊天记录失败", zap.Error(err))
|
log.Print("覆盖聊天记录失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if request.Recent {
|
if request.Recent {
|
||||||
@ -300,7 +314,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnDataIdList = append(returnDataIdList, message.ID)
|
returnDataIdList = append(returnDataIdList, message.ID)
|
||||||
var msg = &MessageListType{}
|
var msg = &dto.MessageListType{}
|
||||||
msg.BuildMessage(message)
|
msg.BuildMessage(message)
|
||||||
resp = append(resp, msg)
|
resp = append(resp, msg)
|
||||||
}
|
}
|
||||||
@ -332,7 +346,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
total++
|
total++
|
||||||
returnDataIdList = append(returnDataIdList, message.ID)
|
returnDataIdList = append(returnDataIdList, message.ID)
|
||||||
var msg = &MessageListType{}
|
var msg = &dto.MessageListType{}
|
||||||
msg.BuildMessage(message)
|
msg.BuildMessage(message)
|
||||||
resp = append(resp, msg)
|
resp = append(resp, msg)
|
||||||
}
|
}
|
||||||
@ -344,7 +358,7 @@ func (cr ChatHandler) MessageList(c *gin.Context) {
|
|||||||
//优化空列表
|
//优化空列表
|
||||||
for i, v := range resp {
|
for i, v := range resp {
|
||||||
if v.Message.Media == nil {
|
if v.Message.Media == nil {
|
||||||
resp[i].Message.Media = []MessageMedia{}
|
resp[i].Message.Media = []dto.MessageMedia{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
service.Success(c, resp)
|
service.Success(c, resp)
|
||||||
@ -361,7 +375,7 @@ func (cr ChatHandler) Upload(c *gin.Context) {
|
|||||||
//获取文件对象
|
//获取文件对象
|
||||||
file, err := c.FormFile("file")
|
file, err := c.FormFile("file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("ERROR: upload file failed. ", zap.Error(err))
|
log.Print("ERROR: upload file failed. ", zap.Error(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
duration := c.PostForm("duration")
|
duration := c.PostForm("duration")
|
||||||
@ -400,7 +414,7 @@ func (cr ChatHandler) Upload(c *gin.Context) {
|
|||||||
//检查文件是否存在
|
//检查文件是否存在
|
||||||
checkResp, err := service.AccountFieeProvider.GetChatMediaList(c, &accountFiee.GetChatMediaListRequest{Query: &accountFiee.ChatMediaData{Md5: md5String}, Page: 1, PageSize: 1})
|
checkResp, err := service.AccountFieeProvider.GetChatMediaList(c, &accountFiee.GetChatMediaListRequest{Query: &accountFiee.ChatMediaData{Md5: md5String}, Page: 1, PageSize: 1})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("md5查询附件失败", zap.Error(err))
|
log.Print("md5查询附件失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
if checkResp.Total > 0 {
|
if checkResp.Total > 0 {
|
||||||
service.Success(c, checkResp.List[0])
|
service.Success(c, checkResp.List[0])
|
||||||
@ -483,13 +497,13 @@ func (cr ChatHandler) UserMessageStat(c *gin.Context) {
|
|||||||
reverse(result)
|
reverse(result)
|
||||||
service.Success(c, result)
|
service.Success(c, result)
|
||||||
}
|
}
|
||||||
func reverse(slice []UserMsgStatic) {
|
func reverse(slice []dto.UserMsgStatic) {
|
||||||
for i, j := 0, len(slice)-1; i < j; i, j = i+1, j-1 {
|
for i, j := 0, len(slice)-1; i < j; i, j = i+1, j-1 {
|
||||||
slice[i], slice[j] = slice[j], slice[i]
|
slice[i], slice[j] = slice[j], slice[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (cr ChatHandler) VoiceToText(c *gin.Context) {
|
func (cr ChatHandler) VoiceToText(c *gin.Context) {
|
||||||
var req VoiceToTextRequest
|
var req dto.VoiceToTextRequest
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
service.Error(c, err)
|
service.Error(c, err)
|
||||||
return
|
return
|
||||||
|
13
pkg/service/asChat/intreface.go
Normal file
13
pkg/service/asChat/intreface.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Package autoReply -----------------------------
|
||||||
|
// @file : intreface.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 16:15
|
||||||
|
// -------------------------------------------
|
||||||
|
package asChat
|
||||||
|
|
||||||
|
type IReplyRuler interface {
|
||||||
|
Name() string //规则名称
|
||||||
|
Check()
|
||||||
|
RunScript() string //运行脚本
|
||||||
|
}
|
86
pkg/service/asChat/logic/chat.go
Normal file
86
pkg/service/asChat/logic/chat.go
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// Package service -----------------------------
|
||||||
|
// @file : chat.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 19:04
|
||||||
|
// -------------------------------------------
|
||||||
|
package logic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"fonchain-fiee/api/accountFiee"
|
||||||
|
"fonchain-fiee/pkg/common/ws"
|
||||||
|
"fonchain-fiee/pkg/service"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/chatCache"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/consts"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/dto"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewMessage(ctx context.Context, cache *chatCache.ChatCache, chatUser *accountFiee.ChatUserData, request dto.NewMessageRequest) (err error) {
|
||||||
|
if request.SessionId == "" {
|
||||||
|
return errors.New("sessionId不能为空")
|
||||||
|
}
|
||||||
|
if request.MsgType == 0 {
|
||||||
|
return errors.New("msgType不能为空")
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 1111111111111111111111111111111")
|
||||||
|
fmt.Println("NewMessage 22222222222222222222222222222222222")
|
||||||
|
//存储入库
|
||||||
|
if chatUser.NickName != "" {
|
||||||
|
chatUser.NickName = fmt.Sprintf("未知用户(%d)", chatUser.ID)
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 3333333333333333333333333333333333")
|
||||||
|
var data = accountFiee.ChatRecordData{
|
||||||
|
SessionId: request.SessionId,
|
||||||
|
UserId: chatUser.ID,
|
||||||
|
Name: chatUser.NickName,
|
||||||
|
Avatar: "",
|
||||||
|
MsgType: request.MsgType,
|
||||||
|
Content: request.Message.Text,
|
||||||
|
LocalStamp: request.LocalStamp,
|
||||||
|
Medias: nil,
|
||||||
|
}
|
||||||
|
if len(request.Message.Media) > 0 {
|
||||||
|
for _, media := range request.Message.Media {
|
||||||
|
data.Medias = append(data.Medias, &accountFiee.ChatMediaData{
|
||||||
|
ID: media.MediaId,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 4444444444444444444444444444444444")
|
||||||
|
resp, err := service.AccountFieeProvider.CreateChatRecord(ctx, &data)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("消息发送失败")
|
||||||
|
}
|
||||||
|
fmt.Printf("CreateChatRecord resp:%+v\n", resp)
|
||||||
|
//录入缓存
|
||||||
|
err = cache.AddChatRecord(request.SessionId, resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("cache.AddChatRecord 失败:%v", err)
|
||||||
|
return errors.New("消息发送失败")
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 5 消息数量+1")
|
||||||
|
//新消息数量统计+1
|
||||||
|
noticeUserId := consts.ChatRoom.GetUserIdInSession(request.SessionId, chatUser.ID)
|
||||||
|
fmt.Println("NewMessage 5.1 消息数量配置结束")
|
||||||
|
fmt.Printf("noticeUserId %+v\n", noticeUserId)
|
||||||
|
for _, userId := range noticeUserId {
|
||||||
|
fmt.Println("userId")
|
||||||
|
cache.IncreaseNewMessageTotal(userId, request.SessionId)
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 6")
|
||||||
|
//发送websocket消息提醒通知
|
||||||
|
var notice = dto.MessageListType{}
|
||||||
|
notice.BuildMessage(resp.Data)
|
||||||
|
fmt.Printf("ws消息提醒:%+v\n", notice)
|
||||||
|
_, err = consts.ChatRoom.SendSessionMessage(chatUser.ID, request.SessionId, ws.NewChatMsgType, notice)
|
||||||
|
if err != nil {
|
||||||
|
log.Print("发送新消息通知失败", zap.Error(err), zap.Any("notice", notice))
|
||||||
|
}
|
||||||
|
fmt.Println("NewMessage 7 -end")
|
||||||
|
return nil
|
||||||
|
}
|
39
pkg/service/asChat/robot/KeywordsReplyRuler.go
Normal file
39
pkg/service/asChat/robot/KeywordsReplyRuler.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Package autoReply -----------------------------
|
||||||
|
// @file : KeywordsReplyRuler.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 16:21
|
||||||
|
// -------------------------------------------
|
||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 使用go开发一个自动回复功能,
|
||||||
|
// 一个自动回复消息有多种触发条件:
|
||||||
|
// 1. 关键词触发
|
||||||
|
// 2. 进入聊天系统后直接发送
|
||||||
|
// 3. 若干秒不回复自动发送
|
||||||
|
|
||||||
|
//func (k KeywordsRuleChecker) Do(sessionId string, response string, chatRoom *ws.ChatRoom) (err error) {
|
||||||
|
// var notice = dto.MessageListType{}
|
||||||
|
// notice.BuildMessage(response)
|
||||||
|
// _, err = chatRoom.SendSessionMessage(1, sessionId, ws.NewChatMsgType, notice)
|
||||||
|
// return nil
|
||||||
|
//}
|
||||||
|
|
||||||
|
type AutoReply struct {
|
||||||
|
Response string `json:"response"`
|
||||||
|
Rules map[string]IRule `json:"rules"`
|
||||||
|
}
|
||||||
|
type AutoReplyRule struct {
|
||||||
|
Enable bool `json:"enable"`
|
||||||
|
Keywords []string `json:"keywords"`
|
||||||
|
ReplyTimeout int `json:"replyTimeout"` // 回复超时时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type AutoReplyManager struct {
|
||||||
|
replies []AutoReply
|
||||||
|
lastMessage time.Time
|
||||||
|
}
|
84
pkg/service/asChat/robot/replyAndRuler.go
Normal file
84
pkg/service/asChat/robot/replyAndRuler.go
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
// Package robot -----------------------------
|
||||||
|
// @file : replyRuler.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 17:39
|
||||||
|
// -------------------------------------------
|
||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fonchain-fiee/api/accountFiee"
|
||||||
|
"fonchain-fiee/pkg/common/ws"
|
||||||
|
"fonchain-fiee/pkg/service"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/consts"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/dto"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Reply struct {
|
||||||
|
Response string
|
||||||
|
Rules []IRule
|
||||||
|
}
|
||||||
|
|
||||||
|
type IRule interface {
|
||||||
|
Hit(msg *accountFiee.ChatRecordData) (hit bool, runTime time.Time, logic func(robotId int64, response string) error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// KeywordsRuleChecker 关键字回复
|
||||||
|
type KeywordsRuleChecker struct {
|
||||||
|
Keywords []string `json:"keywords"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (k KeywordsRuleChecker) Hit(record *accountFiee.ChatRecordData) (hit bool, runTime time.Time, logic func(robotId int64, response string) error) {
|
||||||
|
for _, v := range k.Keywords {
|
||||||
|
if strings.Contains(record.Content, v) {
|
||||||
|
hit = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logic = func(robotId int64, response string) error {
|
||||||
|
var notice = dto.MessageListType{}
|
||||||
|
notice.BuildMessage(record)
|
||||||
|
_, err := consts.ChatRoom.SendSessionMessage(robotId, record.SessionId, ws.NewChatMsgType, notice)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户打开聊天会话直接发送
|
||||||
|
type ReplyWhenUserJoinSession struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (k ReplyWhenUserJoinSession) Hit(record *accountFiee.ChatRecordData, robotId int64) (hit bool, runTime time.Time, logic func(robotId int64, response string) error) {
|
||||||
|
queryRes, err := service.AccountFieeProvider.GetChatRecordList(context.Background(), &accountFiee.GetChatRecordListRequest{
|
||||||
|
Query: &accountFiee.ChatRecordData{
|
||||||
|
SessionId: record.SessionId,
|
||||||
|
},
|
||||||
|
Page: 1,
|
||||||
|
PageSize: 1,
|
||||||
|
Order: "created_at desc",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//如果最近一次的消息也是机器人发送的,就不再发送了
|
||||||
|
for i, v := range queryRes.List {
|
||||||
|
if i == 0 {
|
||||||
|
if v.UserId == robotId {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logic = func(robotId int64, response string) error {
|
||||||
|
var notice = dto.MessageListType{}
|
||||||
|
notice.BuildMessage(record)
|
||||||
|
_, err = consts.ChatRoom.SendSessionMessage(robotId, record.SessionId, ws.NewChatMsgType, notice)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
167
pkg/service/asChat/robot/robot.go
Normal file
167
pkg/service/asChat/robot/robot.go
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
// Package robot -----------------------------
|
||||||
|
// @file : robot.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 17:41
|
||||||
|
// -------------------------------------------
|
||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"fonchain-fiee/api/accountFiee"
|
||||||
|
"fonchain-fiee/pkg/common/ws"
|
||||||
|
"fonchain-fiee/pkg/service"
|
||||||
|
"fonchain-fiee/pkg/service/asChat/consts"
|
||||||
|
"log"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewRobot() *Robot {
|
||||||
|
ctx := context.Background()
|
||||||
|
robotQuery, err := service.AccountFieeProvider.GetChatUserList(ctx, &accountFiee.GetChatUserListRequest{
|
||||||
|
Query: &accountFiee.ChatUserData{Role: 3},
|
||||||
|
Page: 1, PageSize: 1,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic("聊天机器人初始化失败,err:" + err.Error())
|
||||||
|
}
|
||||||
|
var robotInfo *accountFiee.ChatUserData
|
||||||
|
if robotQuery.Total > 0 {
|
||||||
|
robotInfo = robotQuery.List[0]
|
||||||
|
} else {
|
||||||
|
robotInfo = &accountFiee.ChatUserData{
|
||||||
|
NickName: "阿泰",
|
||||||
|
Role: 3,
|
||||||
|
Origin: "fontree",
|
||||||
|
}
|
||||||
|
createChatUserResp, errs := service.AccountFieeProvider.CreateChatUser(ctx, robotInfo)
|
||||||
|
if errs != nil {
|
||||||
|
panic("聊天机器人创建失败,err:" + errs.Error())
|
||||||
|
}
|
||||||
|
robotInfo = createChatUserResp.Data
|
||||||
|
}
|
||||||
|
r := &Robot{
|
||||||
|
Info: robotInfo,
|
||||||
|
EventListener: &ws.EventListener{
|
||||||
|
Name: "robot1",
|
||||||
|
ListenEvents: []ws.ListenEvent{ //只监听消息推送事件
|
||||||
|
{ws.EventChatMessage, ws.EventProgressAfter},
|
||||||
|
},
|
||||||
|
Chan: make(ws.ListenEventChan),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
consts.ChatRoom.RegisterEventListener(r.EventListener)
|
||||||
|
go r.Run()
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
type Robot struct {
|
||||||
|
Info *accountFiee.ChatUserData //机器人信息
|
||||||
|
Rules []Reply //回复规则
|
||||||
|
DelayTask []RobotTask //演示任务
|
||||||
|
ticker *time.Ticker //定时器
|
||||||
|
stopChan chan struct{} //停止管道
|
||||||
|
isRunning bool //运行状态
|
||||||
|
mu sync.Mutex
|
||||||
|
*ws.EventListener
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Robot) Listen(record *accountFiee.ChatRecordData) {
|
||||||
|
for _, replyRules := range r.Rules {
|
||||||
|
for _, rule := range replyRules.Rules {
|
||||||
|
hit, runTime, function := rule.Hit(record)
|
||||||
|
if hit && function != nil {
|
||||||
|
if runTime.IsZero() {
|
||||||
|
go func() {
|
||||||
|
err := function(r.Info.ID, replyRules.Response)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("聊天机器人[%d]回复消息失败:%v", r.Info.ID, err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
} else {
|
||||||
|
r.mu.Lock()
|
||||||
|
r.DelayTask = append(r.DelayTask, RobotTask{
|
||||||
|
RunTime: runTime,
|
||||||
|
Run: function,
|
||||||
|
Response: replyRules.Response,
|
||||||
|
})
|
||||||
|
r.mu.Unlock()
|
||||||
|
// 添加任务后启动定时任务(如果未运行)
|
||||||
|
if !r.isRunning {
|
||||||
|
go r.Run()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Robot) Run() {
|
||||||
|
r.mu.Lock()
|
||||||
|
if r.isRunning {
|
||||||
|
r.mu.Unlock()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.isRunning = true
|
||||||
|
r.ticker = time.NewTicker(time.Second)
|
||||||
|
r.stopChan = make(chan struct{})
|
||||||
|
r.mu.Unlock()
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
r.mu.Lock()
|
||||||
|
r.isRunning = false
|
||||||
|
if r.ticker != nil {
|
||||||
|
r.ticker.Stop()
|
||||||
|
r.ticker = nil
|
||||||
|
}
|
||||||
|
r.stopChan = nil
|
||||||
|
r.mu.Unlock()
|
||||||
|
}()
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-r.ticker.C:
|
||||||
|
r.mu.Lock()
|
||||||
|
if len(r.DelayTask) == 0 {
|
||||||
|
r.mu.Unlock()
|
||||||
|
break
|
||||||
|
//return // 没有任务时退出
|
||||||
|
}
|
||||||
|
now := time.Now()
|
||||||
|
var remainingTasks []RobotTask
|
||||||
|
for _, task := range r.DelayTask {
|
||||||
|
if now.After(task.RunTime) {
|
||||||
|
// 执行任务
|
||||||
|
go func() {
|
||||||
|
err := task.Run(r.Info.ID, task.Response)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("聊天机器人[%d]回复消息失败:%v", r.Info.ID, err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
} else {
|
||||||
|
// 保留未到期的任务
|
||||||
|
remainingTasks = append(remainingTasks, task)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.DelayTask = remainingTasks
|
||||||
|
r.mu.Unlock()
|
||||||
|
case <-r.stopChan:
|
||||||
|
return
|
||||||
|
case event := <-r.EventListener.Chan:
|
||||||
|
fmt.Sprintf("listen event:%#v\n", event)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop 主动停止机器人的定时任务
|
||||||
|
func (r *Robot) Stop() {
|
||||||
|
r.mu.Lock()
|
||||||
|
if r.stopChan != nil {
|
||||||
|
close(r.stopChan)
|
||||||
|
}
|
||||||
|
r.mu.Unlock()
|
||||||
|
}
|
7
pkg/service/asChat/robot/rulerList.go
Normal file
7
pkg/service/asChat/robot/rulerList.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// Package autoReply -----------------------------
|
||||||
|
// @file : rulerList.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 16:16
|
||||||
|
// -------------------------------------------
|
||||||
|
package robot
|
15
pkg/service/asChat/robot/task.go
Normal file
15
pkg/service/asChat/robot/task.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Package robot -----------------------------
|
||||||
|
// @file : task.go
|
||||||
|
// @author : JJXu
|
||||||
|
// @contact : wavingbear@163.com
|
||||||
|
// @time : 2025/6/13 18:02
|
||||||
|
// -------------------------------------------
|
||||||
|
package robot
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
type RobotTask struct {
|
||||||
|
RunTime time.Time
|
||||||
|
Run func(robotId int64, response string) error
|
||||||
|
Response string
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user