增加显示配置

dev
truthhun 1 year ago
parent 7ca5a703af
commit 382ea18476

@ -559,6 +559,74 @@ func (m *ConfigFooter) GetFeedback() string {
return ""
}
type ConfigDisplay struct {
ShowRegisterUserCount bool `protobuf:"varint,1,opt,name=show_register_user_count,json=showRegisterUserCount,proto3" json:"show_register_user_count,omitempty"`
ShowIndexCategories bool `protobuf:"varint,2,opt,name=show_index_categories,json=showIndexCategories,proto3" json:"show_index_categories,omitempty"`
PagesPerRead int32 `protobuf:"varint,3,opt,name=pages_per_read,json=pagesPerRead,proto3" json:"pages_per_read,omitempty"`
CopyrightStatement string `protobuf:"bytes,4,opt,name=copyright_statement,json=copyrightStatement,proto3" json:"copyright_statement,omitempty"`
}
func (m *ConfigDisplay) Reset() { *m = ConfigDisplay{} }
func (m *ConfigDisplay) String() string { return proto.CompactTextString(m) }
func (*ConfigDisplay) ProtoMessage() {}
func (*ConfigDisplay) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{6}
}
func (m *ConfigDisplay) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *ConfigDisplay) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_ConfigDisplay.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *ConfigDisplay) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConfigDisplay.Merge(m, src)
}
func (m *ConfigDisplay) XXX_Size() int {
return m.Size()
}
func (m *ConfigDisplay) XXX_DiscardUnknown() {
xxx_messageInfo_ConfigDisplay.DiscardUnknown(m)
}
var xxx_messageInfo_ConfigDisplay proto.InternalMessageInfo
func (m *ConfigDisplay) GetShowRegisterUserCount() bool {
if m != nil {
return m.ShowRegisterUserCount
}
return false
}
func (m *ConfigDisplay) GetShowIndexCategories() bool {
if m != nil {
return m.ShowIndexCategories
}
return false
}
func (m *ConfigDisplay) GetPagesPerRead() int32 {
if m != nil {
return m.PagesPerRead
}
return 0
}
func (m *ConfigDisplay) GetCopyrightStatement() string {
if m != nil {
return m.CopyrightStatement
}
return ""
}
// 安全配置
type ConfigSecurity struct {
IsClose bool `protobuf:"varint,1,opt,name=is_close,json=isClose,proto3" json:"is_close,omitempty"`
@ -578,7 +646,7 @@ func (m *ConfigSecurity) Reset() { *m = ConfigSecurity{} }
func (m *ConfigSecurity) String() string { return proto.CompactTextString(m) }
func (*ConfigSecurity) ProtoMessage() {}
func (*ConfigSecurity) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{6}
return fileDescriptor_321614cd6c9c1b8a, []int{7}
}
func (m *ConfigSecurity) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -689,13 +757,14 @@ type Settings struct {
System *ConfigSystem `protobuf:"bytes,1,opt,name=system,proto3" json:"system,omitempty"`
Footer *ConfigFooter `protobuf:"bytes,2,opt,name=footer,proto3" json:"footer,omitempty"`
Security *ConfigSecurity `protobuf:"bytes,3,opt,name=security,proto3" json:"security,omitempty"`
Display *ConfigDisplay `protobuf:"bytes,4,opt,name=display,proto3" json:"display,omitempty"`
}
func (m *Settings) Reset() { *m = Settings{} }
func (m *Settings) String() string { return proto.CompactTextString(m) }
func (*Settings) ProtoMessage() {}
func (*Settings) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{7}
return fileDescriptor_321614cd6c9c1b8a, []int{8}
}
func (m *Settings) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -745,6 +814,13 @@ func (m *Settings) GetSecurity() *ConfigSecurity {
return nil
}
func (m *Settings) GetDisplay() *ConfigDisplay {
if m != nil {
return m.Display
}
return nil
}
// 依赖项
type EnvDependent struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@ -760,7 +836,7 @@ func (m *EnvDependent) Reset() { *m = EnvDependent{} }
func (m *EnvDependent) String() string { return proto.CompactTextString(m) }
func (*EnvDependent) ProtoMessage() {}
func (*EnvDependent) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{8}
return fileDescriptor_321614cd6c9c1b8a, []int{9}
}
func (m *EnvDependent) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -847,7 +923,7 @@ func (m *Envs) Reset() { *m = Envs{} }
func (m *Envs) String() string { return proto.CompactTextString(m) }
func (*Envs) ProtoMessage() {}
func (*Envs) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{9}
return fileDescriptor_321614cd6c9c1b8a, []int{10}
}
func (m *Envs) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -903,7 +979,7 @@ func (m *Stats) Reset() { *m = Stats{} }
func (m *Stats) String() string { return proto.CompactTextString(m) }
func (*Stats) ProtoMessage() {}
func (*Stats) Descriptor() ([]byte, []int) {
return fileDescriptor_321614cd6c9c1b8a, []int{10}
return fileDescriptor_321614cd6c9c1b8a, []int{11}
}
func (m *Stats) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1023,6 +1099,7 @@ func init() {
proto.RegisterType((*ConfigCaptcha)(nil), "api.v1.ConfigCaptcha")
proto.RegisterType((*ConfigSystem)(nil), "api.v1.ConfigSystem")
proto.RegisterType((*ConfigFooter)(nil), "api.v1.ConfigFooter")
proto.RegisterType((*ConfigDisplay)(nil), "api.v1.ConfigDisplay")
proto.RegisterType((*ConfigSecurity)(nil), "api.v1.ConfigSecurity")
proto.RegisterType((*Settings)(nil), "api.v1.Settings")
proto.RegisterType((*EnvDependent)(nil), "api.v1.EnvDependent")
@ -1033,102 +1110,109 @@ func init() {
func init() { proto.RegisterFile("api/v1/config.proto", fileDescriptor_321614cd6c9c1b8a) }
var fileDescriptor_321614cd6c9c1b8a = []byte{
// 1519 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x57, 0x4b, 0x6f, 0x1b, 0xbb,
0x15, 0xce, 0xe8, 0x2d, 0xea, 0x65, 0xd3, 0x8f, 0xc8, 0x4a, 0xea, 0x38, 0x2a, 0xda, 0x3a, 0x41,
0x61, 0xc5, 0xee, 0x63, 0xd1, 0x2e, 0x02, 0xc7, 0x71, 0xd2, 0x00, 0x41, 0x91, 0x8e, 0x13, 0xf4,
0xb1, 0x19, 0x50, 0x33, 0xc7, 0x12, 0xe1, 0xd1, 0x70, 0x42, 0x52, 0x8a, 0x95, 0x65, 0x57, 0x5d,
0x06, 0x28, 0xd0, 0x02, 0xfd, 0x45, 0x5d, 0x06, 0xe8, 0xa6, 0xbb, 0x7b, 0x91, 0xdc, 0xfb, 0x03,
0x2e, 0x70, 0xf7, 0xf7, 0x82, 0x87, 0x9c, 0xb1, 0x24, 0xc3, 0x40, 0x76, 0x73, 0xbe, 0xf3, 0xf1,
0x90, 0x3c, 0xe7, 0x3b, 0x24, 0x87, 0x6c, 0xb0, 0x94, 0x0f, 0x66, 0x87, 0x83, 0x50, 0x24, 0xe7,
0x7c, 0x74, 0x90, 0x4a, 0xa1, 0x05, 0xad, 0xb0, 0x94, 0x1f, 0xcc, 0x0e, 0x7b, 0xf7, 0x46, 0x42,
0x8c, 0x62, 0x18, 0x20, 0x3a, 0x9c, 0x9e, 0x0f, 0x34, 0x9f, 0x80, 0xd2, 0x6c, 0x92, 0x5a, 0x62,
0x6f, 0x73, 0x24, 0x46, 0x02, 0x3f, 0x07, 0xe6, 0xcb, 0xa1, 0x77, 0xdd, 0x30, 0x13, 0x9a, 0x25,
0x89, 0xd0, 0x4c, 0x73, 0x91, 0x28, 0xe7, 0xbd, 0xb3, 0x1a, 0x14, 0x26, 0xa9, 0x9e, 0x5b, 0x67,
0xff, 0xdb, 0x02, 0xa9, 0x9c, 0xe0, 0x52, 0x68, 0x9b, 0x14, 0x78, 0xd4, 0xf5, 0xf6, 0xbc, 0xfd,
0xa2, 0x5f, 0xe0, 0x11, 0xdd, 0x24, 0xe5, 0x98, 0x0d, 0x21, 0xee, 0x16, 0xf6, 0xbc, 0xfd, 0xba,
0x6f, 0x0d, 0x4a, 0x49, 0x29, 0x61, 0x13, 0xe8, 0x16, 0x11, 0xc4, 0x6f, 0xc3, 0x9c, 0xb1, 0x78,
0x0a, 0xdd, 0x92, 0x65, 0xa2, 0x41, 0xf7, 0x48, 0x23, 0x8d, 0x59, 0x08, 0x63, 0x11, 0x47, 0x20,
0xbb, 0x65, 0xf4, 0x2d, 0x42, 0xf4, 0x27, 0x84, 0xf0, 0x24, 0x9d, 0xea, 0x40, 0xcf, 0x53, 0xe8,
0x56, 0x90, 0x50, 0x47, 0xe4, 0xf5, 0x3c, 0x05, 0xda, 0x23, 0xb5, 0x90, 0x69, 0x18, 0x09, 0x39,
0xef, 0x56, 0xd1, 0x99, 0xdb, 0x66, 0x19, 0x4a, 0x48, 0xdd, 0xad, 0xed, 0x79, 0xfb, 0x65, 0x1f,
0xbf, 0x69, 0x97, 0x54, 0x45, 0x8a, 0x3b, 0xef, 0xd6, 0x91, 0x9e, 0x99, 0xf4, 0x31, 0x21, 0xa1,
0x04, 0xa6, 0x21, 0x0a, 0x98, 0xee, 0x92, 0x3d, 0x6f, 0xbf, 0x71, 0xd4, 0x3b, 0xb0, 0x79, 0x39,
0xc8, 0xf2, 0x72, 0xf0, 0x3a, 0x4b, 0xf6, 0x93, 0xd2, 0x87, 0xaf, 0xee, 0x79, 0x7e, 0xdd, 0x8d,
0x39, 0xd6, 0x26, 0xc0, 0x34, 0x8d, 0xb2, 0x00, 0x8d, 0x2f, 0x0d, 0xe0, 0xc6, 0x1c, 0xeb, 0xfe,
0x80, 0xac, 0xbf, 0xe4, 0x4a, 0xdb, 0x54, 0xfb, 0xf0, 0x76, 0x0a, 0x4a, 0x2f, 0x6d, 0xd0, 0xdb,
0x2b, 0x2e, 0x6e, 0xb0, 0x7f, 0x48, 0xaa, 0x96, 0xac, 0xe8, 0xcf, 0x49, 0xc5, 0xaa, 0x05, 0x49,
0x8d, 0xa3, 0xf6, 0x81, 0x95, 0xcb, 0x81, 0x8b, 0xe6, 0xbc, 0x7d, 0x4e, 0x5a, 0x16, 0x39, 0x61,
0xa9, 0x0e, 0xc7, 0x8c, 0x6e, 0x93, 0x4a, 0x0c, 0xc9, 0x48, 0x8f, 0xb1, 0xaa, 0x65, 0xdf, 0x59,
0xa6, 0x5e, 0xef, 0x78, 0xa4, 0xc7, 0x58, 0xd9, 0xb2, 0x6f, 0x0d, 0xc3, 0x1e, 0x03, 0x1f, 0x8d,
0x35, 0xd6, 0xb6, 0xec, 0x3b, 0xcb, 0xa4, 0x1a, 0xeb, 0x63, 0x8b, 0x8b, 0xdf, 0xfd, 0x1f, 0x8a,
0xa4, 0x69, 0xe7, 0x3a, 0x9b, 0x2b, 0x0d, 0x13, 0x33, 0x38, 0x12, 0x13, 0xc6, 0x13, 0x9c, 0xaa,
0xee, 0x3b, 0xcb, 0x4c, 0xa5, 0xb9, 0x8e, 0x21, 0x13, 0x11, 0x1a, 0x66, 0xe3, 0x17, 0x30, 0x7f,
0x27, 0x64, 0xa4, 0x9c, 0x90, 0x72, 0xdb, 0xc8, 0x26, 0x02, 0x15, 0x4a, 0x8e, 0xb5, 0x73, 0xb3,
0x2e, 0x42, 0x66, 0x41, 0xb1, 0x18, 0x09, 0xa7, 0x28, 0xfc, 0x36, 0xb5, 0x3f, 0x67, 0x33, 0x1e,
0x8a, 0xc4, 0xe9, 0x28, 0x33, 0xe9, 0x1a, 0x29, 0xf2, 0x30, 0x75, 0x02, 0x32, 0x9f, 0xf4, 0x2e,
0xa9, 0xb3, 0x84, 0xc5, 0x73, 0xcd, 0x43, 0x85, 0x02, 0xaa, 0xfb, 0x57, 0x80, 0x59, 0x9b, 0xe2,
0x1a, 0x50, 0xe4, 0x56, 0x46, 0xb9, 0x4d, 0x1f, 0x91, 0xcd, 0x50, 0xa4, 0x73, 0x69, 0xf2, 0x12,
0x28, 0xcd, 0xa4, 0x0e, 0xe6, 0xc0, 0x24, 0x2a, 0xaa, 0xee, 0xd3, 0xdc, 0x77, 0x66, 0x5c, 0x7f,
0x05, 0x26, 0xe9, 0x80, 0x6c, 0x48, 0x18, 0x71, 0xa5, 0x41, 0x06, 0x43, 0x16, 0x5e, 0x8c, 0xa4,
0x98, 0x26, 0x11, 0x2a, 0xa8, 0xee, 0xd3, 0xcc, 0xf5, 0x24, 0xf7, 0xd0, 0x07, 0x64, 0x2d, 0x16,
0x23, 0x9e, 0x2c, 0xb2, 0x9b, 0xc8, 0xee, 0x20, 0xbe, 0x40, 0xfd, 0x05, 0xe9, 0x48, 0x08, 0xc5,
0x64, 0x02, 0x49, 0x14, 0xd8, 0x64, 0xb6, 0x50, 0x45, 0xed, 0x1c, 0xfe, 0x33, 0xa6, 0xb4, 0x4b,
0xaa, 0x33, 0x90, 0xca, 0xa4, 0xb3, 0x6d, 0x93, 0xe3, 0x4c, 0x7a, 0x8f, 0x34, 0x42, 0x09, 0x11,
0xd7, 0x01, 0xee, 0xb7, 0x83, 0x5e, 0x62, 0xa1, 0x3f, 0x9a, 0x1d, 0xdf, 0x26, 0x55, 0x05, 0x61,
0x60, 0x32, 0xb8, 0x66, 0x0b, 0xab, 0x20, 0x7c, 0x11, 0xa6, 0xfd, 0x7f, 0x79, 0x99, 0x02, 0x9e,
0x09, 0xa1, 0x41, 0x9a, 0x4a, 0xb3, 0xa1, 0x98, 0x6a, 0x27, 0x00, 0x6b, 0x98, 0xa9, 0x43, 0x91,
0x68, 0x16, 0x6a, 0xa7, 0x80, 0xcc, 0xc4, 0x2a, 0x8c, 0x24, 0xc0, 0x04, 0x12, 0xed, 0x44, 0x70,
0x05, 0x18, 0x6f, 0x9e, 0x4d, 0xa7, 0x81, 0x2b, 0xc0, 0xd4, 0xe8, 0x1c, 0x20, 0x32, 0x29, 0x72,
0x2a, 0xc8, 0xed, 0xfe, 0xbf, 0x4b, 0xa4, 0xed, 0xa4, 0x09, 0xe1, 0x54, 0x72, 0x3d, 0xa7, 0x3b,
0xa4, 0xc6, 0x55, 0x10, 0xc6, 0x42, 0x01, 0xae, 0xae, 0xe6, 0x57, 0xb9, 0x3a, 0x31, 0xa6, 0xc9,
0x21, 0xe2, 0xa6, 0x9a, 0xda, 0xae, 0xc5, 0xae, 0xb3, 0x8d, 0xf0, 0x59, 0x86, 0x1a, 0x22, 0x24,
0x6c, 0x18, 0x43, 0x90, 0x15, 0x0d, 0x17, 0x5d, 0xf3, 0xdb, 0x16, 0xf6, 0x1d, 0x6a, 0x34, 0xe2,
0x88, 0xa1, 0x6d, 0xc3, 0x00, 0xeb, 0x86, 0x9b, 0xa8, 0xf9, 0xd4, 0xfa, 0x5c, 0x87, 0xbe, 0x34,
0x1e, 0xfa, 0x5b, 0x72, 0x7b, 0x65, 0x44, 0x3e, 0x45, 0x19, 0x07, 0x6d, 0x2d, 0x0d, 0xca, 0x67,
0xfa, 0x35, 0xd9, 0x5e, 0x19, 0x67, 0xab, 0xae, 0xb1, 0x05, 0x6a, 0xfe, 0xe6, 0xd2, 0xb0, 0x13,
0xeb, 0xa3, 0x8f, 0xc9, 0xdd, 0x95, 0x51, 0xe7, 0x3c, 0x89, 0x82, 0x94, 0x29, 0x65, 0x34, 0x84,
0x8d, 0x52, 0xf3, 0x77, 0x96, 0xc6, 0x3e, 0xe3, 0x49, 0xf4, 0xca, 0x11, 0xe8, 0x11, 0xd9, 0x5a,
0x09, 0x30, 0x4d, 0x63, 0xc1, 0x22, 0x6c, 0xa5, 0x9a, 0xbf, 0xb1, 0x34, 0xf2, 0x0d, 0xba, 0xe8,
0x43, 0xb2, 0x3e, 0x61, 0x97, 0x41, 0x24, 0xc2, 0xa9, 0x59, 0x44, 0xa0, 0xf8, 0x7b, 0xdb, 0x5d,
0x65, 0xbf, 0x33, 0x61, 0x97, 0x4f, 0x1d, 0x7e, 0xc6, 0xdf, 0x63, 0x93, 0xe5, 0x3c, 0x16, 0xc7,
0xe2, 0x1d, 0x44, 0x01, 0x5c, 0x9a, 0x63, 0xdb, 0x68, 0x9b, 0x66, 0xbe, 0x63, 0xeb, 0x3a, 0xbd,
0xd4, 0xf4, 0x67, 0xa4, 0x6d, 0x7b, 0x46, 0xc2, 0xdb, 0x29, 0x97, 0x60, 0xfb, 0xab, 0xe6, 0xb7,
0x10, 0xf5, 0x1d, 0xd8, 0xff, 0x8f, 0x47, 0x6a, 0x67, 0xa0, 0x35, 0x4f, 0x46, 0x8a, 0xfe, 0x92,
0x54, 0x14, 0x1e, 0x5d, 0xa8, 0x88, 0xc6, 0xd1, 0xe6, 0xf2, 0xa1, 0x6a, 0x8f, 0x35, 0xdf, 0x71,
0x0c, 0xfb, 0x1c, 0x65, 0x8e, 0xea, 0xb8, 0xc6, 0xb6, 0x2d, 0xe0, 0x3b, 0x0e, 0x3d, 0x22, 0x35,
0xe5, 0xb4, 0x87, 0x22, 0x69, 0x1c, 0x6d, 0xaf, 0x44, 0x77, 0x5e, 0x3f, 0xe7, 0xf5, 0xbf, 0xf3,
0x48, 0xf3, 0x34, 0x99, 0x3d, 0x85, 0x14, 0x92, 0xc8, 0xd4, 0x29, 0xbb, 0x68, 0xbd, 0x85, 0x8b,
0x76, 0xe5, 0x6c, 0x2c, 0x5c, 0x3f, 0x1b, 0xef, 0x93, 0x26, 0x57, 0x01, 0x4f, 0x94, 0x66, 0x71,
0x0c, 0x91, 0xd3, 0x68, 0x83, 0xab, 0x17, 0x19, 0x64, 0x1a, 0x15, 0xa4, 0x14, 0x32, 0xbb, 0xad,
0xd1, 0xc0, 0x2b, 0x72, 0x0c, 0xe1, 0x85, 0xbd, 0xe1, 0xca, 0x5f, 0x7c, 0x45, 0xda, 0x31, 0xc7,
0xda, 0x9c, 0xb3, 0xe1, 0x24, 0x72, 0xa7, 0xaf, 0xf9, 0x34, 0x87, 0x0b, 0x57, 0x57, 0x35, 0xb1,
0xc2, 0x22, 0x5c, 0xe5, 0x05, 0x79, 0x44, 0x4a, 0xa7, 0xc9, 0x4c, 0xd1, 0x7d, 0x52, 0x82, 0x64,
0xa6, 0xdc, 0xf5, 0x96, 0xe7, 0x76, 0x31, 0x1d, 0x3e, 0x32, 0xfa, 0xff, 0x28, 0x92, 0xb2, 0xe9,
0x49, 0x65, 0xde, 0x0e, 0x53, 0x05, 0x32, 0x08, 0xc5, 0x34, 0xd1, 0xee, 0xd5, 0x52, 0x37, 0xc8,
0x89, 0x01, 0x8c, 0x24, 0x72, 0x11, 0x59, 0x4a, 0x01, 0x29, 0xad, 0x0c, 0xcd, 0x69, 0xd9, 0x8d,
0xeb, 0x68, 0x45, 0x4b, 0xcb, 0x50, 0x4b, 0xfb, 0x29, 0x69, 0x31, 0xa9, 0x79, 0x68, 0x34, 0x8f,
0xac, 0x12, 0xb2, 0x9a, 0x0e, 0xcc, 0x49, 0xae, 0xff, 0x1c, 0xa9, 0x6c, 0x49, 0x0e, 0xb4, 0xa4,
0xfb, 0xa4, 0x39, 0x64, 0x49, 0x92, 0x2f, 0xbc, 0x82, 0x9c, 0x86, 0xc5, 0x2c, 0xe5, 0x01, 0x59,
0x3b, 0x97, 0x1c, 0x92, 0x28, 0xe6, 0xc9, 0x85, 0xa3, 0x55, 0x91, 0xd6, 0xb9, 0xc2, 0x2d, 0xb5,
0x4d, 0x0a, 0x22, 0xbb, 0xc2, 0x0a, 0x62, 0xe9, 0xa0, 0xaf, 0x2f, 0x1f, 0xf4, 0x94, 0x94, 0xc6,
0x4c, 0x8d, 0xdd, 0x4d, 0x85, 0xdf, 0xe6, 0x58, 0x1c, 0x4e, 0x79, 0x9c, 0x3f, 0x69, 0xea, 0x7e,
0x15, 0xed, 0x63, 0x5c, 0xa6, 0x84, 0x54, 0xc8, 0x6c, 0x2b, 0x4d, 0xbb, 0x4c, 0x8b, 0xe1, 0xdc,
0x47, 0xdf, 0x17, 0x49, 0xdd, 0xaa, 0xf9, 0xf8, 0xd5, 0x0b, 0xfa, 0x27, 0xd2, 0x78, 0x0e, 0x3a,
0xef, 0xae, 0xed, 0x6b, 0xca, 0x39, 0x35, 0x8f, 0xce, 0xde, 0x5a, 0x56, 0xdb, 0x8c, 0xd9, 0xef,
0xfe, 0xfd, 0x7f, 0xdf, 0xfc, 0xb3, 0x40, 0xe9, 0xda, 0xc0, 0x3d, 0x8c, 0x55, 0x16, 0xc3, 0x27,
0xcd, 0x37, 0xf8, 0x7e, 0x72, 0xef, 0xd3, 0xce, 0x72, 0x0f, 0xa9, 0xde, 0x0d, 0x93, 0xf4, 0x77,
0x30, 0xe4, 0x46, 0xaf, 0x3d, 0x58, 0x7a, 0x6b, 0xff, 0xce, 0x7b, 0x48, 0xdf, 0x10, 0x72, 0xf5,
0x0c, 0xa3, 0x3b, 0x59, 0xc4, 0x6b, 0x4f, 0xb3, 0xde, 0xea, 0x64, 0xfd, 0x3b, 0x18, 0x74, 0x8b,
0x6e, 0x2c, 0x07, 0x1d, 0xc4, 0x5c, 0x69, 0xfa, 0x07, 0x52, 0x33, 0xbb, 0x47, 0x61, 0xde, 0xb4,
0xf5, 0x56, 0xbe, 0x75, 0x43, 0xeb, 0x6f, 0x61, 0xbc, 0x0e, 0x6d, 0xe5, 0xfb, 0xc6, 0xd1, 0xa7,
0xa4, 0xfa, 0x1c, 0x34, 0x76, 0xc5, 0x4d, 0x81, 0x9a, 0x0b, 0xfd, 0xa1, 0xfa, 0x9b, 0x18, 0xa7,
0x4d, 0x9b, 0x59, 0x1c, 0xd3, 0x27, 0xf4, 0x2f, 0xa4, 0x65, 0x73, 0x77, 0xc6, 0x35, 0x4c, 0x58,
0x7a, 0x63, 0xb0, 0x9b, 0x72, 0x78, 0x1b, 0xc3, 0xae, 0xf7, 0x3a, 0xf9, 0xf2, 0x6c, 0xa0, 0x27,
0xbf, 0xf9, 0xef, 0xa7, 0x5d, 0xef, 0xe3, 0xa7, 0x5d, 0xef, 0xeb, 0x4f, 0xbb, 0xde, 0x87, 0xcf,
0xbb, 0xb7, 0x3e, 0x7e, 0xde, 0xbd, 0xf5, 0xff, 0xcf, 0xbb, 0xb7, 0x88, 0xfb, 0x89, 0x79, 0xe5,
0xfd, 0x6d, 0x7d, 0x22, 0x24, 0x44, 0x22, 0x74, 0x63, 0x7f, 0x3f, 0x3b, 0x1c, 0x56, 0x30, 0xfe,
0xaf, 0x7e, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x59, 0x78, 0x41, 0xff, 0x0c, 0x00, 0x00,
// 1629 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x57, 0x4b, 0x6f, 0x1b, 0xc9,
0x11, 0xf6, 0xf0, 0x21, 0x92, 0x45, 0x8a, 0x92, 0x5b, 0xb2, 0x4d, 0x73, 0x1d, 0x59, 0x3b, 0xc9,
0x26, 0xda, 0x45, 0x20, 0xae, 0x95, 0x17, 0x90, 0x1c, 0x16, 0xb2, 0xac, 0xdd, 0x18, 0x58, 0x04,
0xce, 0x68, 0x8d, 0x3c, 0x2e, 0x83, 0xe6, 0x4c, 0x89, 0x6c, 0x78, 0x38, 0x3d, 0xdb, 0xdd, 0xa4,
0xc5, 0x3d, 0xe6, 0x94, 0xe3, 0x02, 0x01, 0x92, 0xbf, 0x14, 0x20, 0x97, 0x05, 0xf6, 0x92, 0x5b,
0x02, 0x3b, 0xf9, 0x01, 0x01, 0x72, 0x4f, 0xd0, 0xd5, 0x3d, 0x23, 0x92, 0x82, 0x00, 0xdf, 0xa6,
0xaa, 0xbe, 0xaa, 0xee, 0xae, 0xfa, 0xaa, 0xba, 0x07, 0xf6, 0x78, 0x21, 0x46, 0x8b, 0x27, 0xa3,
0x44, 0xe6, 0x97, 0x62, 0x72, 0x5c, 0x28, 0x69, 0x24, 0xdb, 0xe2, 0x85, 0x38, 0x5e, 0x3c, 0x19,
0x3e, 0x9e, 0x48, 0x39, 0xc9, 0x70, 0x44, 0xda, 0xf1, 0xfc, 0x72, 0x64, 0xc4, 0x0c, 0xb5, 0xe1,
0xb3, 0xc2, 0x01, 0x87, 0xfb, 0x13, 0x39, 0x91, 0xf4, 0x39, 0xb2, 0x5f, 0x5e, 0xfb, 0xc8, 0xbb,
0xd9, 0xd0, 0x3c, 0xcf, 0xa5, 0xe1, 0x46, 0xc8, 0x5c, 0x7b, 0xeb, 0x7b, 0x9b, 0x41, 0x71, 0x56,
0x98, 0xa5, 0x33, 0x86, 0xff, 0xae, 0xc1, 0xd6, 0x19, 0x6d, 0x85, 0xf5, 0xa1, 0x26, 0xd2, 0x41,
0x70, 0x18, 0x1c, 0xd5, 0xa3, 0x9a, 0x48, 0xd9, 0x3e, 0x34, 0x33, 0x3e, 0xc6, 0x6c, 0x50, 0x3b,
0x0c, 0x8e, 0x3a, 0x91, 0x13, 0x18, 0x83, 0x46, 0xce, 0x67, 0x38, 0xa8, 0x93, 0x92, 0xbe, 0x2d,
0x72, 0xc1, 0xb3, 0x39, 0x0e, 0x1a, 0x0e, 0x49, 0x02, 0x3b, 0x84, 0x6e, 0x91, 0xf1, 0x04, 0xa7,
0x32, 0x4b, 0x51, 0x0d, 0x9a, 0x64, 0x5b, 0x55, 0xb1, 0xef, 0x00, 0x88, 0xbc, 0x98, 0x9b, 0xd8,
0x2c, 0x0b, 0x1c, 0x6c, 0x11, 0xa0, 0x43, 0x9a, 0x2f, 0x96, 0x05, 0xb2, 0x21, 0xb4, 0x13, 0x6e,
0x70, 0x22, 0xd5, 0x72, 0xd0, 0x22, 0x63, 0x25, 0xdb, 0x6d, 0x68, 0xa9, 0xcc, 0xa0, 0x7d, 0x18,
0x1c, 0x35, 0x23, 0xfa, 0x66, 0x03, 0x68, 0xc9, 0x82, 0x4e, 0x3e, 0xe8, 0x10, 0xbc, 0x14, 0xd9,
0x27, 0x00, 0x89, 0x42, 0x6e, 0x30, 0x8d, 0xb9, 0x19, 0xc0, 0x61, 0x70, 0xd4, 0x3d, 0x19, 0x1e,
0xbb, 0xbc, 0x1c, 0x97, 0x79, 0x39, 0xfe, 0xa2, 0x4c, 0xf6, 0xd3, 0xc6, 0xd7, 0xff, 0x78, 0x1c,
0x44, 0x1d, 0xef, 0x73, 0x6a, 0x6c, 0x80, 0x79, 0x91, 0x96, 0x01, 0xba, 0xef, 0x1a, 0xc0, 0xfb,
0x9c, 0x9a, 0x70, 0x04, 0x77, 0x3f, 0x17, 0xda, 0xb8, 0x54, 0x47, 0xf8, 0xe5, 0x1c, 0xb5, 0x59,
0x3b, 0x60, 0x70, 0x58, 0x5f, 0x3d, 0x60, 0xf8, 0x04, 0x5a, 0x0e, 0xac, 0xd9, 0xf7, 0x61, 0xcb,
0xb1, 0x85, 0x40, 0xdd, 0x93, 0xfe, 0xb1, 0xa3, 0xcb, 0xb1, 0x8f, 0xe6, 0xad, 0xa1, 0x80, 0x6d,
0xa7, 0x39, 0xe3, 0x85, 0x49, 0xa6, 0x9c, 0xdd, 0x87, 0xad, 0x0c, 0xf3, 0x89, 0x99, 0x52, 0x55,
0x9b, 0x91, 0x97, 0x6c, 0xbd, 0x5e, 0x8b, 0xd4, 0x4c, 0xa9, 0xb2, 0xcd, 0xc8, 0x09, 0x16, 0x3d,
0x45, 0x31, 0x99, 0x1a, 0xaa, 0x6d, 0x33, 0xf2, 0x92, 0x4d, 0x35, 0xd5, 0xc7, 0x15, 0x97, 0xbe,
0xc3, 0xff, 0xd5, 0xa1, 0xe7, 0xd6, 0xba, 0x58, 0x6a, 0x83, 0x33, 0xeb, 0x9c, 0xca, 0x19, 0x17,
0x39, 0x2d, 0xd5, 0x89, 0xbc, 0x64, 0x97, 0x32, 0xc2, 0x64, 0x58, 0x92, 0x88, 0x04, 0x7b, 0xf0,
0x57, 0xb8, 0x7c, 0x2d, 0x55, 0xaa, 0x3d, 0x91, 0x2a, 0xd9, 0xd2, 0x26, 0x45, 0x9d, 0x28, 0x41,
0xb5, 0xf3, 0xab, 0xae, 0xaa, 0xec, 0x86, 0x32, 0x39, 0x91, 0x9e, 0x51, 0xf4, 0x6d, 0x6b, 0x7f,
0xc9, 0x17, 0x22, 0x91, 0xb9, 0xe7, 0x51, 0x29, 0xb2, 0x5d, 0xa8, 0x8b, 0xa4, 0xf0, 0x04, 0xb2,
0x9f, 0xec, 0x11, 0x74, 0x78, 0xce, 0xb3, 0xa5, 0x11, 0x89, 0x26, 0x02, 0x75, 0xa2, 0x6b, 0x85,
0xdd, 0x9b, 0x16, 0x06, 0x89, 0xe4, 0x8e, 0x46, 0x95, 0xcc, 0x3e, 0x86, 0xfd, 0x44, 0x16, 0x4b,
0x65, 0xf3, 0x12, 0x6b, 0xc3, 0x95, 0x89, 0x97, 0xc8, 0x15, 0x31, 0xaa, 0x13, 0xb1, 0xca, 0x76,
0x61, 0x4d, 0xbf, 0x43, 0xae, 0xd8, 0x08, 0xf6, 0x14, 0x4e, 0x84, 0x36, 0xa8, 0xe2, 0x31, 0x4f,
0x5e, 0x4d, 0x94, 0x9c, 0xe7, 0x29, 0x31, 0xa8, 0x13, 0xb1, 0xd2, 0xf4, 0xb4, 0xb2, 0xb0, 0x0f,
0x61, 0x37, 0x93, 0x13, 0x91, 0xaf, 0xa2, 0x7b, 0x84, 0xde, 0x21, 0xfd, 0x0a, 0xf4, 0x07, 0xb0,
0xa3, 0x30, 0x91, 0xb3, 0x19, 0xe6, 0x69, 0xec, 0x92, 0xb9, 0x4d, 0x2c, 0xea, 0x57, 0xea, 0xdf,
0x50, 0x4a, 0x07, 0xd0, 0x5a, 0xa0, 0xd2, 0x36, 0x9d, 0x7d, 0x97, 0x1c, 0x2f, 0xb2, 0xc7, 0xd0,
0x4d, 0x14, 0xa6, 0xc2, 0xc4, 0x74, 0xde, 0x1d, 0xb2, 0x82, 0x53, 0xfd, 0xca, 0x9e, 0xf8, 0x01,
0xb4, 0x34, 0x26, 0xb1, 0xcd, 0xe0, 0xae, 0x2b, 0xac, 0xc6, 0xe4, 0x79, 0x52, 0x84, 0x7f, 0x0e,
0x4a, 0x06, 0x7c, 0x2a, 0xa5, 0x41, 0x65, 0x2b, 0xcd, 0xc7, 0x72, 0x6e, 0x3c, 0x01, 0x9c, 0x60,
0x97, 0x4e, 0x64, 0x6e, 0x78, 0x62, 0x3c, 0x03, 0x4a, 0x91, 0xaa, 0x30, 0x51, 0x88, 0x33, 0xcc,
0x8d, 0x27, 0xc1, 0xb5, 0xc2, 0x5a, 0xab, 0x6c, 0x7a, 0x0e, 0x5c, 0x2b, 0x6c, 0x8d, 0x2e, 0x11,
0x53, 0x9b, 0x22, 0xcf, 0x82, 0x4a, 0x0e, 0xbf, 0x0d, 0xca, 0x36, 0x78, 0x26, 0x74, 0x91, 0xf1,
0x25, 0xfb, 0x19, 0x0c, 0xf4, 0x54, 0xbe, 0x8e, 0xab, 0x42, 0xcc, 0x35, 0xaa, 0x38, 0x91, 0xf3,
0xdc, 0x6d, 0xb6, 0x1d, 0xdd, 0xb3, 0xf6, 0xc8, 0x9b, 0x5f, 0x6a, 0x54, 0x67, 0xd6, 0xc8, 0x4e,
0x80, 0x0c, 0xb1, 0xc8, 0x53, 0xbc, 0x8a, 0x7d, 0x6b, 0x0a, 0xd4, 0x74, 0x94, 0x76, 0xb4, 0x67,
0x8d, 0xcf, 0xad, 0xed, 0xac, 0x32, 0xb1, 0xef, 0x41, 0xbf, 0xe0, 0x13, 0xd4, 0x71, 0x81, 0x2a,
0x56, 0xc8, 0x53, 0xdf, 0x4d, 0x3d, 0xd2, 0xbe, 0x40, 0x15, 0x21, 0x4f, 0x2d, 0x2d, 0xd6, 0x88,
0x64, 0x5c, 0x1a, 0x1a, 0x37, 0x79, 0xe4, 0x2c, 0xe1, 0x5f, 0x1a, 0xd0, 0xf7, 0x0d, 0x87, 0xc9,
0x5c, 0x09, 0xb3, 0x64, 0x0f, 0xa1, 0x2d, 0x74, 0x9c, 0x64, 0x52, 0xa3, 0x3f, 0x46, 0x4b, 0xe8,
0x33, 0x2b, 0x5a, 0x66, 0x90, 0x7e, 0x25, 0xb4, 0xcb, 0x7e, 0x9f, 0xd4, 0x55, 0x58, 0x0b, 0xc4,
0x9c, 0x8f, 0x33, 0xac, 0x92, 0x43, 0xdb, 0x6d, 0x47, 0x7d, 0xa7, 0x2e, 0x73, 0x62, 0x99, 0xef,
0x81, 0x89, 0x1b, 0x2e, 0x31, 0xb1, 0x91, 0x76, 0xdc, 0x8e, 0x98, 0xb3, 0xf9, 0xb9, 0xf3, 0xb9,
0xb5, 0xb0, 0x9f, 0xc2, 0x83, 0x0d, 0x8f, 0x6a, 0x89, 0xa6, 0x4b, 0xfa, 0x9a, 0x53, 0xb5, 0xd2,
0x8f, 0xe1, 0xfe, 0x86, 0x9f, 0xe3, 0xb2, 0xa1, 0xc6, 0x6e, 0x47, 0xfb, 0x6b, 0x6e, 0x67, 0xce,
0xc6, 0x3e, 0x81, 0x47, 0x1b, 0x5e, 0x97, 0x22, 0x4f, 0xe3, 0x82, 0x6b, 0x6d, 0x3b, 0x83, 0xda,
0xbf, 0x1d, 0x3d, 0x5c, 0xf3, 0xfd, 0x54, 0xe4, 0xe9, 0x0b, 0x0f, 0xb0, 0xb5, 0xde, 0x08, 0x30,
0x2f, 0x32, 0xc9, 0x53, 0x1a, 0x10, 0xed, 0x68, 0x6f, 0xcd, 0xf3, 0x25, 0x99, 0xd8, 0x47, 0x70,
0x77, 0xc6, 0xaf, 0xe2, 0x54, 0x26, 0x73, 0xbb, 0x89, 0x58, 0x8b, 0xaf, 0xdc, 0xcc, 0x68, 0x46,
0x3b, 0x33, 0x7e, 0xf5, 0xcc, 0xeb, 0x2f, 0xc4, 0x57, 0x34, 0x3a, 0x2a, 0x1c, 0xcf, 0x32, 0xf9,
0x1a, 0xd3, 0x18, 0xaf, 0xec, 0x65, 0x64, 0x3b, 0x96, 0x95, 0xb6, 0x53, 0x67, 0x3a, 0xbf, 0x32,
0xec, 0x03, 0xe8, 0xbb, 0x49, 0xa0, 0xf0, 0xcb, 0xb9, 0x50, 0xe8, 0xa6, 0x46, 0x3b, 0xda, 0x26,
0x6d, 0xe4, 0x95, 0xe1, 0xdf, 0x02, 0x68, 0x5f, 0xa0, 0x31, 0x22, 0x9f, 0x68, 0xf6, 0x43, 0xd8,
0xd2, 0x34, 0x90, 0x89, 0x11, 0xdd, 0x93, 0xfd, 0xf5, 0xab, 0xc2, 0x0d, 0xeb, 0xc8, 0x63, 0x2c,
0xfa, 0x92, 0x9a, 0x97, 0xd8, 0x71, 0x03, 0xed, 0x1a, 0x3b, 0xf2, 0x18, 0x76, 0x02, 0x6d, 0xed,
0xb9, 0x47, 0x24, 0xe9, 0x9e, 0xdc, 0xdf, 0x88, 0xee, 0xad, 0x51, 0x85, 0x63, 0x23, 0x68, 0xa5,
0xae, 0x0b, 0x89, 0x29, 0xdd, 0x93, 0x7b, 0xeb, 0x2e, 0xbe, 0x45, 0xa3, 0x12, 0x15, 0xfe, 0x27,
0x80, 0xde, 0x79, 0xbe, 0x78, 0x86, 0x05, 0xe6, 0xa9, 0x2d, 0x6c, 0xf9, 0xde, 0x08, 0x56, 0xde,
0x1b, 0x1b, 0x57, 0x44, 0xed, 0xe6, 0x15, 0xf1, 0x3e, 0xf4, 0x84, 0x8e, 0x45, 0xae, 0x0d, 0xcf,
0x32, 0x4c, 0x3d, 0xa9, 0xbb, 0x42, 0x3f, 0x2f, 0x55, 0x76, 0x5e, 0xa1, 0x52, 0x52, 0x95, 0x8f,
0x16, 0x12, 0xe8, 0xa5, 0x30, 0xc5, 0xe4, 0x95, 0xbb, 0xe8, 0x9b, 0xef, 0xfc, 0x52, 0x70, 0x3e,
0xa7, 0xc6, 0x5e, 0x37, 0xc9, 0x2c, 0xf5, 0x97, 0x90, 0xfd, 0xb4, 0x33, 0x56, 0xe8, 0xeb, 0x22,
0x3a, 0x26, 0x82, 0xd0, 0x55, 0x05, 0x3f, 0x86, 0xc6, 0x79, 0xbe, 0xd0, 0xec, 0x08, 0x1a, 0x98,
0x2f, 0xb4, 0xbf, 0xe5, 0xab, 0x62, 0xac, 0xa6, 0x23, 0x22, 0x44, 0xf8, 0xc7, 0x3a, 0x34, 0x6d,
0x13, 0x6b, 0xfb, 0x84, 0xda, 0x98, 0x66, 0xf5, 0xa8, 0x33, 0xaf, 0x26, 0xd8, 0x07, 0xd0, 0xaf,
0x58, 0xe7, 0x20, 0x35, 0x82, 0x6c, 0x97, 0xda, 0x0a, 0x56, 0x3e, 0x3c, 0x3c, 0xac, 0xee, 0x60,
0xa5, 0xd6, 0xc1, 0xbe, 0x0b, 0xdb, 0x5c, 0x19, 0x91, 0xd8, 0x26, 0x21, 0x54, 0x83, 0x50, 0x3d,
0xaf, 0xac, 0x40, 0xbe, 0x61, 0x3d, 0xa8, 0xe9, 0x40, 0x5e, 0xe9, 0x40, 0xef, 0x43, 0x6f, 0xcc,
0xf3, 0xbc, 0xda, 0xf8, 0x16, 0x61, 0xba, 0x4e, 0xe7, 0x20, 0x1f, 0xc2, 0xee, 0xa5, 0x12, 0x98,
0xa7, 0x99, 0xc8, 0x5f, 0x79, 0x58, 0x8b, 0x60, 0x3b, 0xd7, 0x7a, 0x07, 0xed, 0x43, 0x4d, 0x96,
0x37, 0x79, 0x4d, 0xae, 0xdd, 0x77, 0x9d, 0xf5, 0xfb, 0x8e, 0x41, 0x63, 0xca, 0xf5, 0xd4, 0x5f,
0xd8, 0xf4, 0x6d, 0xe7, 0xe8, 0x78, 0x2e, 0xb2, 0xea, 0x65, 0xd7, 0x89, 0x5a, 0x24, 0x9f, 0xd2,
0x36, 0x15, 0x16, 0x52, 0x95, 0x47, 0xe9, 0xb9, 0x6d, 0x3a, 0x1d, 0xad, 0x7d, 0xf2, 0xdf, 0x3a,
0x74, 0x1c, 0x97, 0x4f, 0x5f, 0x3c, 0x67, 0xbf, 0x86, 0xee, 0x67, 0x68, 0xaa, 0x76, 0xbc, 0x7f,
0x83, 0x39, 0xe7, 0xf6, 0xed, 0x3d, 0xdc, 0x2d, 0x6b, 0x5b, 0x22, 0xc3, 0xc1, 0x1f, 0xbe, 0xfd,
0xd7, 0x9f, 0x6a, 0x8c, 0xed, 0x8e, 0xfc, 0xff, 0x81, 0x2e, 0x63, 0x44, 0xd0, 0x7b, 0x49, 0xcf,
0x48, 0xff, 0x4c, 0xdf, 0x59, 0xef, 0x20, 0x3d, 0xbc, 0x65, 0x91, 0xf0, 0x21, 0x85, 0xdc, 0x1b,
0xf6, 0x47, 0x6b, 0xbf, 0x1c, 0x3f, 0x0f, 0x3e, 0x62, 0x2f, 0x01, 0xae, 0x5f, 0xa3, 0xec, 0x61,
0x19, 0xf1, 0xc6, 0x0b, 0x75, 0xb8, 0xb9, 0x58, 0xf8, 0x1e, 0x05, 0xbd, 0xc7, 0xf6, 0xd6, 0x83,
0x8e, 0x32, 0xa1, 0x0d, 0xfb, 0x25, 0xb4, 0xed, 0xe9, 0x89, 0x98, 0xb7, 0x1d, 0x7d, 0xbb, 0x3a,
0xba, 0x85, 0x85, 0xf7, 0x28, 0xde, 0x0e, 0xdb, 0xae, 0xce, 0x4d, 0xde, 0xe7, 0xd0, 0xfa, 0x0c,
0x0d, 0x75, 0xc5, 0x6d, 0x81, 0x7a, 0x2b, 0xfd, 0xa1, 0xc3, 0x7d, 0x8a, 0xd3, 0x67, 0xbd, 0x32,
0x8e, 0xed, 0x13, 0xf6, 0x5b, 0xd8, 0x76, 0xb9, 0xbb, 0x10, 0x06, 0x67, 0xbc, 0xb8, 0x35, 0xd8,
0x6d, 0x39, 0x7c, 0x40, 0x61, 0xef, 0x0e, 0x77, 0xaa, 0xed, 0xb9, 0x40, 0x4f, 0x7f, 0xf2, 0xd7,
0x37, 0x07, 0xc1, 0x37, 0x6f, 0x0e, 0x82, 0x7f, 0xbe, 0x39, 0x08, 0xbe, 0x7e, 0x7b, 0x70, 0xe7,
0x9b, 0xb7, 0x07, 0x77, 0xfe, 0xfe, 0xf6, 0xe0, 0x0e, 0xf8, 0x7f, 0xb9, 0x17, 0xc1, 0xef, 0xef,
0xce, 0xa4, 0xc2, 0x54, 0x26, 0xde, 0xf7, 0x17, 0x8b, 0x27, 0xe3, 0x2d, 0x8a, 0xff, 0xa3, 0xff,
0x07, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x52, 0x34, 0x52, 0x06, 0x0e, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1816,6 +1900,61 @@ func (m *ConfigFooter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *ConfigDisplay) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *ConfigDisplay) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *ConfigDisplay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.CopyrightStatement) > 0 {
i -= len(m.CopyrightStatement)
copy(dAtA[i:], m.CopyrightStatement)
i = encodeVarintConfig(dAtA, i, uint64(len(m.CopyrightStatement)))
i--
dAtA[i] = 0x22
}
if m.PagesPerRead != 0 {
i = encodeVarintConfig(dAtA, i, uint64(m.PagesPerRead))
i--
dAtA[i] = 0x18
}
if m.ShowIndexCategories {
i--
if m.ShowIndexCategories {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x10
}
if m.ShowRegisterUserCount {
i--
if m.ShowRegisterUserCount {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func (m *ConfigSecurity) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -1960,6 +2099,18 @@ func (m *Settings) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.Display != nil {
{
size, err := m.Display.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintConfig(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x22
}
if m.Security != nil {
{
size, err := m.Security.MarshalToSizedBuffer(dAtA[:i])
@ -2037,12 +2188,12 @@ func (m *EnvDependent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0x32
}
if m.CheckedAt != nil {
n6, err6 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CheckedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CheckedAt):])
if err6 != nil {
return 0, err6
n7, err7 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.CheckedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.CheckedAt):])
if err7 != nil {
return 0, err7
}
i -= n6
i = encodeVarintConfig(dAtA, i, uint64(n6))
i -= n7
i = encodeVarintConfig(dAtA, i, uint64(n7))
i--
dAtA[i] = 0x2a
}
@ -2426,6 +2577,28 @@ func (m *ConfigFooter) Size() (n int) {
return n
}
func (m *ConfigDisplay) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.ShowRegisterUserCount {
n += 2
}
if m.ShowIndexCategories {
n += 2
}
if m.PagesPerRead != 0 {
n += 1 + sovConfig(uint64(m.PagesPerRead))
}
l = len(m.CopyrightStatement)
if l > 0 {
n += 1 + l + sovConfig(uint64(l))
}
return n
}
func (m *ConfigSecurity) Size() (n int) {
if m == nil {
return 0
@ -2490,6 +2663,10 @@ func (m *Settings) Size() (n int) {
l = m.Security.Size()
n += 1 + l + sovConfig(uint64(l))
}
if m.Display != nil {
l = m.Display.Size()
n += 1 + l + sovConfig(uint64(l))
}
return n
}
@ -4059,6 +4236,147 @@ func (m *ConfigFooter) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *ConfigDisplay) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: ConfigDisplay: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ConfigDisplay: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ShowRegisterUserCount", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.ShowRegisterUserCount = bool(v != 0)
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ShowIndexCategories", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.ShowIndexCategories = bool(v != 0)
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field PagesPerRead", wireType)
}
m.PagesPerRead = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.PagesPerRead |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field CopyrightStatement", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthConfig
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthConfig
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.CopyrightStatement = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipConfig(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthConfig
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *ConfigSecurity) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -4489,6 +4807,42 @@ func (m *Settings) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Display", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowConfig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthConfig
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthConfig
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Display == nil {
m.Display = &ConfigDisplay{}
}
if err := m.Display.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipConfig(dAtA[iNdEx:])

@ -75,6 +75,13 @@ message ConfigFooter {
string feedback = 5; //
}
message ConfigDisplay {
bool show_register_user_count = 1; //
bool show_index_categories = 2; //
int32 pages_per_read = 3; //
string copyright_statement = 4; //
}
//
message ConfigSecurity {
bool is_close = 1; //
@ -95,7 +102,7 @@ message Settings {
ConfigSystem system = 1; //
ConfigFooter footer = 2; //
ConfigSecurity security = 3; //
// ConfigCaptcha captcha = 4;
ConfigDisplay display = 4; //
}
//

@ -119,6 +119,7 @@ func (s *ConfigAPIService) GetSettings(ctx context.Context, req *emptypb.Empty)
System: &pb.ConfigSystem{},
Footer: &pb.ConfigFooter{},
Security: &pb.ConfigSecurity{},
Display: &pb.ConfigDisplay{},
}
// captcha := s.dbModel.GetConfigOfCaptcha()
@ -155,6 +156,11 @@ func (s *ConfigAPIService) GetSettings(ctx context.Context, req *emptypb.Empty)
s.logger.Error("util.CopyStruct", zap.Any("security", security), zap.Any("res.Security", res.Security), zap.Error(err))
}
display := s.dbModel.GetConfigOfDisplay()
if err := util.CopyStruct(&display, res.Display); err != nil {
s.logger.Error("util.CopyStruct", zap.Any("display", display), zap.Any("res.Display", res.Display), zap.Error(err))
}
return res, nil
}
@ -174,6 +180,7 @@ func (s *ConfigAPIService) GetStats(ctx context.Context, req *emptypb.Empty) (re
}
res.Os, _ = util.GetOSRelease()
res.UserCount, _ = s.dbModel.CountUser()
res.UserCount += s.dbModel.GetConfigOfDisplay(model.ConfigDisplayVirtualRegisterCount).VirtualRegisterCount
res.DocumentCount, _ = s.dbModel.CountDocument()
_, errPermission := s.checkPermission(ctx)
if errPermission == nil {

@ -36,6 +36,8 @@ const (
ConfigCategoryDownload = "download"
// 积分规则
ConfigCategoryScore = "score"
// 显示配置
ConfigCategoryDisplay = "display"
)
const (
@ -379,6 +381,42 @@ type ConfigScore struct {
DocumentCommentedLimit int32 `json:"document_commented_limit"` // 文档被评论获得积分次数限制
}
const (
ConfigDisplayShowRegisterUserCount = "show_register_user_count" // 是否显示注册用户数量
ConfigDisplayVirtualRegisterCount = "virtual_register_count" // 虚拟注册用户数量
ConfigDisplayShowIndexCategories = "show_index_categories" // 是否显示首页分类
ConfigDisplayPagesPerRead = "pages_per_read" // 每次阅读的页数
ConfigDisplayCopyrightStatement = "copyright_statement" // 在页面最底部的版权声明
)
type ConfigDisplay struct {
ShowRegisterUserCount bool `json:"show_register_user_count"` // 是否显示注册用户数量
VirtualRegisterCount int64 `json:"virtual_register_count"` // 虚拟注册用户数量
ShowIndexCategories bool `json:"show_index_categories"` // 是否显示首页分类
PagesPerRead int32 `json:"pages_per_read"` // 每次阅读的页数
CopyrightStatement string `json:"copyright_statement"` // 在页面最底部的版权声明
}
func (m *DBModel) GetConfigOfDisplay(name ...string) (config ConfigDisplay) {
var configs []Config
db := m.db
if len(name) > 0 {
db = db.Where("name IN (?)", name)
}
err := db.Where("category = ?", ConfigCategoryDisplay).Find(&configs).Error
if err != nil && err != gorm.ErrRecordNotFound {
m.logger.Error("GetConfigOfDisplay", zap.Error(err))
}
data := m.convertConfig2Map(configs)
bytes, _ := json.Marshal(data)
json.Unmarshal(bytes, &config)
return
}
func (m *DBModel) GetConfigOfFooter() (config ConfigFooter) {
var configs []Config
err := m.db.Where("category = ?", ConfigCategoryFooter).Find(&configs).Error
@ -616,7 +654,7 @@ func (m *DBModel) initConfig() (err error) {
{Category: ConfigCategoryCaptcha, Name: ConfigCaptchaType, Label: "验证码类型", Value: "digit", Placeholder: "请选择验证码类型,默认为数字", InputType: InputTypeSelect, Sort: 16, Options: captcha.CaptchaTypeOptions},
// 安全配置项
{Category: ConfigCategorySecurity, Name: ConfigSecurityMaxDocumentSize, Label: "最大文档大小(MB)", Value: "50", Placeholder: "允许用户上传的最大文档大小默认为50即50MB。配置时仍需注意NGINX等反向代理服务所允许传输的最大大小", InputType: InputTypeNumber, Sort: 1, Options: ""},
{Category: ConfigCategorySecurity, Name: ConfigSecurityMaxDocumentSize, Label: "最大文档大小(MB)", Value: "50", Placeholder: "允许用户上传的最大文档大小默认为50即50MB。配置时仍需配置反向代理服务所允许传输的最大大小如nginx的client_max_body_size值", InputType: InputTypeNumber, Sort: 1, Options: ""},
{Category: ConfigCategorySecurity, Name: ConfigSecurityCommentInterval, Label: "评论时间间隔", Value: "10", Placeholder: "用户评论时间间隔单位为秒。0表示不限制。", InputType: InputTypeNumber, Sort: 2, Options: ""},
{Category: ConfigCategorySecurity, Name: ConfigSecurityDocumentRelatedDuration, Label: "文档的【相关文档】有效期", Value: "7", Placeholder: "文档的相关联文档的有效期默认为7即7天0或小于0表示不开启相关文档功能", InputType: InputTypeNumber, Sort: 15, Options: ""},
{Category: ConfigCategorySecurity, Name: ConfigSecurityDocumentAllowedExt, Label: "允许上传的文档类型", Value: "", Placeholder: "留空表示允许程序所支持的全部文档类型", InputType: InputTypeSelectMulti, Sort: 3, Options: strings.Join(filetil.GetDocumentExts(), "\n")},
@ -674,6 +712,13 @@ func (m *DBModel) initConfig() (err error) {
{Category: ConfigCategoryEmail, Name: ConfigEmailDuration, Label: "邮件有效期", Value: "30", Placeholder: "找回密码时链接有效期默认为30表示30分钟", InputType: InputTypeNumber, Sort: 80, Options: ""},
{Category: ConfigCategoryEmail, Name: ConfigEmailSecret, Label: "签名密钥", Value: "moredoc", Placeholder: "找回密码链接签名密钥", InputType: InputTypeText, Sort: 80, Options: ""},
{Category: ConfigCategoryEmail, Name: ConfigEmailTestEmail, Label: "测试邮箱", Value: "", Placeholder: "用于每次变更配置时保存发送测试邮件", InputType: InputTypeText, Sort: 90, Options: ""},
// 展示配置
{Category: ConfigCategoryDisplay, Name: ConfigDisplayShowRegisterUserCount, Label: "是否显示注册用户数", Value: "true", Placeholder: "网站首页,是否显示注册用户数", InputType: InputTypeSwitch, Sort: 10, Options: ""},
{Category: ConfigCategoryDisplay, Name: ConfigDisplayVirtualRegisterCount, Label: "网站虚拟注册用户数", Value: "0", Placeholder: "网站首页显示的用户数=真实注册用户数+虚拟注册用户数", InputType: InputTypeNumber, Sort: 20, Options: ""},
{Category: ConfigCategoryDisplay, Name: ConfigDisplayShowIndexCategories, Label: "是否显示横栏分类", Value: "true", Placeholder: "网站首页中间横栏位置,是否显示分类", InputType: InputTypeSwitch, Sort: 30, Options: ""},
{Category: ConfigCategoryDisplay, Name: ConfigDisplayPagesPerRead, Label: "文档【继续阅读】的页数", Value: "5", Placeholder: "用户阅读文档每次点击继续阅读按钮时阅读的页数默认为5表示5页", InputType: InputTypeNumber, Sort: 40, Options: ""},
{Category: ConfigCategoryDisplay, Name: ConfigDisplayCopyrightStatement, Label: "版权声明", Value: "本站文档数据由用户上传,仅供学习交流,如侵犯您的权益,请联系我们进行删除。", Placeholder: "网站最底部版权声明支持HTML", InputType: InputTypeTextarea, Sort: 50, Options: ""},
}
for _, cfg := range cfgs {

@ -227,6 +227,12 @@
>{{ settings.system.sec_icp }}</el-link
>
</div>
<div v-if="settings.display.copyright_statement">
<div
class="el-link el-link--default"
v-html="settings.display.copyright_statement"
></div>
</div>
<div>
Powered By
<el-link

@ -1,6 +1,6 @@
<template>
<el-card shadow="never">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane
v-for="item in categories"
:key="'category-' + item.value"
@ -37,6 +37,10 @@ export default {
label: '系统配置',
value: 'system',
},
{
label: '展示配置',
value: 'display',
},
{
label: '底链配置',
value: 'footer',

@ -772,7 +772,9 @@ export default {
}
},
continueRead() {
let end = this.pages.length + this.pagesPerRead
let pagesPerRead =
this.settings.display.pages_per_read || this.pagesPerRead
let end = this.pages.length + pagesPerRead
if (end > this.document.preview) {
end = this.document.preview
}

@ -50,7 +50,7 @@
<el-col :span="6" class="float-right right-at-recommend">
<el-card class="text-center stat-info" shadow="never">
<el-row>
<el-col :span="12">
<el-col :span="settings.display.show_register_user_count ? 12 : 24">
<small>收录文档</small>
<div>
<span class="el-link el-link--primary">{{
@ -58,7 +58,7 @@
}}</span>
</div>
</el-col>
<el-col :span="12">
<el-col :span="12" v-if="settings.display.show_register_user_count">
<small>注册用户</small>
<div>
<span class="el-link el-link--primary">{{
@ -221,7 +221,10 @@
</el-card>
</el-col>
</el-row>
<div class="categories mgt-20px">
<div
class="categories mgt-20px"
v-if="settings.display.show_index_categories"
>
<el-row :gutter="20">
<div
v-for="(category, index) in categoryTrees"

Loading…
Cancel
Save