converting hard-coded prefixes to calls to validators and authenticators

This commit is contained in:
or-else
2020-07-09 20:54:33 -07:00
parent 21b6d713e1
commit 0897120da3
14 changed files with 456 additions and 354 deletions

View File

@ -50,7 +50,7 @@ func (x AuthLevel) String() string {
return proto.EnumName(AuthLevel_name, int32(x))
}
func (AuthLevel) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{0}
return fileDescriptor_model_92588c8639c67d56, []int{0}
}
type InfoNote int32
@ -76,7 +76,7 @@ func (x InfoNote) String() string {
return proto.EnumName(InfoNote_name, int32(x))
}
func (InfoNote) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{1}
return fileDescriptor_model_92588c8639c67d56, []int{1}
}
// Plugin response codes
@ -111,7 +111,7 @@ func (x RespCode) String() string {
return proto.EnumName(RespCode_name, int32(x))
}
func (RespCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{2}
return fileDescriptor_model_92588c8639c67d56, []int{2}
}
type Crud int32
@ -137,7 +137,7 @@ func (x Crud) String() string {
return proto.EnumName(Crud_name, int32(x))
}
func (Crud) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{3}
return fileDescriptor_model_92588c8639c67d56, []int{3}
}
// What to delete, either "msg" to delete messages (default) or "topic" to delete the topic or "sub"
@ -171,7 +171,7 @@ func (x ClientDel_What) String() string {
return proto.EnumName(ClientDel_What_name, int32(x))
}
func (ClientDel_What) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{18, 0}
return fileDescriptor_model_92588c8639c67d56, []int{18, 0}
}
type ServerPres_What int32
@ -224,7 +224,7 @@ func (x ServerPres_What) String() string {
return proto.EnumName(ServerPres_What_name, int32(x))
}
func (ServerPres_What) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{27, 0}
return fileDescriptor_model_92588c8639c67d56, []int{27, 0}
}
// Dummy placeholder message.
@ -238,7 +238,7 @@ func (m *Unused) Reset() { *m = Unused{} }
func (m *Unused) String() string { return proto.CompactTextString(m) }
func (*Unused) ProtoMessage() {}
func (*Unused) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{0}
return fileDescriptor_model_92588c8639c67d56, []int{0}
}
func (m *Unused) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Unused.Unmarshal(m, b)
@ -271,7 +271,7 @@ func (m *DefaultAcsMode) Reset() { *m = DefaultAcsMode{} }
func (m *DefaultAcsMode) String() string { return proto.CompactTextString(m) }
func (*DefaultAcsMode) ProtoMessage() {}
func (*DefaultAcsMode) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{1}
return fileDescriptor_model_92588c8639c67d56, []int{1}
}
func (m *DefaultAcsMode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DefaultAcsMode.Unmarshal(m, b)
@ -320,7 +320,7 @@ func (m *AccessMode) Reset() { *m = AccessMode{} }
func (m *AccessMode) String() string { return proto.CompactTextString(m) }
func (*AccessMode) ProtoMessage() {}
func (*AccessMode) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{2}
return fileDescriptor_model_92588c8639c67d56, []int{2}
}
func (m *AccessMode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccessMode.Unmarshal(m, b)
@ -369,7 +369,7 @@ func (m *SetSub) Reset() { *m = SetSub{} }
func (m *SetSub) String() string { return proto.CompactTextString(m) }
func (*SetSub) ProtoMessage() {}
func (*SetSub) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{3}
return fileDescriptor_model_92588c8639c67d56, []int{3}
}
func (m *SetSub) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetSub.Unmarshal(m, b)
@ -411,8 +411,8 @@ type ClientCred struct {
Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
// Verification response
Response string `protobuf:"bytes,3,opt,name=response" json:"response,omitempty"`
// Request parameters, such as preferences.
Params []byte `protobuf:"bytes,4,opt,name=params,proto3" json:"params,omitempty"`
// Request parameters, such as preferences or country code.
Params map[string][]byte `protobuf:"bytes,4,rep,name=params" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -422,7 +422,7 @@ func (m *ClientCred) Reset() { *m = ClientCred{} }
func (m *ClientCred) String() string { return proto.CompactTextString(m) }
func (*ClientCred) ProtoMessage() {}
func (*ClientCred) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{4}
return fileDescriptor_model_92588c8639c67d56, []int{4}
}
func (m *ClientCred) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientCred.Unmarshal(m, b)
@ -463,7 +463,7 @@ func (m *ClientCred) GetResponse() string {
return ""
}
func (m *ClientCred) GetParams() []byte {
func (m *ClientCred) GetParams() map[string][]byte {
if m != nil {
return m.Params
}
@ -484,7 +484,7 @@ func (m *SetDesc) Reset() { *m = SetDesc{} }
func (m *SetDesc) String() string { return proto.CompactTextString(m) }
func (*SetDesc) ProtoMessage() {}
func (*SetDesc) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{5}
return fileDescriptor_model_92588c8639c67d56, []int{5}
}
func (m *SetDesc) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetDesc.Unmarshal(m, b)
@ -547,7 +547,7 @@ func (m *GetOpts) Reset() { *m = GetOpts{} }
func (m *GetOpts) String() string { return proto.CompactTextString(m) }
func (*GetOpts) ProtoMessage() {}
func (*GetOpts) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{6}
return fileDescriptor_model_92588c8639c67d56, []int{6}
}
func (m *GetOpts) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetOpts.Unmarshal(m, b)
@ -626,7 +626,7 @@ func (m *GetQuery) Reset() { *m = GetQuery{} }
func (m *GetQuery) String() string { return proto.CompactTextString(m) }
func (*GetQuery) ProtoMessage() {}
func (*GetQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{7}
return fileDescriptor_model_92588c8639c67d56, []int{7}
}
func (m *GetQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetQuery.Unmarshal(m, b)
@ -692,7 +692,7 @@ func (m *SetQuery) Reset() { *m = SetQuery{} }
func (m *SetQuery) String() string { return proto.CompactTextString(m) }
func (*SetQuery) ProtoMessage() {}
func (*SetQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{8}
return fileDescriptor_model_92588c8639c67d56, []int{8}
}
func (m *SetQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetQuery.Unmarshal(m, b)
@ -752,7 +752,7 @@ func (m *SeqRange) Reset() { *m = SeqRange{} }
func (m *SeqRange) String() string { return proto.CompactTextString(m) }
func (*SeqRange) ProtoMessage() {}
func (*SeqRange) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{9}
return fileDescriptor_model_92588c8639c67d56, []int{9}
}
func (m *SeqRange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SeqRange.Unmarshal(m, b)
@ -804,7 +804,7 @@ func (m *ClientHi) Reset() { *m = ClientHi{} }
func (m *ClientHi) String() string { return proto.CompactTextString(m) }
func (*ClientHi) ProtoMessage() {}
func (*ClientHi) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{10}
return fileDescriptor_model_92588c8639c67d56, []int{10}
}
func (m *ClientHi) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientHi.Unmarshal(m, b)
@ -903,7 +903,7 @@ func (m *ClientAcc) Reset() { *m = ClientAcc{} }
func (m *ClientAcc) String() string { return proto.CompactTextString(m) }
func (*ClientAcc) ProtoMessage() {}
func (*ClientAcc) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{11}
return fileDescriptor_model_92588c8639c67d56, []int{11}
}
func (m *ClientAcc) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientAcc.Unmarshal(m, b)
@ -1011,7 +1011,7 @@ func (m *ClientLogin) Reset() { *m = ClientLogin{} }
func (m *ClientLogin) String() string { return proto.CompactTextString(m) }
func (*ClientLogin) ProtoMessage() {}
func (*ClientLogin) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{12}
return fileDescriptor_model_92588c8639c67d56, []int{12}
}
func (m *ClientLogin) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientLogin.Unmarshal(m, b)
@ -1076,7 +1076,7 @@ func (m *ClientSub) Reset() { *m = ClientSub{} }
func (m *ClientSub) String() string { return proto.CompactTextString(m) }
func (*ClientSub) ProtoMessage() {}
func (*ClientSub) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{13}
return fileDescriptor_model_92588c8639c67d56, []int{13}
}
func (m *ClientSub) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientSub.Unmarshal(m, b)
@ -1138,7 +1138,7 @@ func (m *ClientLeave) Reset() { *m = ClientLeave{} }
func (m *ClientLeave) String() string { return proto.CompactTextString(m) }
func (*ClientLeave) ProtoMessage() {}
func (*ClientLeave) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{14}
return fileDescriptor_model_92588c8639c67d56, []int{14}
}
func (m *ClientLeave) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientLeave.Unmarshal(m, b)
@ -1195,7 +1195,7 @@ func (m *ClientPub) Reset() { *m = ClientPub{} }
func (m *ClientPub) String() string { return proto.CompactTextString(m) }
func (*ClientPub) ProtoMessage() {}
func (*ClientPub) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{15}
return fileDescriptor_model_92588c8639c67d56, []int{15}
}
func (m *ClientPub) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientPub.Unmarshal(m, b)
@ -1264,7 +1264,7 @@ func (m *ClientGet) Reset() { *m = ClientGet{} }
func (m *ClientGet) String() string { return proto.CompactTextString(m) }
func (*ClientGet) ProtoMessage() {}
func (*ClientGet) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{16}
return fileDescriptor_model_92588c8639c67d56, []int{16}
}
func (m *ClientGet) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientGet.Unmarshal(m, b)
@ -1319,7 +1319,7 @@ func (m *ClientSet) Reset() { *m = ClientSet{} }
func (m *ClientSet) String() string { return proto.CompactTextString(m) }
func (*ClientSet) ProtoMessage() {}
func (*ClientSet) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{17}
return fileDescriptor_model_92588c8639c67d56, []int{17}
}
func (m *ClientSet) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientSet.Unmarshal(m, b)
@ -1382,7 +1382,7 @@ func (m *ClientDel) Reset() { *m = ClientDel{} }
func (m *ClientDel) String() string { return proto.CompactTextString(m) }
func (*ClientDel) ProtoMessage() {}
func (*ClientDel) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{18}
return fileDescriptor_model_92588c8639c67d56, []int{18}
}
func (m *ClientDel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientDel.Unmarshal(m, b)
@ -1467,7 +1467,7 @@ func (m *ClientNote) Reset() { *m = ClientNote{} }
func (m *ClientNote) String() string { return proto.CompactTextString(m) }
func (*ClientNote) ProtoMessage() {}
func (*ClientNote) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{19}
return fileDescriptor_model_92588c8639c67d56, []int{19}
}
func (m *ClientNote) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientNote.Unmarshal(m, b)
@ -1533,7 +1533,7 @@ func (m *ClientMsg) Reset() { *m = ClientMsg{} }
func (m *ClientMsg) String() string { return proto.CompactTextString(m) }
func (*ClientMsg) ProtoMessage() {}
func (*ClientMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{20}
return fileDescriptor_model_92588c8639c67d56, []int{20}
}
func (m *ClientMsg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientMsg.Unmarshal(m, b)
@ -1933,7 +1933,7 @@ func (m *ServerCred) Reset() { *m = ServerCred{} }
func (m *ServerCred) String() string { return proto.CompactTextString(m) }
func (*ServerCred) ProtoMessage() {}
func (*ServerCred) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{21}
return fileDescriptor_model_92588c8639c67d56, []int{21}
}
func (m *ServerCred) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerCred.Unmarshal(m, b)
@ -1998,7 +1998,7 @@ func (m *TopicDesc) Reset() { *m = TopicDesc{} }
func (m *TopicDesc) String() string { return proto.CompactTextString(m) }
func (*TopicDesc) ProtoMessage() {}
func (*TopicDesc) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{22}
return fileDescriptor_model_92588c8639c67d56, []int{22}
}
func (m *TopicDesc) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TopicDesc.Unmarshal(m, b)
@ -2140,7 +2140,7 @@ func (m *TopicSub) Reset() { *m = TopicSub{} }
func (m *TopicSub) String() string { return proto.CompactTextString(m) }
func (*TopicSub) ProtoMessage() {}
func (*TopicSub) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{23}
return fileDescriptor_model_92588c8639c67d56, []int{23}
}
func (m *TopicSub) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TopicSub.Unmarshal(m, b)
@ -2277,7 +2277,7 @@ func (m *DelValues) Reset() { *m = DelValues{} }
func (m *DelValues) String() string { return proto.CompactTextString(m) }
func (*DelValues) ProtoMessage() {}
func (*DelValues) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{24}
return fileDescriptor_model_92588c8639c67d56, []int{24}
}
func (m *DelValues) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelValues.Unmarshal(m, b)
@ -2327,7 +2327,7 @@ func (m *ServerCtrl) Reset() { *m = ServerCtrl{} }
func (m *ServerCtrl) String() string { return proto.CompactTextString(m) }
func (*ServerCtrl) ProtoMessage() {}
func (*ServerCtrl) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{25}
return fileDescriptor_model_92588c8639c67d56, []int{25}
}
func (m *ServerCtrl) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerCtrl.Unmarshal(m, b)
@ -2403,7 +2403,7 @@ func (m *ServerData) Reset() { *m = ServerData{} }
func (m *ServerData) String() string { return proto.CompactTextString(m) }
func (*ServerData) ProtoMessage() {}
func (*ServerData) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{26}
return fileDescriptor_model_92588c8639c67d56, []int{26}
}
func (m *ServerData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerData.Unmarshal(m, b)
@ -2493,7 +2493,7 @@ func (m *ServerPres) Reset() { *m = ServerPres{} }
func (m *ServerPres) String() string { return proto.CompactTextString(m) }
func (*ServerPres) ProtoMessage() {}
func (*ServerPres) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{27}
return fileDescriptor_model_92588c8639c67d56, []int{27}
}
func (m *ServerPres) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerPres.Unmarshal(m, b)
@ -2601,7 +2601,7 @@ func (m *ServerMeta) Reset() { *m = ServerMeta{} }
func (m *ServerMeta) String() string { return proto.CompactTextString(m) }
func (*ServerMeta) ProtoMessage() {}
func (*ServerMeta) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{28}
return fileDescriptor_model_92588c8639c67d56, []int{28}
}
func (m *ServerMeta) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerMeta.Unmarshal(m, b)
@ -2685,7 +2685,7 @@ func (m *ServerInfo) Reset() { *m = ServerInfo{} }
func (m *ServerInfo) String() string { return proto.CompactTextString(m) }
func (*ServerInfo) ProtoMessage() {}
func (*ServerInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{29}
return fileDescriptor_model_92588c8639c67d56, []int{29}
}
func (m *ServerInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerInfo.Unmarshal(m, b)
@ -2753,7 +2753,7 @@ func (m *ServerMsg) Reset() { *m = ServerMsg{} }
func (m *ServerMsg) String() string { return proto.CompactTextString(m) }
func (*ServerMsg) ProtoMessage() {}
func (*ServerMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{30}
return fileDescriptor_model_92588c8639c67d56, []int{30}
}
func (m *ServerMsg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerMsg.Unmarshal(m, b)
@ -2992,7 +2992,7 @@ func (m *ServerResp) Reset() { *m = ServerResp{} }
func (m *ServerResp) String() string { return proto.CompactTextString(m) }
func (*ServerResp) ProtoMessage() {}
func (*ServerResp) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{31}
return fileDescriptor_model_92588c8639c67d56, []int{31}
}
func (m *ServerResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerResp.Unmarshal(m, b)
@ -3051,7 +3051,7 @@ func (m *Session) Reset() { *m = Session{} }
func (m *Session) String() string { return proto.CompactTextString(m) }
func (*Session) ProtoMessage() {}
func (*Session) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{32}
return fileDescriptor_model_92588c8639c67d56, []int{32}
}
func (m *Session) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Session.Unmarshal(m, b)
@ -3132,7 +3132,7 @@ func (m *ClientReq) Reset() { *m = ClientReq{} }
func (m *ClientReq) String() string { return proto.CompactTextString(m) }
func (*ClientReq) ProtoMessage() {}
func (*ClientReq) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{33}
return fileDescriptor_model_92588c8639c67d56, []int{33}
}
func (m *ClientReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClientReq.Unmarshal(m, b)
@ -3178,7 +3178,7 @@ func (m *SearchQuery) Reset() { *m = SearchQuery{} }
func (m *SearchQuery) String() string { return proto.CompactTextString(m) }
func (*SearchQuery) ProtoMessage() {}
func (*SearchQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{34}
return fileDescriptor_model_92588c8639c67d56, []int{34}
}
func (m *SearchQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SearchQuery.Unmarshal(m, b)
@ -3227,7 +3227,7 @@ func (m *SearchFound) Reset() { *m = SearchFound{} }
func (m *SearchFound) String() string { return proto.CompactTextString(m) }
func (*SearchFound) ProtoMessage() {}
func (*SearchFound) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{35}
return fileDescriptor_model_92588c8639c67d56, []int{35}
}
func (m *SearchFound) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SearchFound.Unmarshal(m, b)
@ -3281,7 +3281,7 @@ func (m *TopicEvent) Reset() { *m = TopicEvent{} }
func (m *TopicEvent) String() string { return proto.CompactTextString(m) }
func (*TopicEvent) ProtoMessage() {}
func (*TopicEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{36}
return fileDescriptor_model_92588c8639c67d56, []int{36}
}
func (m *TopicEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TopicEvent.Unmarshal(m, b)
@ -3338,7 +3338,7 @@ func (m *AccountEvent) Reset() { *m = AccountEvent{} }
func (m *AccountEvent) String() string { return proto.CompactTextString(m) }
func (*AccountEvent) ProtoMessage() {}
func (*AccountEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{37}
return fileDescriptor_model_92588c8639c67d56, []int{37}
}
func (m *AccountEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountEvent.Unmarshal(m, b)
@ -3411,7 +3411,7 @@ func (m *SubscriptionEvent) Reset() { *m = SubscriptionEvent{} }
func (m *SubscriptionEvent) String() string { return proto.CompactTextString(m) }
func (*SubscriptionEvent) ProtoMessage() {}
func (*SubscriptionEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{38}
return fileDescriptor_model_92588c8639c67d56, []int{38}
}
func (m *SubscriptionEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SubscriptionEvent.Unmarshal(m, b)
@ -3499,7 +3499,7 @@ func (m *MessageEvent) Reset() { *m = MessageEvent{} }
func (m *MessageEvent) String() string { return proto.CompactTextString(m) }
func (*MessageEvent) ProtoMessage() {}
func (*MessageEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_model_45d32aef7fcc5f78, []int{39}
return fileDescriptor_model_92588c8639c67d56, []int{39}
}
func (m *MessageEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MessageEvent.Unmarshal(m, b)
@ -3539,6 +3539,7 @@ func init() {
proto.RegisterType((*AccessMode)(nil), "pbx.AccessMode")
proto.RegisterType((*SetSub)(nil), "pbx.SetSub")
proto.RegisterType((*ClientCred)(nil), "pbx.ClientCred")
proto.RegisterMapType((map[string][]byte)(nil), "pbx.ClientCred.ParamsEntry")
proto.RegisterType((*SetDesc)(nil), "pbx.SetDesc")
proto.RegisterType((*GetOpts)(nil), "pbx.GetOpts")
proto.RegisterType((*GetQuery)(nil), "pbx.GetQuery")
@ -3942,172 +3943,172 @@ var _Plugin_serviceDesc = grpc.ServiceDesc{
Metadata: "model.proto",
}
func init() { proto.RegisterFile("model.proto", fileDescriptor_model_45d32aef7fcc5f78) }
func init() { proto.RegisterFile("model.proto", fileDescriptor_model_92588c8639c67d56) }
var fileDescriptor_model_45d32aef7fcc5f78 = []byte{
// 2614 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4f, 0x93, 0xe3, 0x56,
0x11, 0x1f, 0x59, 0xb2, 0x2c, 0xb5, 0xbd, 0xb3, 0xda, 0xc7, 0x92, 0x38, 0x13, 0x92, 0xcc, 0x2a,
0xff, 0xb6, 0x26, 0xc9, 0x42, 0xed, 0x12, 0x12, 0x20, 0x17, 0x67, 0xec, 0x9d, 0x19, 0xd8, 0x19,
0x0f, 0xf2, 0x4c, 0xb8, 0x50, 0xe5, 0x92, 0xa5, 0x67, 0x5b, 0x15, 0x59, 0xf2, 0x48, 0x4f, 0x4e,
0x72, 0xa1, 0x2a, 0x14, 0x17, 0x0e, 0x7c, 0x01, 0x2e, 0x7c, 0x01, 0x38, 0x43, 0xf1, 0x11, 0xe0,
0xc6, 0x95, 0x4f, 0xc0, 0x81, 0xe2, 0x03, 0x70, 0xa1, 0xfa, 0xfd, 0x91, 0x25, 0xcf, 0x78, 0x33,
0x09, 0xdc, 0xde, 0xeb, 0xee, 0xd7, 0xaf, 0x5f, 0xf7, 0xeb, 0xee, 0x9f, 0x9e, 0xa0, 0xbd, 0x48,
0x43, 0x1a, 0x3f, 0x5a, 0x66, 0x29, 0x4b, 0x89, 0xbe, 0x9c, 0x7c, 0xee, 0x5a, 0x60, 0x5e, 0x26,
0x45, 0x4e, 0x43, 0xf7, 0x43, 0xd8, 0xed, 0xd3, 0xa9, 0x5f, 0xc4, 0xac, 0x17, 0xe4, 0xa7, 0x69,
0x48, 0x09, 0x01, 0xc3, 0x2f, 0xd8, 0xbc, 0xab, 0xed, 0x6b, 0x0f, 0x6d, 0x8f, 0x8f, 0x39, 0x2d,
0x49, 0x93, 0x6e, 0x43, 0xd2, 0x92, 0x34, 0x71, 0x7f, 0x00, 0xd0, 0x0b, 0x02, 0x9a, 0x97, 0xab,
0x3e, 0xf3, 0x13, 0xa6, 0x56, 0xe1, 0x98, 0xdc, 0x87, 0xe6, 0x2c, 0x5a, 0x51, 0xb5, 0x4c, 0x4c,
0xdc, 0xf7, 0xc1, 0x1c, 0x51, 0x36, 0x2a, 0x26, 0xe4, 0x45, 0x68, 0x15, 0x39, 0xcd, 0xc6, 0x51,
0x28, 0x97, 0x99, 0x38, 0x3d, 0x09, 0x51, 0x19, 0x9a, 0xac, 0xb6, 0xc3, 0xb1, 0x9b, 0x00, 0x1c,
0xc6, 0x11, 0x4d, 0xd8, 0x61, 0x46, 0x43, 0xf2, 0x02, 0x98, 0x0b, 0xca, 0xe6, 0x69, 0xb9, 0x52,
0xcc, 0x70, 0xcb, 0x95, 0x1f, 0x17, 0x6a, 0xa9, 0x98, 0x90, 0x3d, 0xb0, 0x32, 0x9a, 0x2f, 0xd3,
0x24, 0xa7, 0x5d, 0x9d, 0x33, 0xca, 0x39, 0x6a, 0x5a, 0xfa, 0x99, 0xbf, 0xc8, 0xbb, 0xc6, 0xbe,
0xf6, 0xb0, 0xe3, 0xc9, 0x99, 0x7b, 0x05, 0xad, 0x11, 0x65, 0x7d, 0x9a, 0x07, 0xe4, 0xfb, 0xd0,
0x0e, 0x85, 0x8f, 0xc6, 0x7e, 0x90, 0xf3, 0x1d, 0xdb, 0x8f, 0xbf, 0xf5, 0x68, 0x39, 0xf9, 0xfc,
0x51, 0xdd, 0x77, 0x1e, 0x84, 0xe5, 0x9c, 0x2b, 0x2e, 0x26, 0x71, 0x14, 0x70, 0x5b, 0x50, 0x31,
0x9f, 0x91, 0x2e, 0xb4, 0x96, 0x59, 0xb4, 0xf2, 0x99, 0xb0, 0xa5, 0xe3, 0xa9, 0xa9, 0xfb, 0x47,
0x0d, 0x5a, 0x47, 0x94, 0x0d, 0x97, 0x2c, 0x27, 0x07, 0x70, 0x2f, 0x9a, 0x8e, 0x17, 0x69, 0x18,
0x4d, 0x23, 0x1a, 0x8e, 0xf3, 0x28, 0x09, 0x28, 0xdf, 0x59, 0xf7, 0xee, 0x46, 0xd3, 0x53, 0x49,
0x1f, 0x21, 0x19, 0xdd, 0x85, 0x8e, 0x53, 0xee, 0xc2, 0x31, 0x3a, 0x82, 0xa5, 0xcb, 0x28, 0x90,
0xe7, 0x15, 0x13, 0xf2, 0x12, 0x58, 0x5c, 0x13, 0xba, 0x1c, 0x8f, 0xdb, 0xf4, 0x5a, 0x7c, 0x7e,
0x12, 0x92, 0x97, 0xc1, 0x9e, 0xd0, 0x69, 0x9a, 0x71, 0x5e, 0x93, 0xf3, 0x2c, 0x41, 0x38, 0xe1,
0x6e, 0x8d, 0xa3, 0x45, 0xc4, 0xba, 0x26, 0x67, 0x88, 0x89, 0xfb, 0x2b, 0x0d, 0xac, 0x23, 0xca,
0x7e, 0x56, 0xd0, 0xec, 0x0b, 0x7e, 0x01, 0xe6, 0xfe, 0xfa, 0x02, 0xcc, 0x7d, 0x46, 0xf6, 0xc1,
0x08, 0x69, 0x2e, 0x1c, 0xd0, 0x7e, 0xdc, 0xe1, 0x1e, 0x93, 0x07, 0xf4, 0x38, 0x87, 0xbc, 0x0a,
0x7a, 0x5e, 0x4c, 0xb8, 0x91, 0x9b, 0x02, 0xc8, 0xe0, 0x1a, 0x7c, 0xe6, 0x73, 0x63, 0xaf, 0x6b,
0xf0, 0x99, 0xef, 0xfe, 0x5a, 0x03, 0x6b, 0xa4, 0x8c, 0x50, 0x1b, 0x6a, 0x15, 0x71, 0x19, 0x45,
0xb9, 0xe1, 0x2b, 0x62, 0x43, 0x61, 0x51, 0x5b, 0x09, 0x8c, 0x8a, 0x89, 0xd8, 0x8f, 0x80, 0xc1,
0xfc, 0x59, 0xde, 0xd5, 0xf7, 0x75, 0x3c, 0x05, 0x8e, 0xc9, 0xeb, 0x60, 0x04, 0x19, 0x0d, 0xa5,
0x0d, 0x77, 0xf9, 0x9a, 0xf5, 0x55, 0xf4, 0x38, 0xd3, 0x7d, 0x17, 0xad, 0xb8, 0xf2, 0xfc, 0x64,
0x46, 0x89, 0x03, 0x7a, 0x9c, 0x7e, 0xc6, 0x8d, 0x68, 0x7a, 0x38, 0x24, 0xbb, 0xd0, 0x98, 0x47,
0x7c, 0xd3, 0xa6, 0xd7, 0x98, 0x47, 0xee, 0x9f, 0x35, 0xb0, 0x84, 0x8a, 0xe3, 0x08, 0x99, 0x65,
0x06, 0x34, 0xa2, 0x90, 0xbc, 0x02, 0xc0, 0xd3, 0xc2, 0x9f, 0xd1, 0x84, 0xc9, 0xa0, 0xda, 0x48,
0xe9, 0x21, 0x01, 0xb5, 0xaf, 0x68, 0x26, 0xe3, 0x8a, 0x43, 0x0c, 0x5d, 0x48, 0x57, 0xd1, 0x3a,
0xac, 0xb6, 0x67, 0x09, 0x82, 0xc8, 0xa5, 0xd8, 0x4f, 0x66, 0x3c, 0xa4, 0xb6, 0xc7, 0xc7, 0x98,
0x0f, 0xcb, 0xd8, 0x67, 0xd3, 0x34, 0x5b, 0xf0, 0x88, 0xda, 0x5e, 0x39, 0x27, 0xaf, 0x02, 0x4c,
0xfc, 0xe0, 0xd3, 0x59, 0x96, 0x16, 0x49, 0xd8, 0x6d, 0xed, 0x6b, 0x0f, 0x2d, 0xaf, 0x42, 0x71,
0xbf, 0x6c, 0x80, 0x2d, 0x4c, 0xef, 0x05, 0xc1, 0x35, 0xdb, 0x2b, 0x29, 0xdd, 0xa8, 0xa5, 0xf4,
0x0b, 0x60, 0xe6, 0xc1, 0x9c, 0x2e, 0x54, 0x02, 0xca, 0x19, 0xa7, 0xd3, 0x20, 0xa3, 0x4c, 0xa5,
0x9f, 0x98, 0xf1, 0x1b, 0x97, 0xce, 0xa2, 0x84, 0xdb, 0x6d, 0x79, 0x62, 0x52, 0x86, 0xc7, 0xac,
0x84, 0x47, 0xc5, 0xbc, 0xb5, 0x35, 0xe6, 0x2a, 0x80, 0xd6, 0xbe, 0xbe, 0x35, 0x80, 0x22, 0x61,
0x3e, 0xa5, 0x49, 0xd7, 0xe6, 0x76, 0x88, 0x09, 0x52, 0x73, 0x86, 0xa9, 0x0a, 0x22, 0x8d, 0xf8,
0xc4, 0xcd, 0xa0, 0x2d, 0xd6, 0x3f, 0xe3, 0x56, 0x6d, 0x3a, 0x61, 0x7d, 0xd6, 0xc6, 0x96, 0xb3,
0xea, 0xb5, 0xb3, 0xae, 0x2f, 0xd8, 0x76, 0xfb, 0xdc, 0xdf, 0x68, 0xca, 0xef, 0x58, 0x3a, 0x37,
0xb7, 0x2c, 0xd3, 0xbd, 0x51, 0x4d, 0xf7, 0x03, 0xb0, 0x73, 0xca, 0xc6, 0x57, 0x98, 0x1b, 0x32,
0xc7, 0xee, 0x28, 0xff, 0xf0, 0x84, 0xf1, 0xac, 0x5c, 0xa5, 0xce, 0x01, 0xd8, 0xb3, 0x52, 0xd6,
0xa8, 0xc8, 0x1e, 0x95, 0xb2, 0x33, 0x39, 0x72, 0x4f, 0xca, 0xf3, 0x53, 0x7f, 0x45, 0x6f, 0x69,
0xcc, 0x7d, 0x68, 0x16, 0x89, 0x4a, 0x76, 0xcb, 0x13, 0x13, 0xf7, 0x6f, 0xe5, 0xb1, 0xce, 0x6f,
0x7d, 0xac, 0x17, 0xa1, 0x95, 0xa4, 0x63, 0x1a, 0xcc, 0x53, 0xa9, 0xcb, 0x4c, 0xd2, 0x41, 0x30,
0x4f, 0xc9, 0xbb, 0x60, 0xcc, 0xa9, 0xaf, 0x1c, 0xd9, 0xad, 0x38, 0xf2, 0xbc, 0x98, 0x3c, 0x3a,
0xa6, 0x7e, 0x38, 0x48, 0x58, 0xf6, 0x85, 0xc7, 0xa5, 0xb0, 0x10, 0x07, 0x69, 0xc2, 0x30, 0xc9,
0x9a, 0xa2, 0x10, 0xcb, 0xe9, 0xde, 0x07, 0x60, 0x97, 0xc2, 0x98, 0x6f, 0x9f, 0xd2, 0x2f, 0xa4,
0x51, 0x38, 0xac, 0x37, 0x99, 0x8e, 0x6c, 0x32, 0x3f, 0x6a, 0x7c, 0xa8, 0xb9, 0x9f, 0xa8, 0xc3,
0x1c, 0x51, 0x76, 0xcb, 0xc3, 0xbc, 0x0e, 0xcd, 0xeb, 0xf1, 0x29, 0x7d, 0x2e, 0x78, 0x6b, 0xbd,
0xa3, 0xff, 0x4d, 0xef, 0x68, 0x43, 0xef, 0x6f, 0xcb, 0x64, 0xee, 0xd3, 0xf8, 0x96, 0x8a, 0xdf,
0x96, 0x85, 0x1e, 0xf5, 0xee, 0xca, 0x36, 0x58, 0xea, 0x78, 0xf4, 0xf3, 0xb9, 0xcf, 0x64, 0xf5,
0x7f, 0x0b, 0x5a, 0x21, 0x8d, 0xc7, 0x39, 0xbd, 0x92, 0x01, 0x51, 0x36, 0x88, 0x32, 0xe9, 0x99,
0x21, 0x8d, 0x47, 0xf4, 0xaa, 0x5a, 0x33, 0x9a, 0xb5, 0x9a, 0xa1, 0xf2, 0xc2, 0x7c, 0x4e, 0xe1,
0xc5, 0x92, 0x30, 0xf7, 0x33, 0x55, 0xa9, 0xf8, 0xd8, 0xfd, 0x00, 0x0c, 0xb4, 0x83, 0xb4, 0x40,
0x3f, 0x1d, 0x1d, 0x39, 0x3b, 0xc4, 0x86, 0xe6, 0xc5, 0xf0, 0xfc, 0xe4, 0xd0, 0xd1, 0x90, 0x36,
0xba, 0xfc, 0xd8, 0x69, 0x10, 0x0b, 0x8c, 0xcb, 0xd1, 0xc0, 0x73, 0x74, 0x1c, 0x1d, 0x7a, 0x83,
0xbe, 0x63, 0xb8, 0xbf, 0x50, 0x20, 0xe3, 0x2c, 0x65, 0x74, 0x7d, 0x7e, 0xad, 0x7a, 0xfe, 0x07,
0xf2, 0xfc, 0x0d, 0x7e, 0x7e, 0x71, 0xa6, 0x93, 0x64, 0x9a, 0xe2, 0x12, 0x79, 0xf2, 0x6f, 0x63,
0xa2, 0x5f, 0xe1, 0x81, 0x74, 0xd1, 0x2f, 0x73, 0x7a, 0x75, 0x12, 0xba, 0xff, 0xd0, 0x95, 0xb7,
0x4f, 0xf3, 0x19, 0x79, 0x8d, 0xf7, 0x04, 0xad, 0x12, 0x1d, 0xd5, 0x11, 0x8e, 0x77, 0xb0, 0x49,
0x10, 0x17, 0x74, 0x3f, 0x50, 0xcd, 0x73, 0xb7, 0x22, 0xd1, 0x0b, 0x82, 0xe3, 0x1d, 0x0f, 0x99,
0xe4, 0xa1, 0x2a, 0x93, 0x22, 0xca, 0x4e, 0x45, 0x8a, 0xd7, 0xa6, 0xe3, 0x1d, 0x55, 0x3a, 0x5d,
0xd1, 0xf8, 0x8c, 0x6b, 0xda, 0x46, 0xc5, 0x04, 0xb5, 0x61, 0xf7, 0x43, 0x6d, 0x98, 0xd1, 0x3c,
0x0e, 0x1b, 0xda, 0x90, 0xce, 0xb5, 0xf1, 0x94, 0x77, 0x41, 0x5f, 0x16, 0x13, 0x19, 0x99, 0xdd,
0x7a, 0xa2, 0xa1, 0xb6, 0x65, 0x31, 0x41, 0x99, 0x19, 0x65, 0xb2, 0x2e, 0x57, 0x65, 0x8e, 0x28,
0x43, 0x99, 0x19, 0x65, 0xdc, 0x2a, 0xca, 0xba, 0xd6, 0x75, 0xab, 0x84, 0x4c, 0x2e, 0x64, 0x42,
0x1a, 0xf3, 0xba, 0x5c, 0x97, 0xe9, 0xd3, 0x18, 0x65, 0x42, 0x1a, 0x93, 0x37, 0xc1, 0x48, 0x52,
0x59, 0xa6, 0xeb, 0x57, 0x05, 0xc3, 0x72, 0xbc, 0xe3, 0x71, 0x36, 0xd9, 0x87, 0x4e, 0x9a, 0x8c,
0x27, 0x74, 0xee, 0xc7, 0xd3, 0x71, 0x3a, 0xed, 0xb6, 0x79, 0x60, 0x21, 0x4d, 0x3e, 0xe6, 0xa4,
0xe1, 0x94, 0xbc, 0x07, 0x80, 0x88, 0x77, 0x1c, 0xd3, 0x15, 0x8d, 0xbb, 0x1d, 0x1e, 0x63, 0xb1,
0x67, 0xaf, 0x60, 0xf3, 0x67, 0x48, 0xf5, 0x6c, 0x5f, 0x0d, 0x3f, 0xb6, 0xa1, 0x75, 0x4a, 0xf3,
0xdc, 0x9f, 0x51, 0xf7, 0x0c, 0x60, 0x44, 0xb3, 0x15, 0xcd, 0xbe, 0x01, 0x40, 0x25, 0x60, 0x84,
0x69, 0x42, 0x65, 0x39, 0xe3, 0x63, 0xf7, 0x3f, 0x0d, 0xb0, 0x2f, 0xf0, 0xc6, 0xf5, 0x05, 0x6e,
0x81, 0x20, 0xa3, 0x3e, 0xa3, 0xe1, 0x58, 0x82, 0x2c, 0xdd, 0xb3, 0x25, 0xa5, 0xc7, 0x38, 0x66,
0x58, 0x86, 0x8a, 0xdd, 0x10, 0x6c, 0x49, 0x11, 0x6c, 0x96, 0x16, 0xc1, 0x5c, 0xb0, 0x75, 0xc1,
0x96, 0x94, 0x1e, 0x23, 0xef, 0x80, 0x89, 0xc0, 0x35, 0xc8, 0xe5, 0xf5, 0xb8, 0x11, 0xdb, 0x4a,
0x11, 0xf2, 0x00, 0xaf, 0x65, 0x2e, 0xaf, 0x88, 0xf0, 0xf4, 0xfa, 0x3b, 0x00, 0x6f, 0x65, 0x5e,
0xb9, 0xff, 0x66, 0xe5, 0xfe, 0x63, 0xa2, 0x67, 0xd4, 0x0f, 0x91, 0xde, 0xe2, 0x74, 0x13, 0xa7,
0x8a, 0x11, 0xac, 0x90, 0x61, 0x29, 0x46, 0xb0, 0x3a, 0x09, 0x51, 0x11, 0x96, 0x90, 0x28, 0xe4,
0xd1, 0x6f, 0x7a, 0xcd, 0x90, 0xc6, 0x02, 0x4c, 0x48, 0x68, 0x0d, 0xdb, 0xa0, 0x75, 0xbb, 0x06,
0xad, 0xd7, 0x7d, 0xbc, 0x53, 0xe9, 0xe3, 0x1c, 0x0e, 0xe3, 0x00, 0x9d, 0x72, 0x87, 0x3b, 0xa5,
0xc5, 0xe7, 0x3d, 0xe6, 0xfe, 0x45, 0x07, 0x8b, 0x7b, 0x1f, 0xbb, 0x6d, 0xdd, 0xbb, 0xda, 0x0d,
0xde, 0x0d, 0x69, 0x4c, 0xeb, 0xce, 0x97, 0x94, 0x1e, 0x43, 0x6b, 0xd3, 0x24, 0x8e, 0xca, 0xf0,
0xca, 0x99, 0x72, 0xa4, 0xf1, 0x1c, 0x47, 0x56, 0x3c, 0xd6, 0xdc, 0xe6, 0x31, 0xb3, 0xe6, 0xb1,
0xb5, 0x6b, 0x5a, 0xdb, 0x5c, 0x63, 0xd5, 0x5d, 0x53, 0x29, 0xbf, 0x76, 0xad, 0xfc, 0x96, 0xe5,
0x0f, 0xaa, 0xe5, 0xaf, 0x7e, 0x95, 0xda, 0x9b, 0x57, 0x69, 0x1d, 0xfa, 0x4e, 0x35, 0xf4, 0xeb,
0x40, 0xde, 0xa9, 0x06, 0xf2, 0x0d, 0xd8, 0x8d, 0xfd, 0x9c, 0x8d, 0x73, 0x4a, 0x93, 0x31, 0x8b,
0x16, 0xb4, 0xbb, 0xcb, 0x15, 0x76, 0x90, 0x3a, 0xa2, 0x34, 0xb9, 0x88, 0x16, 0x94, 0x7c, 0x17,
0xee, 0xaf, 0xa5, 0x2a, 0xd0, 0xf8, 0x2e, 0xb7, 0xeb, 0x9e, 0x92, 0xbd, 0x54, 0x10, 0xd9, 0xfd,
0x09, 0xd8, 0x7d, 0x1a, 0x7f, 0x82, 0xa9, 0x95, 0x57, 0xb6, 0xd6, 0xaa, 0x5b, 0x57, 0xba, 0x53,
0xe3, 0x39, 0xdd, 0xc9, 0xfd, 0xab, 0x56, 0xe6, 0x35, 0xcb, 0x6e, 0xdb, 0x23, 0x09, 0x18, 0x01,
0x7e, 0xc0, 0x8a, 0xf2, 0xcf, 0xc7, 0x1c, 0xbb, 0xd2, 0xcf, 0x99, 0x04, 0xe8, 0x7c, 0x4c, 0x9e,
0x94, 0x1f, 0x9f, 0x4d, 0x6e, 0xc3, 0xcb, 0xd2, 0x06, 0xb5, 0xdd, 0xa3, 0x73, 0xce, 0x15, 0xa8,
0x45, 0x8a, 0xee, 0xfd, 0x10, 0xda, 0x15, 0xf2, 0xd7, 0xc2, 0x27, 0xbf, 0x6b, 0xa8, 0xc3, 0xf4,
0x7d, 0xe6, 0x6f, 0x69, 0x70, 0xfb, 0xd0, 0x99, 0x66, 0xe9, 0x62, 0x5c, 0x07, 0xf2, 0x80, 0xb4,
0x4b, 0x71, 0x33, 0xbe, 0x03, 0x36, 0x06, 0x2b, 0x67, 0xfe, 0x62, 0xc9, 0xef, 0x19, 0x5e, 0x01,
0x45, 0xd8, 0x48, 0x07, 0x7d, 0x33, 0x1d, 0xd6, 0x37, 0xc4, 0xa8, 0xde, 0x90, 0xf7, 0x24, 0x76,
0x13, 0x8e, 0x78, 0xa9, 0xe2, 0x08, 0x34, 0xf5, 0x79, 0xe0, 0xcd, 0xfc, 0x3f, 0x81, 0xb7, 0x3f,
0xe9, 0xca, 0x39, 0xe7, 0x19, 0xcd, 0xb7, 0x38, 0xc7, 0x01, 0x3d, 0xcf, 0x54, 0xb4, 0x71, 0x48,
0x1e, 0xd6, 0xf0, 0xd0, 0xfd, 0x8a, 0xe1, 0xa8, 0xa6, 0x0a, 0x88, 0xea, 0x1f, 0x76, 0xc6, 0xe6,
0x87, 0xdd, 0xda, 0x31, 0xcd, 0x9b, 0x53, 0xc7, 0xdc, 0x72, 0x7f, 0x5b, 0xcf, 0x43, 0x57, 0x6f,
0xc0, 0x2e, 0xf3, 0x33, 0x84, 0xf6, 0x2a, 0x9e, 0x16, 0xdf, 0xb8, 0x23, 0xa8, 0x32, 0xa2, 0x2e,
0xdc, 0xf1, 0x03, 0x96, 0x66, 0xe3, 0x7a, 0x29, 0x68, 0x73, 0xa2, 0x94, 0x91, 0xf5, 0x0a, 0xb6,
0xd7, 0x2b, 0xb7, 0x90, 0xc0, 0xcb, 0x84, 0xc6, 0xf0, 0xcc, 0xd9, 0x41, 0xb0, 0x35, 0x7c, 0xfa,
0xd4, 0xd1, 0x90, 0x70, 0xd9, 0x73, 0x74, 0x24, 0x5c, 0x9e, 0xf7, 0x1d, 0x03, 0x31, 0xd7, 0xd1,
0xf0, 0x6c, 0xe0, 0x34, 0x91, 0xd4, 0x3b, 0x1c, 0x39, 0x26, 0x92, 0x2e, 0x06, 0xde, 0xa9, 0xd3,
0x52, 0xb8, 0xcd, 0x42, 0x92, 0x37, 0xe8, 0xf5, 0x1d, 0x5b, 0x8c, 0x0e, 0x3f, 0x71, 0x00, 0x99,
0xfd, 0xc1, 0x33, 0xa7, 0xcd, 0xe5, 0x7b, 0x47, 0x23, 0xa7, 0xe3, 0xfe, 0xbd, 0xcc, 0xd1, 0x53,
0xca, 0xfc, 0x5b, 0xe6, 0xa8, 0x2b, 0xbf, 0x1b, 0xf5, 0x0a, 0xae, 0x28, 0xfb, 0xad, 0xfc, 0x72,
0x7c, 0x4d, 0x81, 0xa6, 0xb5, 0x83, 0x55, 0x53, 0x50, 0xef, 0x13, 0x1c, 0x9b, 0x34, 0x2b, 0x3a,
0xca, 0xca, 0x23, 0x90, 0xc9, 0x4d, 0x9f, 0xac, 0x0a, 0xd8, 0xb6, 0x2a, 0x1f, 0x7c, 0x6b, 0xec,
0x20, 0x3f, 0xf8, 0x7e, 0xa9, 0xce, 0x84, 0xe0, 0xf2, 0x1b, 0xa7, 0xea, 0x83, 0xda, 0xed, 0xfc,
0x0a, 0xb4, 0x5a, 0x4d, 0x48, 0xf7, 0xdf, 0x1a, 0xd8, 0xd2, 0xa9, 0xf9, 0x0c, 0x01, 0x56, 0xc0,
0xb2, 0x58, 0xe2, 0xd5, 0xbb, 0x1b, 0x75, 0x0a, 0x01, 0x16, 0xb2, 0x51, 0x8c, 0xbf, 0xd7, 0x34,
0xae, 0x89, 0x61, 0x16, 0xa3, 0x18, 0xb2, 0x51, 0x6c, 0x99, 0xd1, 0x5c, 0xfa, 0xfe, 0xee, 0x46,
0xce, 0xa0, 0x18, 0xb2, 0x51, 0x6c, 0x41, 0xcb, 0xd7, 0x9f, 0xaa, 0x18, 0xc6, 0x19, 0xc5, 0x90,
0x8d, 0x62, 0x51, 0x32, 0x4d, 0x6b, 0x90, 0x64, 0xed, 0x3a, 0x14, 0x8b, 0x6a, 0x2e, 0x34, 0x2b,
0x2e, 0xac, 0x22, 0xb8, 0x2f, 0xcb, 0x6b, 0xe4, 0xd1, 0x7c, 0x49, 0xde, 0x04, 0x13, 0xd1, 0x40,
0x21, 0x5e, 0xfc, 0x94, 0xf3, 0x90, 0x75, 0xc8, 0xf1, 0x90, 0x60, 0x92, 0xb7, 0xc0, 0xcc, 0xb3,
0xd5, 0x22, 0x9f, 0xd5, 0x90, 0x7a, 0xe9, 0x39, 0x4f, 0x72, 0xc9, 0x1b, 0xd0, 0x0c, 0x62, 0x14,
0xd3, 0xaf, 0x01, 0x59, 0x14, 0x13, 0x4c, 0xf7, 0x9f, 0x1a, 0xb4, 0x46, 0x34, 0xcf, 0xa3, 0x34,
0xc1, 0x7a, 0x91, 0x8b, 0xe1, 0xfa, 0x89, 0xd4, 0x96, 0x94, 0x93, 0xe7, 0xbc, 0xb5, 0xd4, 0x31,
0xac, 0xfe, 0x15, 0x18, 0x96, 0xbc, 0x06, 0xed, 0x8c, 0x2e, 0x52, 0x84, 0x41, 0x61, 0x98, 0xc9,
0xba, 0x04, 0x82, 0xd4, 0x0b, 0xc3, 0x6c, 0xa3, 0x6e, 0x35, 0x37, 0xeb, 0x56, 0xed, 0xf9, 0xc9,
0xdc, 0x78, 0x7e, 0xda, 0x03, 0x2b, 0xf6, 0x93, 0x59, 0xe1, 0xcf, 0x28, 0xef, 0x14, 0xb6, 0x57,
0xce, 0xdd, 0xa1, 0xfa, 0x1c, 0xf2, 0xe8, 0x15, 0x66, 0x12, 0x3a, 0x47, 0xbb, 0xd1, 0x39, 0xc8,
0x22, 0xfb, 0x60, 0xe0, 0xe1, 0x6b, 0xaf, 0x89, 0xd2, 0x55, 0x1e, 0xe7, 0xb8, 0x1f, 0x41, 0x7b,
0x44, 0xfd, 0x2c, 0x98, 0x8b, 0x27, 0x8d, 0xad, 0xef, 0xcb, 0xf7, 0xd5, 0xb7, 0xb1, 0x2c, 0x08,
0xe2, 0x63, 0xf8, 0x4a, 0xad, 0x7e, 0x9a, 0x16, 0x49, 0x78, 0xdb, 0xf0, 0xdf, 0xa8, 0x0b, 0x17,
0x67, 0x34, 0x2f, 0x62, 0xc6, 0x5f, 0x12, 0xaf, 0xd5, 0x0e, 0xc9, 0x74, 0x67, 0x00, 0x9c, 0x36,
0x58, 0xa1, 0x23, 0x1f, 0x80, 0xe9, 0x07, 0x2c, 0x4a, 0x13, 0xb9, 0xa3, 0x2d, 0xbc, 0x90, 0x15,
0xa1, 0x27, 0x19, 0x58, 0x4d, 0x12, 0xbf, 0x7c, 0x58, 0xe2, 0xe3, 0xdb, 0x14, 0x32, 0xf7, 0x0f,
0x1a, 0x74, 0x7a, 0x41, 0x90, 0x16, 0x09, 0xbb, 0xf5, 0x5e, 0x5b, 0xef, 0xd7, 0xc6, 0x7b, 0xb8,
0xfe, 0x75, 0xdf, 0xc3, 0x8d, 0x1a, 0x32, 0x55, 0x05, 0xd2, 0x5a, 0x17, 0x48, 0xf7, 0x5f, 0x1a,
0xdc, 0x1b, 0x15, 0x93, 0x3c, 0xc8, 0xa2, 0x25, 0xda, 0x72, 0x6b, 0x9b, 0xb7, 0x3e, 0x18, 0xa9,
0x93, 0xe8, 0xb5, 0x93, 0xac, 0x7b, 0xab, 0x51, 0xed, 0xad, 0x5f, 0x1f, 0x76, 0xbf, 0x2e, 0xff,
0x58, 0xb4, 0x6e, 0x6e, 0x8e, 0x9c, 0xb9, 0x1d, 0x83, 0xbb, 0x17, 0xd0, 0x91, 0x45, 0xe8, 0xd6,
0x27, 0x7d, 0x20, 0xf2, 0xe5, 0xe6, 0x42, 0xcb, 0x13, 0xe6, 0xe0, 0x09, 0xd8, 0x65, 0xc2, 0x63,
0xb7, 0x3c, 0xc3, 0x86, 0xbb, 0x83, 0xa3, 0xde, 0xd9, 0xf0, 0xcc, 0x01, 0x3e, 0xba, 0xbc, 0x38,
0x76, 0xee, 0xf3, 0xf6, 0x3a, 0x1c, 0x5e, 0x38, 0xaf, 0x1e, 0xbc, 0x05, 0x96, 0xea, 0x0f, 0x65,
0xfb, 0xdd, 0x29, 0xdb, 0x2f, 0xef, 0xe4, 0x3f, 0x3d, 0x77, 0x1a, 0x07, 0x1f, 0x81, 0xa5, 0x72,
0x81, 0x74, 0xc0, 0x3a, 0x1c, 0x9e, 0x5d, 0x9c, 0x9c, 0x5d, 0x4a, 0xfd, 0x7d, 0x6f, 0x78, 0xee,
0x68, 0xa4, 0x0d, 0x2d, 0x6f, 0x30, 0x3a, 0x1f, 0x9e, 0xf5, 0x9d, 0x86, 0x98, 0x9c, 0x3f, 0xeb,
0x1d, 0x0e, 0x1c, 0xfd, 0xe0, 0x00, 0x0c, 0x3c, 0x0d, 0x01, 0x30, 0x0f, 0xbd, 0x41, 0xef, 0x02,
0xd7, 0x01, 0x98, 0x97, 0xe7, 0x7d, 0x1c, 0x6b, 0x38, 0xee, 0x0f, 0x9e, 0x0d, 0x2e, 0x06, 0x4e,
0xe3, 0xf1, 0x8f, 0xc1, 0x38, 0xc3, 0x5d, 0x9e, 0x40, 0x5b, 0x3a, 0xe9, 0x59, 0x9a, 0x2e, 0xc9,
0x46, 0x8d, 0xd8, 0xdb, 0xa8, 0xbb, 0xee, 0xce, 0x43, 0xed, 0x7b, 0xda, 0xe3, 0xdf, 0x37, 0xc0,
0x3c, 0x8f, 0x8b, 0x59, 0x94, 0x90, 0xf7, 0xc0, 0x7a, 0x1a, 0x65, 0xf4, 0x38, 0xcd, 0x69, 0x6d,
0xb1, 0x47, 0xaf, 0xf6, 0xaa, 0x0e, 0xc4, 0x63, 0xb9, 0x3b, 0xe4, 0x5d, 0x30, 0x9e, 0x46, 0x49,
0x48, 0x1c, 0xc9, 0x2a, 0xeb, 0xca, 0x5e, 0x95, 0xc2, 0x6b, 0x85, 0xbb, 0x43, 0xde, 0x81, 0x96,
0xcc, 0x2f, 0x72, 0x4f, 0x45, 0xbf, 0xcc, 0xb6, 0x3d, 0xf1, 0xa3, 0x41, 0xfe, 0x72, 0xdb, 0x21,
0x6f, 0x43, 0x93, 0x27, 0x28, 0xb9, 0xbb, 0x4e, 0xd6, 0x1b, 0x05, 0xdf, 0x87, 0x4e, 0x35, 0x0d,
0xc8, 0x0b, 0x62, 0xe7, 0xcd, 0xcc, 0xd8, 0x5c, 0xf6, 0x4e, 0xd9, 0xd3, 0xa4, 0x31, 0xd5, 0xcb,
0xb5, 0x21, 0x3c, 0x31, 0xf9, 0x7f, 0xc1, 0x27, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x5d,
0xca, 0xd9, 0x26, 0x1c, 0x00, 0x00,
var fileDescriptor_model_92588c8639c67d56 = []byte{
// 2623 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4f, 0x93, 0xe3, 0x46,
0x15, 0x1f, 0x59, 0xb2, 0x2c, 0x3d, 0x7b, 0x67, 0xb5, 0xcd, 0x92, 0x38, 0x13, 0x92, 0xcc, 0x2a,
0xff, 0xa6, 0x26, 0xc9, 0x42, 0xed, 0x12, 0x12, 0x20, 0x17, 0x67, 0xec, 0x9d, 0x19, 0xd8, 0x19,
0x0f, 0xf2, 0x4c, 0xb8, 0x50, 0xe5, 0x92, 0xa5, 0x1e, 0x5b, 0x15, 0x59, 0xf2, 0x48, 0x2d, 0x27,
0xb9, 0x50, 0x15, 0x8a, 0x0b, 0x07, 0xbe, 0x00, 0x17, 0xbe, 0x00, 0x9c, 0xa1, 0xf8, 0x00, 0x1c,
0xe0, 0xc6, 0x95, 0x4f, 0xc0, 0x81, 0xe2, 0x03, 0x70, 0xa1, 0x5e, 0xff, 0x91, 0x25, 0xcf, 0x78,
0x33, 0x1b, 0x72, 0xeb, 0x7e, 0xef, 0xa9, 0xfb, 0xfd, 0xe9, 0xf7, 0xde, 0xaf, 0x5b, 0xd0, 0x9e,
0xa7, 0x21, 0x8d, 0x1f, 0x2e, 0xb2, 0x94, 0xa5, 0x44, 0x5f, 0x4c, 0x3e, 0x77, 0x2d, 0x30, 0x2f,
0x92, 0x22, 0xa7, 0xa1, 0xfb, 0x21, 0x6c, 0xf7, 0xe9, 0xa5, 0x5f, 0xc4, 0xac, 0x17, 0xe4, 0x27,
0x69, 0x48, 0x09, 0x01, 0xc3, 0x2f, 0xd8, 0xac, 0xab, 0xed, 0x6a, 0x7b, 0xb6, 0xc7, 0xc7, 0x9c,
0x96, 0xa4, 0x49, 0xb7, 0x21, 0x69, 0x49, 0x9a, 0xb8, 0x3f, 0x00, 0xe8, 0x05, 0x01, 0xcd, 0xcb,
0xaf, 0x3e, 0xf3, 0x13, 0xa6, 0xbe, 0xc2, 0x31, 0xb9, 0x0f, 0xcd, 0x69, 0xb4, 0xa4, 0xea, 0x33,
0x31, 0x71, 0xdf, 0x07, 0x73, 0x44, 0xd9, 0xa8, 0x98, 0x90, 0x17, 0xa1, 0x55, 0xe4, 0x34, 0x1b,
0x47, 0xa1, 0xfc, 0xcc, 0xc4, 0xe9, 0x71, 0x88, 0x8b, 0xa1, 0xca, 0x6a, 0x3b, 0x1c, 0xbb, 0x7f,
0xd5, 0x00, 0x0e, 0xe2, 0x88, 0x26, 0xec, 0x20, 0xa3, 0x21, 0x79, 0x01, 0xcc, 0x39, 0x65, 0xb3,
0xb4, 0xfc, 0x54, 0xcc, 0x70, 0xcf, 0xa5, 0x1f, 0x17, 0xea, 0x5b, 0x31, 0x21, 0x3b, 0x60, 0x65,
0x34, 0x5f, 0xa4, 0x49, 0x4e, 0xbb, 0x3a, 0x67, 0x94, 0x73, 0xf2, 0x18, 0xcc, 0x85, 0x9f, 0xf9,
0xf3, 0xbc, 0x6b, 0xec, 0xea, 0x7b, 0xed, 0x47, 0x2f, 0x3f, 0x5c, 0x4c, 0x3e, 0x7f, 0xb8, 0xda,
0xea, 0xe1, 0x19, 0xe7, 0x0e, 0x12, 0x96, 0x7d, 0xe1, 0x49, 0xd1, 0x9d, 0x1f, 0x42, 0xbb, 0x42,
0x26, 0x0e, 0xe8, 0x9f, 0xd2, 0x2f, 0xa4, 0x2a, 0x38, 0xac, 0xeb, 0xd1, 0x91, 0x7a, 0xfc, 0xa8,
0xf1, 0xa1, 0xe6, 0x5e, 0x41, 0x6b, 0x44, 0x59, 0x9f, 0xe6, 0x01, 0xf9, 0x3e, 0xb4, 0x43, 0xe1,
0xfc, 0xb1, 0x1f, 0xe4, 0xfc, 0xf3, 0xf6, 0xa3, 0x6f, 0xf1, 0xfd, 0xeb, 0x41, 0xf1, 0x20, 0x2c,
0xe7, 0x68, 0xfa, 0xa2, 0x98, 0xc4, 0x51, 0x20, 0xd7, 0x96, 0x33, 0xd2, 0x85, 0xd6, 0x22, 0x8b,
0x96, 0x3e, 0x13, 0x36, 0x76, 0x3c, 0x35, 0x75, 0xff, 0xa8, 0x41, 0xeb, 0x90, 0xb2, 0xe1, 0x82,
0xe5, 0x64, 0x1f, 0xee, 0x45, 0x97, 0xe3, 0x79, 0x1a, 0x46, 0x97, 0x11, 0x0d, 0xc7, 0x79, 0x94,
0x04, 0x94, 0xef, 0xac, 0x7b, 0x77, 0xa3, 0xcb, 0x13, 0x49, 0x1f, 0x21, 0x19, 0xe3, 0x80, 0x11,
0x51, 0x71, 0xc0, 0x31, 0x1a, 0xc6, 0xd2, 0x45, 0x14, 0x48, 0x3f, 0x8a, 0x09, 0x79, 0x09, 0x2c,
0xbe, 0x12, 0xc6, 0xd2, 0xd8, 0xd5, 0xf6, 0x9a, 0x5e, 0x8b, 0xcf, 0x8f, 0x43, 0xf2, 0x32, 0xd8,
0x13, 0x7a, 0x99, 0x66, 0x9c, 0xd7, 0xe4, 0x3c, 0x4b, 0x10, 0x8e, 0x79, 0xb8, 0xe2, 0x68, 0x1e,
0xb1, 0xae, 0xc9, 0x19, 0x62, 0xe2, 0xfe, 0x4a, 0x03, 0xeb, 0x90, 0xb2, 0x9f, 0x15, 0x34, 0xfb,
0x82, 0x9f, 0xac, 0x99, 0xbf, 0x3a, 0x59, 0x33, 0x9f, 0x91, 0x5d, 0x30, 0x42, 0x9a, 0x0b, 0x07,
0xb4, 0x1f, 0x75, 0xb8, 0xc7, 0xa4, 0x81, 0x1e, 0xe7, 0x90, 0x57, 0x41, 0xcf, 0x8b, 0x09, 0x57,
0x72, 0x5d, 0x00, 0x19, 0x7c, 0x05, 0x9f, 0xf9, 0x5c, 0xd9, 0xeb, 0x2b, 0xf8, 0xcc, 0x77, 0x7f,
0xad, 0x81, 0x35, 0x52, 0x4a, 0xa8, 0x0d, 0xb5, 0x8a, 0xb8, 0x8c, 0xa2, 0xdc, 0xf0, 0x15, 0xb1,
0xa1, 0xd0, 0xa8, 0xad, 0x04, 0x46, 0xc5, 0x44, 0xec, 0x47, 0xc0, 0x60, 0xfe, 0x34, 0xef, 0xea,
0xbb, 0x3a, 0x5a, 0x81, 0x63, 0xf2, 0x3a, 0x18, 0x41, 0x46, 0x43, 0xa9, 0xc3, 0xdd, 0xb5, 0x73,
0xe7, 0x71, 0xa6, 0xfb, 0x2e, 0x6a, 0x71, 0xe5, 0xf9, 0xc9, 0x94, 0xe2, 0x31, 0x8b, 0xd3, 0xcf,
0xb8, 0x12, 0x4d, 0x0f, 0x87, 0x64, 0x1b, 0x1a, 0xb3, 0x88, 0x6f, 0xda, 0xf4, 0x1a, 0xb3, 0xc8,
0xfd, 0xb3, 0x06, 0x96, 0x58, 0xe2, 0x28, 0x42, 0x66, 0x99, 0x5a, 0x8d, 0x28, 0x24, 0xaf, 0x00,
0xf0, 0x7c, 0xf3, 0xa7, 0x34, 0x61, 0x32, 0xa8, 0x36, 0x52, 0x7a, 0x48, 0xc0, 0xd5, 0x97, 0x34,
0x93, 0x71, 0xc5, 0x21, 0x86, 0x2e, 0xa4, 0xcb, 0x68, 0x15, 0x56, 0xdb, 0xb3, 0x04, 0x41, 0x24,
0x69, 0xec, 0x27, 0x53, 0x1e, 0x52, 0xdb, 0xe3, 0x63, 0xcc, 0xb3, 0x45, 0xec, 0xb3, 0xcb, 0x34,
0x9b, 0xf3, 0x88, 0xda, 0x5e, 0x39, 0x27, 0xaf, 0x02, 0x4c, 0xfc, 0xe0, 0xd3, 0x69, 0x96, 0x16,
0x49, 0xd8, 0x6d, 0xed, 0x6a, 0x7b, 0x96, 0x57, 0xa1, 0xb8, 0x5f, 0x36, 0xc0, 0x16, 0xaa, 0xf7,
0x82, 0xe0, 0x9a, 0xee, 0x95, 0x5a, 0xd1, 0xa8, 0xd5, 0x8a, 0x17, 0xc0, 0xcc, 0x83, 0x19, 0x9d,
0xab, 0xc4, 0x96, 0x33, 0x4e, 0xa7, 0x41, 0x46, 0x19, 0x57, 0xbc, 0xe3, 0xc9, 0x19, 0x3f, 0x71,
0xe9, 0x34, 0x4a, 0xb8, 0xde, 0x96, 0x27, 0x26, 0x65, 0x78, 0xcc, 0x4a, 0x78, 0x54, 0xcc, 0x5b,
0x1b, 0x63, 0xae, 0x02, 0x68, 0xf1, 0xc2, 0x71, 0x73, 0x00, 0x45, 0xc2, 0x7c, 0x4a, 0x93, 0xae,
0x2d, 0x2a, 0x01, 0x9f, 0x20, 0x35, 0x67, 0x98, 0xaa, 0x20, 0xd2, 0x88, 0x4f, 0xdc, 0x0c, 0xda,
0xe2, 0xfb, 0xa7, 0x5c, 0xab, 0x75, 0x27, 0xac, 0x6c, 0x6d, 0x6c, 0xb0, 0x55, 0xaf, 0xd9, 0xba,
0x3a, 0x60, 0x9b, 0xf5, 0x73, 0x7f, 0xa3, 0x29, 0xbf, 0x63, 0x4d, 0x5e, 0xdf, 0xb2, 0x4c, 0xf7,
0x46, 0x35, 0xdd, 0xf7, 0xc1, 0xce, 0x29, 0x1b, 0x5f, 0x61, 0x6e, 0xc8, 0x1c, 0xbb, 0xa3, 0xfc,
0xc3, 0x13, 0xc6, 0xb3, 0x72, 0x95, 0x3a, 0xfb, 0x60, 0x4f, 0x4b, 0x59, 0xa3, 0x22, 0x7b, 0x58,
0xca, 0x4e, 0xe5, 0xc8, 0x3d, 0x2e, 0xed, 0xa7, 0xfe, 0x92, 0xde, 0x52, 0x99, 0xfb, 0xd0, 0x2c,
0x12, 0x95, 0xec, 0x96, 0x27, 0x26, 0xee, 0xdf, 0x4b, 0xb3, 0xce, 0x6e, 0x6d, 0xd6, 0x8b, 0xd0,
0x4a, 0xd2, 0x31, 0x0d, 0x66, 0xa9, 0x5c, 0xcb, 0x4c, 0xd2, 0x41, 0x30, 0x4b, 0xc9, 0xbb, 0x60,
0xcc, 0xa8, 0xaf, 0x1c, 0xd9, 0xad, 0x38, 0xf2, 0xac, 0x98, 0x3c, 0x3c, 0xa2, 0x7e, 0x28, 0xda,
0x03, 0x97, 0xc2, 0x42, 0x1c, 0xa4, 0x09, 0xc3, 0x24, 0x6b, 0x8a, 0x42, 0x2c, 0xa7, 0x3b, 0x1f,
0x80, 0x5d, 0x0a, 0x3f, 0x57, 0xd3, 0xf8, 0x44, 0x19, 0x73, 0x48, 0xd9, 0x2d, 0x8d, 0x79, 0x1d,
0x9a, 0xd7, 0xe3, 0x53, 0xfa, 0x5c, 0xf0, 0x56, 0xeb, 0x8e, 0xfe, 0xbf, 0x75, 0x47, 0x6b, 0xeb,
0xfe, 0xb6, 0x4c, 0xe6, 0x3e, 0x8d, 0x6f, 0xb9, 0xf0, 0xdb, 0xb2, 0xd0, 0xe3, 0xba, 0xdb, 0xb2,
0x0d, 0x96, 0x6b, 0x3c, 0xfc, 0xf9, 0xcc, 0x67, 0xb2, 0xfa, 0xbf, 0x05, 0xad, 0x90, 0xc6, 0xe3,
0x9c, 0x5e, 0xc9, 0x80, 0x28, 0x1d, 0x44, 0x99, 0xf4, 0xcc, 0x90, 0xc6, 0x23, 0x7a, 0x55, 0xad,
0x19, 0xcd, 0x5a, 0xcd, 0x50, 0x79, 0x61, 0x3e, 0xa3, 0xf0, 0x62, 0x49, 0x98, 0xf9, 0x99, 0xaa,
0x54, 0x7c, 0xec, 0x7e, 0x00, 0x06, 0xea, 0x41, 0x5a, 0xa0, 0x9f, 0x8c, 0x0e, 0x9d, 0x2d, 0x62,
0x43, 0xf3, 0x7c, 0x78, 0x76, 0x7c, 0xe0, 0x68, 0x48, 0x1b, 0x5d, 0x7c, 0xec, 0x34, 0x88, 0x05,
0xc6, 0xc5, 0x68, 0xe0, 0x39, 0x3a, 0x8e, 0x0e, 0xbc, 0x41, 0xdf, 0x31, 0xdc, 0x5f, 0x28, 0xf0,
0x72, 0x9a, 0x32, 0xba, 0xb2, 0x5f, 0xab, 0xda, 0xff, 0x40, 0xda, 0xdf, 0xe0, 0xf6, 0x0b, 0x9b,
0x8e, 0x93, 0xcb, 0x14, 0x3f, 0x91, 0x96, 0x7f, 0x1b, 0x13, 0xfd, 0x0a, 0x0d, 0xd2, 0x45, 0xbf,
0xcc, 0xe9, 0xd5, 0x71, 0xe8, 0xfe, 0x53, 0x57, 0xde, 0x3e, 0xc9, 0xa7, 0xe4, 0x35, 0xde, 0x13,
0xb4, 0x4a, 0x74, 0x54, 0x47, 0x38, 0xda, 0xc2, 0x26, 0x41, 0x5c, 0xd0, 0xfd, 0x40, 0x35, 0xcf,
0xed, 0x8a, 0x44, 0x2f, 0x08, 0x8e, 0xb6, 0x3c, 0x64, 0x92, 0x3d, 0x55, 0x26, 0x45, 0x94, 0x9d,
0x8a, 0x14, 0xaf, 0x4d, 0x47, 0x5b, 0xaa, 0x74, 0xba, 0xa2, 0xf1, 0x19, 0xd7, 0x56, 0x1b, 0x15,
0x13, 0x5c, 0x0d, 0xbb, 0x1f, 0xae, 0x86, 0x19, 0xcd, 0xe3, 0xb0, 0xb6, 0x1a, 0xd2, 0xf9, 0x6a,
0x3c, 0xe5, 0x5d, 0xd0, 0x17, 0xc5, 0x44, 0x46, 0x66, 0xbb, 0x9e, 0x68, 0xb8, 0xda, 0xa2, 0x98,
0xa0, 0xcc, 0x94, 0x32, 0x59, 0x97, 0xab, 0x32, 0x87, 0x94, 0xa1, 0xcc, 0x94, 0x32, 0xae, 0x15,
0x65, 0x5d, 0xeb, 0xba, 0x56, 0x42, 0x26, 0x17, 0x32, 0x21, 0x8d, 0x79, 0x5d, 0xae, 0xcb, 0xf4,
0x69, 0x8c, 0x32, 0x21, 0x8d, 0xc9, 0x9b, 0x60, 0x24, 0xa9, 0x2c, 0xd3, 0xf5, 0xa3, 0x82, 0x61,
0x39, 0xda, 0xf2, 0x38, 0x9b, 0xec, 0x42, 0x27, 0x4d, 0xc6, 0x13, 0x3a, 0xf3, 0xe3, 0xcb, 0x71,
0x7a, 0xd9, 0x6d, 0xf3, 0xc0, 0x42, 0x9a, 0x7c, 0xcc, 0x49, 0xc3, 0x4b, 0xf2, 0x1e, 0x00, 0x42,
0xe9, 0x71, 0x4c, 0x97, 0x34, 0xee, 0x76, 0x78, 0x8c, 0xc5, 0x9e, 0xbd, 0x82, 0xcd, 0x9e, 0x22,
0xd5, 0xb3, 0x7d, 0x35, 0xfc, 0xd8, 0x86, 0xd6, 0x09, 0xcd, 0x73, 0x7f, 0x4a, 0xdd, 0x53, 0x80,
0x11, 0xcd, 0x96, 0x34, 0xfb, 0x1a, 0xc0, 0x97, 0x80, 0x11, 0xa6, 0x09, 0x95, 0xe5, 0x8c, 0x8f,
0xdd, 0xff, 0x36, 0xc0, 0x3e, 0xc7, 0x13, 0xd7, 0x17, 0xb8, 0x05, 0x82, 0x8c, 0xfa, 0x8c, 0x86,
0x63, 0x09, 0xb2, 0x74, 0xcf, 0x96, 0x94, 0x1e, 0xe3, 0x98, 0x61, 0x11, 0x2a, 0x76, 0x43, 0xb0,
0x25, 0x45, 0xb0, 0x59, 0x5a, 0x04, 0x33, 0xc1, 0xd6, 0x05, 0x5b, 0x52, 0x7a, 0x8c, 0xbc, 0x03,
0x26, 0x02, 0xd7, 0x20, 0x97, 0xc7, 0xe3, 0x46, 0x6c, 0x2b, 0x45, 0xc8, 0x03, 0x3c, 0x96, 0xb9,
0x3c, 0x22, 0xc2, 0xd3, 0xab, 0x0b, 0x06, 0x9e, 0xca, 0xbc, 0x72, 0xfe, 0xcd, 0xca, 0xf9, 0xc7,
0x44, 0xcf, 0xa8, 0x1f, 0x22, 0xbd, 0xc5, 0xe9, 0x26, 0x4e, 0x15, 0x23, 0x58, 0x22, 0xc3, 0x52,
0x8c, 0x60, 0x79, 0x1c, 0xe2, 0x42, 0x58, 0x42, 0xa2, 0x90, 0x47, 0xbf, 0xe9, 0x35, 0x43, 0x1a,
0x0b, 0x30, 0x21, 0xa1, 0x35, 0x6c, 0x82, 0xd6, 0xed, 0x1a, 0xb4, 0x5e, 0xf5, 0xf1, 0x4e, 0xa5,
0x8f, 0x73, 0x38, 0x8c, 0x03, 0x74, 0xca, 0x1d, 0xee, 0x94, 0x16, 0x9f, 0xf7, 0x98, 0xfb, 0x17,
0x1d, 0x2c, 0xee, 0x7d, 0xec, 0xb6, 0x75, 0xef, 0x6a, 0x37, 0x78, 0x37, 0xa4, 0x31, 0xad, 0x3b,
0x5f, 0x52, 0x7a, 0x0c, 0xb5, 0x4d, 0x93, 0x38, 0x2a, 0xc3, 0x2b, 0x67, 0xca, 0x91, 0xc6, 0x33,
0x1c, 0x59, 0xf1, 0x58, 0x73, 0x93, 0xc7, 0xcc, 0x9a, 0xc7, 0x56, 0xae, 0x69, 0x6d, 0x72, 0x8d,
0x55, 0x77, 0x4d, 0xa5, 0xfc, 0xda, 0xb5, 0xf2, 0x5b, 0x96, 0x3f, 0xa8, 0x96, 0xbf, 0xfa, 0x51,
0x6a, 0xaf, 0x1f, 0xa5, 0x55, 0xe8, 0x3b, 0xd5, 0xd0, 0xaf, 0x02, 0x79, 0xa7, 0x1a, 0xc8, 0x37,
0x60, 0x3b, 0xf6, 0x73, 0x36, 0xce, 0x29, 0x4d, 0xc6, 0x2c, 0x9a, 0xd3, 0xee, 0x36, 0x5f, 0xb0,
0x83, 0xd4, 0x11, 0xa5, 0xc9, 0x79, 0x34, 0xa7, 0xe4, 0xbb, 0x70, 0x7f, 0x25, 0x55, 0x81, 0xc6,
0x77, 0xb9, 0x5e, 0xf7, 0x94, 0xec, 0x85, 0x82, 0xc8, 0xee, 0x4f, 0xc0, 0xee, 0xd3, 0xf8, 0x13,
0x4c, 0xad, 0xbc, 0xb2, 0xb5, 0x56, 0xdd, 0xba, 0xd2, 0x9d, 0x1a, 0xcf, 0xe8, 0x4e, 0xee, 0xdf,
0xb4, 0x32, 0xaf, 0x59, 0x76, 0xdb, 0x1e, 0x49, 0xc0, 0x08, 0xf0, 0x66, 0x2c, 0xca, 0x3f, 0x1f,
0x73, 0xec, 0x4a, 0x3f, 0x67, 0x12, 0xa0, 0xf3, 0x71, 0xe5, 0x52, 0xdb, 0xac, 0x5c, 0x6a, 0x57,
0xdb, 0x7d, 0xd3, 0x97, 0xda, 0xdf, 0x35, 0x94, 0x31, 0x7d, 0x9f, 0xf9, 0x1b, 0x1a, 0xdc, 0x2e,
0x74, 0x2e, 0xb3, 0x74, 0x3e, 0xae, 0x03, 0x79, 0x40, 0xda, 0x85, 0x38, 0x19, 0xdf, 0x01, 0x1b,
0x83, 0x95, 0x33, 0x7f, 0xbe, 0xe0, 0xe7, 0x0c, 0x8f, 0x80, 0x22, 0xac, 0xa5, 0x83, 0xbe, 0x9e,
0x0e, 0xab, 0x13, 0x62, 0x54, 0x4f, 0xc8, 0x7b, 0x12, 0xbb, 0x09, 0x47, 0xbc, 0x54, 0x71, 0x04,
0xaa, 0xfa, 0x2c, 0xf0, 0x66, 0x7e, 0x43, 0xe0, 0xed, 0x4f, 0xba, 0x72, 0xce, 0x59, 0x46, 0xf3,
0x0d, 0xce, 0x71, 0x40, 0xcf, 0x33, 0x15, 0x6d, 0x1c, 0x92, 0xbd, 0x1a, 0x1e, 0xba, 0x5f, 0x51,
0x1c, 0x97, 0xa9, 0x02, 0xa2, 0xfa, 0xc5, 0xce, 0x58, 0xbf, 0xd8, 0xad, 0x1c, 0xd3, 0xbc, 0x39,
0x75, 0xcc, 0x0d, 0xe7, 0xb7, 0xf5, 0x2c, 0x74, 0xf5, 0x06, 0x6c, 0x33, 0x3f, 0x43, 0x68, 0xaf,
0xe2, 0x69, 0xf1, 0x8d, 0x3b, 0x82, 0x2a, 0x23, 0xea, 0xc2, 0x1d, 0x3f, 0x60, 0x69, 0x36, 0xae,
0x97, 0x82, 0x36, 0x27, 0x4a, 0x19, 0x59, 0xaf, 0x60, 0x73, 0xbd, 0x72, 0x0b, 0x09, 0xbc, 0x4c,
0x68, 0x0c, 0x4f, 0x9d, 0x2d, 0x04, 0x5b, 0xc3, 0x27, 0x4f, 0x1c, 0x0d, 0x09, 0x17, 0x3d, 0x47,
0x47, 0xc2, 0xc5, 0x59, 0xdf, 0x31, 0x10, 0x73, 0x1d, 0x0e, 0x4f, 0x07, 0x4e, 0x13, 0x49, 0xbd,
0x83, 0x91, 0x63, 0x22, 0xe9, 0x7c, 0xe0, 0x9d, 0x38, 0x2d, 0x85, 0xdb, 0x2c, 0x24, 0x79, 0x83,
0x5e, 0xdf, 0xb1, 0xc5, 0xe8, 0xe0, 0x13, 0x07, 0x90, 0xd9, 0x1f, 0x3c, 0x75, 0xda, 0x5c, 0xbe,
0x77, 0x38, 0x72, 0x3a, 0xee, 0x3f, 0xca, 0x1c, 0x3d, 0xa1, 0xcc, 0xbf, 0x65, 0x8e, 0xba, 0xf2,
0xde, 0xa8, 0x57, 0x70, 0x45, 0xd9, 0x6f, 0xe5, 0xcd, 0xf1, 0x35, 0x05, 0x9a, 0x56, 0x0e, 0x56,
0x4d, 0x41, 0xbd, 0x4f, 0x70, 0x6c, 0xd2, 0xac, 0xac, 0x51, 0x56, 0x1e, 0x81, 0x4c, 0x6e, 0xba,
0xb2, 0x2a, 0x60, 0xdb, 0xaa, 0x5c, 0xf8, 0x56, 0xd8, 0x41, 0x5e, 0xf8, 0x7e, 0xa9, 0x6c, 0x42,
0x70, 0xf9, 0xb5, 0x53, 0xf5, 0x41, 0xed, 0x74, 0x7e, 0x05, 0x5a, 0xad, 0x26, 0xa4, 0xfb, 0x1f,
0x0d, 0x6c, 0xe9, 0xd4, 0x7c, 0x8a, 0x00, 0x2b, 0x60, 0x59, 0x2c, 0xf1, 0xea, 0xdd, 0xb5, 0x3a,
0x85, 0x00, 0x0b, 0xd9, 0x28, 0xc6, 0xdf, 0x6b, 0x1a, 0xd7, 0xc4, 0x30, 0x8b, 0x51, 0x0c, 0xd9,
0x28, 0xb6, 0xc8, 0x68, 0x2e, 0x7d, 0x7f, 0x77, 0x2d, 0x67, 0x50, 0x0c, 0xd9, 0x28, 0x36, 0xa7,
0xe5, 0xeb, 0x4f, 0x55, 0x0c, 0xe3, 0x8c, 0x62, 0xc8, 0x46, 0xb1, 0x28, 0xb9, 0x4c, 0x6b, 0x90,
0x64, 0xe5, 0x3a, 0x14, 0x8b, 0x6a, 0x2e, 0x34, 0x2b, 0x2e, 0xac, 0x22, 0xb8, 0x2f, 0xcb, 0x63,
0xe4, 0xd1, 0x7c, 0x41, 0xde, 0x04, 0x13, 0xd1, 0x40, 0x21, 0x5e, 0xfc, 0x94, 0xf3, 0x90, 0x75,
0xc0, 0xf1, 0x90, 0x60, 0x92, 0xb7, 0xc0, 0xcc, 0xb3, 0xe5, 0x3c, 0x9f, 0xd6, 0x90, 0x7a, 0xe9,
0x39, 0x4f, 0x72, 0xc9, 0x1b, 0xd0, 0x0c, 0x62, 0x14, 0xd3, 0xaf, 0x01, 0x59, 0x14, 0x13, 0x4c,
0xf7, 0x5f, 0x1a, 0xb4, 0x46, 0x34, 0xcf, 0xa3, 0x34, 0xc1, 0x7a, 0x91, 0x8b, 0xe1, 0xea, 0xed,
0xd5, 0x96, 0x94, 0xe3, 0x67, 0xbc, 0xb5, 0xd4, 0x31, 0xac, 0xfe, 0x15, 0x18, 0x96, 0xbc, 0x06,
0xed, 0x8c, 0xce, 0x53, 0x84, 0x41, 0x61, 0x98, 0xc9, 0xba, 0x04, 0x82, 0xd4, 0x0b, 0xc3, 0x6c,
0xad, 0x6e, 0x35, 0xd7, 0xeb, 0x56, 0xed, 0xf9, 0xc9, 0x5c, 0x7b, 0x7e, 0xda, 0x01, 0x2b, 0xf6,
0x93, 0x69, 0xe1, 0x4f, 0x29, 0xef, 0x14, 0xb6, 0x57, 0xce, 0xdd, 0xa1, 0xba, 0x0e, 0x79, 0xf4,
0x0a, 0x33, 0x09, 0x9d, 0xa3, 0xdd, 0xe8, 0x1c, 0x64, 0x91, 0x5d, 0x30, 0xd0, 0xf8, 0xda, 0x6b,
0xa2, 0x74, 0x95, 0xc7, 0x39, 0xee, 0x47, 0xd0, 0x1e, 0x51, 0x3f, 0x0b, 0x66, 0xe2, 0x49, 0x63,
0xe3, 0xc3, 0xf5, 0x7d, 0x75, 0x37, 0x96, 0x05, 0x41, 0x5c, 0x86, 0xaf, 0xd4, 0xd7, 0x4f, 0xd2,
0x22, 0x09, 0x6f, 0x1b, 0xfe, 0x1b, 0xd7, 0xc2, 0x8f, 0x33, 0x9a, 0x17, 0x31, 0xe3, 0x2f, 0x89,
0xd7, 0x6a, 0x87, 0x64, 0xba, 0x53, 0x00, 0x4e, 0x1b, 0x2c, 0xd1, 0x91, 0x0f, 0xc0, 0xf4, 0x03,
0x16, 0xa5, 0x89, 0xdc, 0xd1, 0x16, 0x5e, 0xc8, 0x8a, 0xd0, 0x93, 0x0c, 0xac, 0x26, 0x89, 0x5f,
0x3e, 0x2c, 0xf1, 0xf1, 0x6d, 0x0a, 0x99, 0xfb, 0x07, 0x0d, 0x3a, 0xbd, 0x20, 0x48, 0x8b, 0x84,
0xdd, 0x7a, 0xaf, 0x8d, 0xe7, 0x6b, 0xed, 0x3d, 0x5c, 0x7f, 0xde, 0xf7, 0x70, 0xa3, 0x86, 0x4c,
0x55, 0x81, 0xb4, 0x56, 0x05, 0xd2, 0xfd, 0xb7, 0x06, 0xf7, 0x46, 0xc5, 0x24, 0x0f, 0xb2, 0x68,
0x81, 0xba, 0xdc, 0x5a, 0xe7, 0x8d, 0x0f, 0x46, 0xca, 0x12, 0xbd, 0x66, 0xc9, 0xaa, 0xb7, 0x1a,
0xd5, 0xde, 0xfa, 0xfc, 0xb0, 0xfb, 0x75, 0xf9, 0x2b, 0xa4, 0x75, 0x73, 0x73, 0xe4, 0xcc, 0xcd,
0x18, 0xdc, 0x3d, 0x87, 0x8e, 0x2c, 0x42, 0xb7, 0xb6, 0xf4, 0x81, 0xc8, 0x97, 0x9b, 0x0b, 0x2d,
0x4f, 0x98, 0xfd, 0xc7, 0x60, 0x97, 0x09, 0x8f, 0xdd, 0xf2, 0x14, 0x1b, 0xee, 0x16, 0x8e, 0x7a,
0xa7, 0xc3, 0x53, 0x07, 0xf8, 0xe8, 0xe2, 0xfc, 0xc8, 0xb9, 0xcf, 0xdb, 0xeb, 0x70, 0x78, 0xee,
0xbc, 0xba, 0xff, 0x16, 0x58, 0xaa, 0x3f, 0x94, 0xed, 0x77, 0xab, 0x6c, 0xbf, 0xbc, 0x93, 0xff,
0xf4, 0xcc, 0x69, 0xec, 0x7f, 0x04, 0x96, 0xca, 0x05, 0xd2, 0x01, 0xeb, 0x60, 0x78, 0x7a, 0x7e,
0x7c, 0x7a, 0x21, 0xd7, 0xef, 0x7b, 0xc3, 0x33, 0x47, 0x23, 0x6d, 0x68, 0x79, 0x83, 0xd1, 0xd9,
0xf0, 0xb4, 0xef, 0x34, 0xc4, 0xe4, 0xec, 0x69, 0xef, 0x60, 0xe0, 0xe8, 0xfb, 0xfb, 0x60, 0xa0,
0x35, 0x04, 0xc0, 0x3c, 0xf0, 0x06, 0xbd, 0x73, 0xfc, 0x0e, 0xc0, 0xbc, 0x38, 0xeb, 0xe3, 0x58,
0xc3, 0x71, 0x7f, 0xf0, 0x74, 0x70, 0x3e, 0x70, 0x1a, 0x8f, 0x7e, 0x0c, 0xc6, 0x29, 0xee, 0xf2,
0x18, 0xda, 0xd2, 0x49, 0x4f, 0xd3, 0x74, 0x41, 0xd6, 0x6a, 0xc4, 0xce, 0x5a, 0xdd, 0x75, 0xb7,
0xf6, 0xb4, 0xef, 0x69, 0x8f, 0x7e, 0xdf, 0x00, 0xf3, 0x2c, 0x2e, 0xa6, 0x51, 0x42, 0xde, 0x03,
0xeb, 0x49, 0x94, 0xd1, 0xa3, 0x34, 0xa7, 0xb5, 0x8f, 0x3d, 0x7a, 0xb5, 0x53, 0x75, 0x20, 0x9a,
0xe5, 0x6e, 0x91, 0x77, 0xc1, 0x78, 0x12, 0x25, 0x21, 0x71, 0x24, 0xab, 0xac, 0x2b, 0x3b, 0x55,
0x0a, 0xaf, 0x15, 0xee, 0x16, 0x79, 0x07, 0x5a, 0x32, 0xbf, 0xc8, 0x3d, 0x15, 0xfd, 0x32, 0xdb,
0x76, 0xc4, 0x8f, 0x06, 0xf9, 0x2f, 0x6f, 0x8b, 0xbc, 0x0d, 0x4d, 0x9e, 0xa0, 0xe4, 0xee, 0x2a,
0x59, 0x6f, 0x14, 0x7c, 0x1f, 0x3a, 0xd5, 0x34, 0x20, 0x2f, 0x88, 0x9d, 0xd7, 0x33, 0x63, 0xfd,
0xb3, 0x77, 0xca, 0x9e, 0x26, 0x95, 0xa9, 0x1e, 0xae, 0x35, 0xe1, 0x89, 0xc9, 0x7f, 0x38, 0x3e,
0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0x88, 0x3a, 0xba, 0x7f, 0x1c, 0x00, 0x00,
}

View File

@ -82,8 +82,8 @@ message ClientCred {
string value = 2;
// Verification response
string response = 3;
// Request parameters, such as preferences.
bytes params = 4;
// Request parameters, such as preferences or country code.
map<string, bytes> params = 4;
}
// SetDesc: C2S in set.what == "desc" and sub.init message

File diff suppressed because one or more lines are too long

View File

@ -106,8 +106,8 @@ def upd():
@app.route('/rtagns', methods=['POST'])
def rtags():
# Return dummy namespace "rest" and "email"
return jsonify({'strarr': ['rest', 'email']})
# Return dummy namespace "rest" and "email", let client check logins by regular expression.
return jsonify({'strarr': ['rest', 'email'], 'byteval': base64.b64encode('^[a-z0-9_]{3,8}$')})
@app.errorhandler(404)
def not_found(error):

View File

@ -39,6 +39,11 @@ func (authenticator) Authenticate(secret []byte) (*auth.Rec, []byte, error) {
return nil, nil, types.ErrUnsupported
}
// AsTag is not supported, will produce an empty string.
func (authenticator) AsTag(token string) string {
return ""
}
// IsUnique for a noop. Anonymous login does not use secret, any secret is fine.
func (authenticator) IsUnique(secret []byte) (bool, error) {
return true, nil

View File

@ -223,6 +223,10 @@ type AuthHandler interface {
// Returns: user auth record, challenge, error.
Authenticate(secret []byte) (*Rec, []byte, error)
// AsTag converts search token into prefixed tag or an empty string if it
// cannot be represented as a prefixed tag.
AsTag(token string) string
// IsUnique verifies if the provided secret can be considered unique by the auth scheme
// E.g. if login is unique.
IsUnique(secret []byte) (bool, error)

View File

@ -239,11 +239,17 @@ func (a *authenticator) Authenticate(secret []byte) (*auth.Rec, []byte, error) {
State: types.StateUndefined}, nil, nil
}
func (a *authenticator) PreCheck(secret []byte) (string, error) {
if err := a.checkLoginPolicy(uname); err != nil {
return "", err
// AsTag convert search token into a prefixed tag, if possible.
func (a *authenticator) AsTag(token string) string {
if !a.addToTags {
return ""
}
return a.name + ":" + uname
if err := a.checkLoginPolicy(token); err != nil {
return ""
}
return a.name + ":" + token
}
// IsUnique checks login uniqueness.
@ -280,11 +286,11 @@ func (a *authenticator) DelRecords(uid types.Uid) error {
// RestrictedTags returns tag namespaces (prefixes) restricted by this adapter.
func (a *authenticator) RestrictedTags() ([]string, error) {
var tags []string
var prefix []string
if a.addToTags {
tags = []string{a.name}
prefix = []string{a.name}
}
return tags, nil
return prefix, nil
}
// GetResetParams returns authenticator parameters passed to password reset handler.

View File

@ -321,7 +321,9 @@ If accounts are managed by the server, the server should respond with an error `
### `rtagns` Get a list of restricted tag namespaces.
Server may enforce certain tag namespaces to be restricted, i.e. not editable by the user.
Server may enforce certain tag namespaces (tag prefixes) to be restricted, i.e. not editable by the user.
These are also used when searching for users.
The server may optionally provide a regular expression to validate search tokens before rewriting them as prefixed tags. I.e. if server allows only logins of 3-8 ASCII letters and numbers then the regexp could be `^[a-z0-9_]{3,8}$` which is base64-encoded as `XlthLXowLTlfXXszLDh9JA==`.
#### Sample request
```json
@ -333,6 +335,7 @@ Server may enforce certain tag namespaces to be restricted, i.e. not editable by
#### Sample response
```json
{
"strarr": ["basic", "email", "tel"]
"strarr": ["basic", "email", "tel"],
"byteval": "XlthLXowLTlfXXszLDh9JA=="
}
```

View File

@ -6,8 +6,10 @@ import (
"encoding/json"
"errors"
"io/ioutil"
"log"
"net/http"
"net/url"
"regexp"
"strings"
"time"
@ -26,6 +28,10 @@ type authenticator struct {
allowNewAccounts bool
// Use separate endpoints, i.e. add request name to serverUrl path when making requests.
useSeparateEndpoints bool
// Cache of restricted tag prefixes (namespaces).
rTagNS []string
// Optional regex pattern for checking tokens.
reToken *regexp.Regexp
}
// Request to the server.
@ -202,6 +208,19 @@ func (a *authenticator) Authenticate(secret []byte) (*auth.Rec, []byte, error) {
return resp.Record, resp.ByteVal, nil
}
// AsTag converts search token into prefixed tag or an empty string if it
// cannot be represented as a prefixed tag.
func (a *authenticator) AsTag(token string) string {
if len(a.rTagNS) > 0 {
if a.reToken != nil && !a.reToken.MatchString(token) {
return ""
}
// No validation or passed validation.
return a.rTagNS[0] + ":" + token
}
return ""
}
// IsUnique verifies if the provided secret can be considered unique by the auth scheme
// E.g. if login is unique.
func (a *authenticator) IsUnique(secret []byte) (bool, error) {
@ -231,11 +250,24 @@ func (a *authenticator) DelRecords(uid types.Uid) error {
// RestrictedTags returns tag namespaces (prefixes, such as prefix:login) restricted by the server.
func (a *authenticator) RestrictedTags() ([]string, error) {
if a.rTagNS != nil {
ns := make([]string, len(a.rTagNS))
copy(ns, a.rTagNS)
return ns, nil
}
resp, err := a.callEndpoint("rtagns", nil, nil)
if err != nil {
return nil, err
}
// Save valid result to cache.
a.rTagNS = resp.StrSliceVal
if len(resp.ByteVal) > 0 {
a.reToken, err = regexp.Compile(string(resp.ByteVal))
if err != nil {
log.Println("rest_auth: invalid token regexp", string(resp.ByteVal))
}
}
return resp.StrSliceVal, nil
}

View File

@ -157,6 +157,11 @@ func (ta *authenticator) GenSecret(rec *auth.Rec) ([]byte, time.Time, error) {
return buf.Bytes(), expires, nil
}
// AsTag is not supported, will produce an empty string.
func (authenticator) AsTag(token string) string {
return ""
}
// IsUnique is not supported, will produce an error.
func (authenticator) IsUnique(token []byte) (bool, error) {
return false, types.ErrUnsupported

View File

@ -73,7 +73,7 @@ type MsgCredClient struct {
// Verification response
Response string `json:"resp,omitempty"`
// Request parameters, such as preferences. Passed to valiator without interpretation.
Params interface{} `json:"params,omitempty"`
Params map[string]interface{} `json:"params,omitempty"`
}
// MsgSetQuery is an update to topic metadata: Desc, subscriptions, or tags.

View File

@ -921,7 +921,7 @@ func pbClientCredSerialize(in *MsgCredClient) *pbx.ClientCred {
Method: in.Method,
Value: in.Value,
Response: in.Response,
Params: interfaceToBytes(in.Params)}
Params: interfaceMapToByteMap(in.Params)}
}
@ -947,7 +947,7 @@ func pbClientCredDeserialize(in *pbx.ClientCred) *MsgCredClient {
Method: in.GetMethod(),
Value: in.GetValue(),
Response: in.GetResponse(),
Params: bytesToInterface(in.GetParams())}
Params: byteMapToInterfaceMap(in.GetParams())}
}
func pbClientCredsDeserialize(in []*pbx.ClientCred) []MsgCredClient {

View File

@ -76,7 +76,7 @@ func replyCreateUser(s *Session, msg *ClientComMessage, rec *auth.Rec) {
for i := range creds {
cr := &creds[i]
vld := store.GetValidator(cr.Method)
if err := vld.PreCheck(cr.Value, cr.Params); err != nil {
if _, err := vld.PreCheck(cr.Value, cr.Params); err != nil {
log.Println("create user: failed credential pre-check", cr, err, s.sid)
s.queueOut(decodeStoreError(err, msg.Id, "", msg.timestamp,
map[string]interface{}{"what": cr.Method}))

View File

@ -9,7 +9,6 @@ import (
"fmt"
"log"
"net"
"net/mail"
"path/filepath"
"reflect"
"regexp"
@ -21,6 +20,7 @@ import (
"unicode/utf8"
"github.com/tinode/chat/server/auth"
"github.com/tinode/chat/server/store"
"github.com/tinode/chat/server/store/types"
"golang.org/x/crypto/acme/autocert"
@ -35,10 +35,6 @@ var prefixedTagRegexp = regexp.MustCompile(`^([a-z]\w{1,15}):[-_+.!?#@\pL\pN]{1,
// Generic tag: the same restrictions as tag body.
var tagRegexp = regexp.MustCompile(`^[-_+.!?#@\pL\pN]{1,96}$`)
// Token suitable as a login: 3-16 chars, starts with a Unicode letter (class L) and contains Unicode letters (L),
// numbers (N) and underscore.
var basicLoginName = regexp.MustCompile(`^\pL[_\pL\pN]{2,15}$`)
const nullValue = "\u2421"
// Convert a list of IDs into ranges
@ -425,24 +421,26 @@ func rewriteTag(orig, countryCode string, withLogin bool) string {
return orig
}
// Is it email?
if addr, err := mail.ParseAddress(orig); err == nil {
if len([]rune(addr.Address)) < maxTagLength && addr.Address == orig {
return "email:" + orig
// Check if token can be rewritten by any of the validators
param := map[string]interface{}{"countryCode": countryCode}
for name, conf := range globals.validators {
if conf.addToTags {
val := store.GetValidator(name)
if tag, _ := val.PreCheck(orig, param); tag != "" {
return tag
}
}
log.Println("failed to rewrite email tag", orig)
return ""
}
if num, err := phonenumbers.Parse(orig, countryCode); err == nil {
// It's a phone number. Not checking the length because phone numbers cannot be that long.
return "tel:" + phonenumbers.Format(num, phonenumbers.E164)
// Try authenticators now.
if withLogin {
auths := store.GetAuthNames()
for _, name := range auths {
auth := store.GetAuthHandler(name)
if tag := auth.AsTag(orig); tag != "" {
return tag
}
}
// Does it look like a username/login?
// TODO: use configured authenticators to check if orig is a valid user name.
if withLogin && basicLoginName.MatchString(orig) {
return "basic:" + orig
}
if tagRegexp.MatchString(orig) {