all: Support syncing extended attributes (fixes #2698) (#8513)

This adds support for syncing extended attributes on supported
filesystem on Linux, macOS, FreeBSD and NetBSD. Windows is currently
excluded because the APIs seem onerous and annoying and frankly the uses
cases seem few and far between. On Unixes this also covers ACLs as those
are stored as extended attributes.

Similar to ownership syncing this will optional & opt-in, which two
settings controlling the main behavior: one to "sync" xattrs (read &
write) and another one to "scan" xattrs (only read them so other devices
can "sync" them, but not apply any locally).

Co-authored-by: Tomasz Wilczyński <twilczynski@naver.com>
This commit is contained in:
Jakob Borg
2022-09-14 09:50:55 +02:00
committed by GitHub
co-authored by Tomasz Wilczyński
parent 8065cf7e97
commit 6cac308bcd
37 changed files with 2720 additions and 527 deletions
+749 -138
View File
@@ -101,11 +101,15 @@ type FolderConfiguration struct {
CaseSensitiveFS bool `protobuf:"varint,33,opt,name=case_sensitive_fs,json=caseSensitiveFs,proto3" json:"caseSensitiveFS" xml:"caseSensitiveFS"`
JunctionsAsDirs bool `protobuf:"varint,34,opt,name=follow_junctions,json=followJunctions,proto3" json:"junctionsAsDirs" xml:"junctionsAsDirs"`
SyncOwnership bool `protobuf:"varint,35,opt,name=sync_ownership,json=syncOwnership,proto3" json:"syncOwnership" xml:"syncOwnership"`
ScanOwnership bool `protobuf:"varint,36,opt,name=scan_ownership,json=scanOwnership,proto3" json:"scanOwnership" xml:"scanOwnership"`
SendOwnership bool `protobuf:"varint,36,opt,name=send_ownership,json=sendOwnership,proto3" json:"sendOwnership" xml:"sendOwnership"`
SyncXattrs bool `protobuf:"varint,37,opt,name=sync_xattrs,json=syncXattrs,proto3" json:"syncXattrs" xml:"syncXattrs"`
SendXattrs bool `protobuf:"varint,38,opt,name=send_xattrs,json=sendXattrs,proto3" json:"sendXattrs" xml:"sendXattrs"`
XattrFilter XattrFilter `protobuf:"bytes,39,opt,name=xattr_filter,json=xattrFilter,proto3" json:"xattrFilter" xml:"xattrFilter"`
// Legacy deprecated
DeprecatedReadOnly bool `protobuf:"varint,9000,opt,name=read_only,json=readOnly,proto3" json:"-" xml:"ro,attr,omitempty"` // Deprecated: Do not use.
DeprecatedMinDiskFreePct float64 `protobuf:"fixed64,9001,opt,name=min_disk_free_pct,json=minDiskFreePct,proto3" json:"-" xml:"minDiskFreePct,omitempty"` // Deprecated: Do not use.
DeprecatedPullers int `protobuf:"varint,9002,opt,name=pullers,proto3,casttype=int" json:"-" xml:"pullers,omitempty"` // Deprecated: Do not use.
DeprecatedScanOwnership bool `protobuf:"varint,9003,opt,name=scan_ownership,json=scanOwnership,proto3" json:"-" xml:"scanOwnership,omitempty"` // Deprecated: Do not use.
}
func (m *FolderConfiguration) Reset() { *m = FolderConfiguration{} }
@@ -141,9 +145,94 @@ func (m *FolderConfiguration) XXX_DiscardUnknown() {
var xxx_messageInfo_FolderConfiguration proto.InternalMessageInfo
// Extended attribute filter. This is a list of patterns to match (glob
// style), each with an action (permit or deny). First match is used. If the
// filter is empty, all strings are permitted. If the filter is non-empty,
// the default action becomes deny. To counter this, you can use the "*"
// pattern to match all strings at the end of the filter. There are also
// limits on the size of accepted attributes.
type XattrFilter struct {
Entries []XattrFilterEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries" xml:"entry"`
MaxSingleEntrySize int `protobuf:"varint,2,opt,name=max_single_entry_size,json=maxSingleEntrySize,proto3,casttype=int" json:"maxSingleEntrySize" xml:"maxSingleEntrySize" default:"1024"`
MaxTotalSize int `protobuf:"varint,3,opt,name=max_total_size,json=maxTotalSize,proto3,casttype=int" json:"maxTotalSize" xml:"maxTotalSize" default:"4096"`
}
func (m *XattrFilter) Reset() { *m = XattrFilter{} }
func (m *XattrFilter) String() string { return proto.CompactTextString(m) }
func (*XattrFilter) ProtoMessage() {}
func (*XattrFilter) Descriptor() ([]byte, []int) {
return fileDescriptor_44a9785876ed3afa, []int{2}
}
func (m *XattrFilter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *XattrFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_XattrFilter.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 *XattrFilter) XXX_Merge(src proto.Message) {
xxx_messageInfo_XattrFilter.Merge(m, src)
}
func (m *XattrFilter) XXX_Size() int {
return m.ProtoSize()
}
func (m *XattrFilter) XXX_DiscardUnknown() {
xxx_messageInfo_XattrFilter.DiscardUnknown(m)
}
var xxx_messageInfo_XattrFilter proto.InternalMessageInfo
type XattrFilterEntry struct {
Match string `protobuf:"bytes,1,opt,name=match,proto3" json:"match" xml:"match,attr"`
Permit bool `protobuf:"varint,2,opt,name=permit,proto3" json:"permit" xml:"permit,attr"`
}
func (m *XattrFilterEntry) Reset() { *m = XattrFilterEntry{} }
func (m *XattrFilterEntry) String() string { return proto.CompactTextString(m) }
func (*XattrFilterEntry) ProtoMessage() {}
func (*XattrFilterEntry) Descriptor() ([]byte, []int) {
return fileDescriptor_44a9785876ed3afa, []int{3}
}
func (m *XattrFilterEntry) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *XattrFilterEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_XattrFilterEntry.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 *XattrFilterEntry) XXX_Merge(src proto.Message) {
xxx_messageInfo_XattrFilterEntry.Merge(m, src)
}
func (m *XattrFilterEntry) XXX_Size() int {
return m.ProtoSize()
}
func (m *XattrFilterEntry) XXX_DiscardUnknown() {
xxx_messageInfo_XattrFilterEntry.DiscardUnknown(m)
}
var xxx_messageInfo_XattrFilterEntry proto.InternalMessageInfo
func init() {
proto.RegisterType((*FolderDeviceConfiguration)(nil), "config.FolderDeviceConfiguration")
proto.RegisterType((*FolderConfiguration)(nil), "config.FolderConfiguration")
proto.RegisterType((*XattrFilter)(nil), "config.XattrFilter")
proto.RegisterType((*XattrFilterEntry)(nil), "config.XattrFilterEntry")
}
func init() {
@@ -151,138 +240,158 @@ func init() {
}
var fileDescriptor_44a9785876ed3afa = []byte{
// 2093 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcf, 0x6f, 0xdc, 0xc6,
0xf5, 0x17, 0xe5, 0x5f, 0xd2, 0xe8, 0xf7, 0xc8, 0xb2, 0xc7, 0x72, 0xb2, 0xb3, 0x66, 0xd6, 0xf9,
0x2a, 0x41, 0x22, 0xdb, 0xca, 0x17, 0x05, 0x6a, 0xd4, 0x6d, 0xb3, 0x52, 0x84, 0xba, 0xae, 0xe2,
0x05, 0xe5, 0xd6, 0x68, 0x5a, 0x80, 0xe5, 0x92, 0xb3, 0xbb, 0x8c, 0xf8, 0xab, 0x33, 0x5c, 0x4b,
0xeb, 0x43, 0xe0, 0x5e, 0x8a, 0x16, 0xcd, 0xa1, 0x50, 0x0f, 0xbd, 0x06, 0x68, 0x51, 0xb4, 0xf9,
0x07, 0x0a, 0xf4, 0xd4, 0xa3, 0x2f, 0x85, 0xf6, 0x54, 0x14, 0x3d, 0x0c, 0x10, 0xf9, 0xb6, 0x47,
0x1e, 0x7d, 0x2a, 0x66, 0x86, 0xe4, 0x92, 0xdc, 0x0d, 0x50, 0xa0, 0x37, 0xce, 0xe7, 0xf3, 0xe6,
0xbd, 0x0f, 0xdf, 0xcc, 0xbc, 0x79, 0x24, 0x68, 0x78, 0x6e, 0xfb, 0x8e, 0x1d, 0x06, 0x1d, 0xb7,
0x7b, 0xa7, 0x13, 0x7a, 0x0e, 0xa1, 0x6a, 0xd0, 0xa7, 0x56, 0xec, 0x86, 0xc1, 0x76, 0x44, 0xc3,
0x38, 0x84, 0x97, 0x15, 0xb8, 0x79, 0x73, 0xc2, 0x3a, 0x1e, 0x44, 0x44, 0x19, 0x6d, 0x6e, 0x14,
0x48, 0xe6, 0x3e, 0xcf, 0xe0, 0xcd, 0x02, 0x1c, 0xf5, 0x3d, 0x2f, 0xa4, 0x0e, 0xa1, 0x29, 0xb7,
0x55, 0xe0, 0x9e, 0x11, 0xca, 0xdc, 0x30, 0x70, 0x83, 0xee, 0x14, 0x05, 0x9b, 0xb8, 0x60, 0xd9,
0xf6, 0x42, 0xfb, 0xa8, 0xea, 0x0a, 0x0a, 0x83, 0x0e, 0xbb, 0x23, 0x04, 0xb1, 0x14, 0x7b, 0x23,
0xc5, 0xec, 0x30, 0x1a, 0x50, 0x2b, 0xe8, 0x12, 0x9f, 0xc4, 0xbd, 0xd0, 0x49, 0xd9, 0x79, 0x72,
0x12, 0xab, 0x47, 0xfd, 0x9f, 0x17, 0xc0, 0x8d, 0x7d, 0xf9, 0x3e, 0x7b, 0xe4, 0x99, 0x6b, 0x93,
0xdd, 0xa2, 0x02, 0xf8, 0xa5, 0x06, 0xe6, 0x1d, 0x89, 0x9b, 0xae, 0x83, 0xb4, 0xba, 0xb6, 0xb5,
0xd8, 0xfc, 0x5c, 0x7b, 0xc9, 0xf1, 0xcc, 0xbf, 0x39, 0xfe, 0xff, 0xae, 0x1b, 0xf7, 0xfa, 0xed,
0x6d, 0x3b, 0xf4, 0xef, 0xb0, 0x41, 0x60, 0xc7, 0x3d, 0x37, 0xe8, 0x16, 0x9e, 0x84, 0x04, 0x19,
0xc4, 0x0e, 0xbd, 0x6d, 0xe5, 0xfd, 0xe1, 0xde, 0x39, 0xc7, 0x73, 0xd9, 0xf3, 0x88, 0xe3, 0x39,
0x27, 0x7d, 0x4e, 0x38, 0x5e, 0x3a, 0xf1, 0xbd, 0xfb, 0xba, 0xeb, 0xbc, 0x67, 0xc5, 0x31, 0xd5,
0x47, 0x67, 0x8d, 0x2b, 0xe9, 0x73, 0x72, 0xd6, 0xc8, 0xed, 0x7e, 0x35, 0x6c, 0x68, 0xa7, 0xc3,
0x46, 0xee, 0xc3, 0xc8, 0x18, 0x07, 0xfe, 0x49, 0x03, 0x4b, 0x6e, 0x10, 0xd3, 0xd0, 0xe9, 0xdb,
0xc4, 0x31, 0xdb, 0x03, 0x34, 0x2b, 0x05, 0xbf, 0xf8, 0x9f, 0x04, 0x8f, 0x38, 0x5e, 0x1c, 0x7b,
0x6d, 0x0e, 0x12, 0x8e, 0xaf, 0x2b, 0xa1, 0x05, 0x30, 0x97, 0xbc, 0x36, 0x81, 0x0a, 0xc1, 0x46,
0xc9, 0x03, 0xb4, 0xc1, 0x3a, 0x09, 0x6c, 0x3a, 0x88, 0x44, 0x8e, 0xcd, 0xc8, 0x62, 0xec, 0x38,
0xa4, 0x0e, 0xba, 0x50, 0xd7, 0xb6, 0xe6, 0x9b, 0x3b, 0x23, 0x8e, 0xe1, 0x98, 0x6e, 0xa5, 0x6c,
0xc2, 0x31, 0x92, 0x61, 0x27, 0x29, 0xdd, 0x98, 0x62, 0xaf, 0xff, 0xfd, 0x16, 0x58, 0x57, 0x0b,
0x5b, 0x5e, 0xd2, 0x43, 0x30, 0x9b, 0x2e, 0xe5, 0x7c, 0x73, 0xf7, 0x9c, 0xe3, 0x59, 0xf9, 0x8a,
0xb3, 0xae, 0x88, 0x50, 0x2b, 0xad, 0x40, 0x3d, 0x08, 0x1d, 0xd2, 0xb1, 0xfa, 0x5e, 0x7c, 0x5f,
0x8f, 0x69, 0x9f, 0x14, 0x97, 0xe4, 0x74, 0xd8, 0x98, 0x7d, 0xb8, 0xf7, 0x85, 0x78, 0xb7, 0x59,
0xd7, 0x81, 0x3f, 0x04, 0x97, 0x3c, 0xab, 0x4d, 0x3c, 0x99, 0xf1, 0xf9, 0xe6, 0x77, 0x46, 0x1c,
0x2b, 0x20, 0xe1, 0xb8, 0x2e, 0x9d, 0xca, 0x51, 0xea, 0x97, 0x12, 0x16, 0x5b, 0x34, 0xbe, 0xaf,
0x77, 0x2c, 0x8f, 0x49, 0xb7, 0x60, 0x4c, 0xbf, 0x18, 0x36, 0x66, 0x0c, 0x35, 0x19, 0x76, 0xc1,
0x4a, 0xc7, 0xf5, 0x08, 0x1b, 0xb0, 0x98, 0xf8, 0xa6, 0xd8, 0xdf, 0x32, 0x49, 0xcb, 0x3b, 0x70,
0xbb, 0xc3, 0xb6, 0xf7, 0x73, 0xea, 0xc9, 0x20, 0x22, 0xcd, 0x77, 0x47, 0x1c, 0x2f, 0x77, 0x4a,
0x58, 0xc2, 0xf1, 0x55, 0x19, 0xbd, 0x0c, 0xeb, 0x46, 0xc5, 0x0e, 0x1e, 0x80, 0x8b, 0x91, 0x15,
0xf7, 0xd0, 0x45, 0x29, 0xff, 0x9b, 0x23, 0x8e, 0xe5, 0x38, 0xe1, 0xf8, 0xa6, 0x9c, 0x2f, 0x06,
0xa9, 0xf8, 0x3c, 0x25, 0x9f, 0x09, 0xe1, 0xf3, 0x39, 0xf3, 0xfa, 0xac, 0xa1, 0x7d, 0x66, 0xc8,
0x69, 0xb0, 0x05, 0x2e, 0x4a, 0xb1, 0x97, 0x52, 0xb1, 0xea, 0xf4, 0x6e, 0xab, 0xe5, 0x90, 0x62,
0xb7, 0x44, 0x88, 0x58, 0x49, 0x5c, 0x91, 0x21, 0xc4, 0x20, 0xdf, 0x46, 0xf3, 0xf9, 0xc8, 0x90,
0x56, 0xf0, 0xa7, 0xe0, 0x8a, 0xda, 0xe7, 0x0c, 0x5d, 0xae, 0x5f, 0xd8, 0x5a, 0xd8, 0xb9, 0x55,
0x76, 0x3a, 0xe5, 0xf0, 0x36, 0xb1, 0xd8, 0xf6, 0x23, 0x8e, 0xb3, 0x99, 0x09, 0xc7, 0x8b, 0x32,
0x94, 0x1a, 0xeb, 0x46, 0x46, 0xc0, 0xdf, 0x69, 0x60, 0x8d, 0x12, 0x66, 0x5b, 0x81, 0xe9, 0x06,
0x31, 0xa1, 0xcf, 0x2c, 0xcf, 0x64, 0xe8, 0x4a, 0x5d, 0xdb, 0xba, 0xd4, 0xec, 0x8e, 0x38, 0x5e,
0x51, 0xe4, 0xc3, 0x94, 0x3b, 0x4c, 0x38, 0x7e, 0x47, 0x7a, 0xaa, 0xe0, 0xd5, 0x14, 0x7d, 0xf0,
0x8d, 0xbb, 0x77, 0xf5, 0xd7, 0x1c, 0x5f, 0x70, 0x83, 0x78, 0x74, 0xd6, 0xb8, 0x3a, 0xcd, 0xfc,
0xf5, 0x59, 0xe3, 0xa2, 0xb0, 0x33, 0xaa, 0x41, 0xe0, 0xdf, 0x34, 0x00, 0x3b, 0xcc, 0x3c, 0xb6,
0x62, 0xbb, 0x47, 0xa8, 0x49, 0x02, 0xab, 0xed, 0x11, 0x07, 0xcd, 0xd5, 0xb5, 0xad, 0xb9, 0xe6,
0x6f, 0xb4, 0x73, 0x8e, 0x57, 0xf7, 0x0f, 0x9f, 0x2a, 0xf6, 0x23, 0x45, 0x8e, 0x38, 0x5e, 0xed,
0xb0, 0x32, 0x96, 0x70, 0xfc, 0xae, 0xda, 0x04, 0x15, 0xa2, 0xaa, 0x36, 0xdb, 0xe3, 0x1b, 0x53,
0x0d, 0x85, 0x4e, 0x61, 0x71, 0x3a, 0x6c, 0x4c, 0x84, 0x35, 0x26, 0x82, 0xc2, 0xbf, 0x96, 0xc5,
0x3b, 0xc4, 0xb3, 0x06, 0x26, 0x43, 0xf3, 0x32, 0xa7, 0xbf, 0x16, 0xe2, 0x57, 0x72, 0x2f, 0x7b,
0x82, 0x3c, 0x14, 0x79, 0xce, 0xdd, 0x28, 0x28, 0xe1, 0xf8, 0xff, 0xca, 0xd2, 0x15, 0x5e, 0x55,
0x7e, 0xaf, 0x94, 0xe5, 0x69, 0xc6, 0xaf, 0xcf, 0x1a, 0xb3, 0xf7, 0xee, 0x9e, 0x0e, 0x1b, 0xd5,
0xa8, 0x46, 0x35, 0x26, 0xfc, 0x19, 0x58, 0x74, 0xbb, 0x41, 0x48, 0x89, 0x19, 0x11, 0xea, 0x33,
0x04, 0x64, 0xbe, 0x1f, 0x8c, 0x38, 0x5e, 0x50, 0x78, 0x4b, 0xc0, 0x09, 0xc7, 0xd7, 0x54, 0xb5,
0x18, 0x63, 0xf9, 0xf6, 0x5d, 0xad, 0x82, 0x46, 0x71, 0x2a, 0xfc, 0x85, 0x06, 0x96, 0xad, 0x7e,
0x1c, 0x9a, 0x41, 0x48, 0x7d, 0xcb, 0x73, 0x9f, 0x13, 0xb4, 0x20, 0x83, 0x7c, 0x32, 0xe2, 0x78,
0x49, 0x30, 0x1f, 0x67, 0x44, 0x9e, 0x81, 0x12, 0xfa, 0x75, 0x2b, 0x07, 0x27, 0xad, 0xb2, 0x65,
0x33, 0xca, 0x7e, 0x61, 0x08, 0x96, 0x7c, 0x37, 0x30, 0x1d, 0x97, 0x1d, 0x99, 0x1d, 0x4a, 0x08,
0x5a, 0xac, 0x6b, 0x5b, 0x0b, 0x3b, 0x8b, 0xd9, 0xb1, 0x3a, 0x74, 0x9f, 0x93, 0xe6, 0x83, 0xf4,
0x04, 0x2d, 0xf8, 0x6e, 0xb0, 0xe7, 0xb2, 0xa3, 0x7d, 0x4a, 0x84, 0x22, 0x2c, 0x15, 0x15, 0xb0,
0xe2, 0x52, 0xd4, 0x6f, 0xeb, 0xaf, 0xcf, 0x1a, 0x17, 0xee, 0xd5, 0x6f, 0x1b, 0xc5, 0x69, 0xb0,
0x0b, 0xc0, 0xf8, 0x9e, 0x47, 0x4b, 0x32, 0x1a, 0xce, 0xa2, 0xfd, 0x28, 0x67, 0xca, 0x47, 0xf8,
0xed, 0x54, 0x40, 0x61, 0x6a, 0xc2, 0xf1, 0xaa, 0x8c, 0x3f, 0x86, 0x74, 0xa3, 0xc0, 0xc3, 0x07,
0xe0, 0x8a, 0x1d, 0x46, 0x2e, 0xa1, 0x0c, 0x2d, 0xcb, 0xdd, 0xf6, 0x96, 0xa8, 0x01, 0x29, 0x94,
0x5f, 0xb3, 0xe9, 0x38, 0xdb, 0x37, 0x46, 0x66, 0x00, 0xff, 0xa1, 0x81, 0x6b, 0xa2, 0xc3, 0x20,
0xd4, 0xf4, 0xad, 0x13, 0x33, 0x22, 0x81, 0xe3, 0x06, 0x5d, 0xf3, 0xc8, 0x6d, 0xa3, 0x15, 0xe9,
0xee, 0xf7, 0x62, 0xf3, 0xae, 0xb7, 0xa4, 0xc9, 0x81, 0x75, 0xd2, 0x52, 0x06, 0x8f, 0xdc, 0xe6,
0x88, 0xe3, 0xf5, 0x68, 0x12, 0x4e, 0x38, 0xbe, 0xa1, 0x8a, 0xe8, 0x24, 0x57, 0xd8, 0xb6, 0x53,
0xa7, 0x4e, 0x87, 0x4f, 0x87, 0x8d, 0x69, 0xf1, 0x8d, 0x29, 0xb6, 0x6d, 0x91, 0x8e, 0x9e, 0xc5,
0x7a, 0x22, 0x1d, 0xab, 0xe3, 0x74, 0xa4, 0x50, 0x9e, 0x8e, 0x74, 0x3c, 0x4e, 0x47, 0x0a, 0xc0,
0x0f, 0xc1, 0x25, 0xd9, 0x6b, 0xa1, 0x35, 0x59, 0xcb, 0xd7, 0xb2, 0x15, 0x13, 0xf1, 0x1f, 0x0b,
0xa2, 0x89, 0xc4, 0x65, 0x27, 0x6d, 0x12, 0x8e, 0x17, 0xa4, 0x37, 0x39, 0xd2, 0x0d, 0x85, 0xc2,
0x47, 0x60, 0x29, 0x3d, 0x50, 0x0e, 0xf1, 0x48, 0x4c, 0x10, 0x94, 0x9b, 0xfd, 0x6d, 0xd9, 0x59,
0x48, 0x62, 0x4f, 0xe2, 0x09, 0xc7, 0xb0, 0x70, 0xa4, 0x14, 0xa8, 0x1b, 0x25, 0x1b, 0x78, 0x02,
0x90, 0xac, 0xd3, 0x11, 0x0d, 0xbb, 0x94, 0x30, 0x56, 0x2c, 0xd8, 0xeb, 0xf2, 0xfd, 0xc4, 0xe5,
0xbb, 0x21, 0x6c, 0x5a, 0xa9, 0x49, 0xb1, 0x6c, 0xab, 0xeb, 0x6c, 0x2a, 0x9b, 0xbf, 0xfb, 0xf4,
0xc9, 0xf0, 0x10, 0x2c, 0xa7, 0xfb, 0x22, 0xb2, 0xfa, 0x8c, 0x98, 0x0c, 0x5d, 0x95, 0xf1, 0xde,
0x17, 0xef, 0xa1, 0x98, 0x96, 0x20, 0x0e, 0xf3, 0xf7, 0x28, 0x82, 0xb9, 0xf7, 0x92, 0x29, 0x24,
0x60, 0x49, 0xec, 0x32, 0x91, 0x54, 0xcf, 0xb5, 0x63, 0x86, 0x36, 0xa4, 0xcf, 0xef, 0x0a, 0x9f,
0xbe, 0x75, 0xb2, 0x9b, 0xe1, 0xe3, 0x53, 0x57, 0x00, 0xa7, 0x56, 0x40, 0x55, 0xe9, 0x8c, 0xd2,
0x6c, 0xe8, 0x80, 0xab, 0x8e, 0xcb, 0x44, 0x65, 0x36, 0x59, 0x64, 0x51, 0x46, 0x4c, 0xd9, 0x00,
0xa0, 0x6b, 0x72, 0x25, 0x64, 0xcb, 0x95, 0xf2, 0x87, 0x92, 0x96, 0xad, 0x45, 0xde, 0x72, 0x4d,
0x52, 0xba, 0x31, 0xc5, 0xbe, 0x18, 0x25, 0x26, 0x7e, 0x64, 0xba, 0x81, 0x43, 0x4e, 0x08, 0x43,
0xd7, 0x27, 0xa2, 0x3c, 0x21, 0x7e, 0xf4, 0x50, 0xb1, 0xd5, 0x28, 0x05, 0x6a, 0x1c, 0xa5, 0x00,
0xc2, 0x1d, 0x70, 0x59, 0x2e, 0x80, 0x83, 0x90, 0xf4, 0xbb, 0x39, 0xe2, 0x38, 0x45, 0xf2, 0x1b,
0x5e, 0x0d, 0x75, 0x23, 0xc5, 0x61, 0x0c, 0xae, 0x1f, 0x13, 0xeb, 0xc8, 0x14, 0xbb, 0xda, 0x8c,
0x7b, 0x94, 0xb0, 0x5e, 0xe8, 0x39, 0x66, 0x64, 0xc7, 0xe8, 0x86, 0x4c, 0xb8, 0x28, 0xef, 0x57,
0x85, 0xc9, 0xf7, 0x2c, 0xd6, 0x7b, 0x92, 0x19, 0xb4, 0xec, 0x38, 0xe1, 0x78, 0x53, 0xba, 0x9c,
0x46, 0xe6, 0x8b, 0x3a, 0x75, 0x2a, 0xdc, 0x05, 0x0b, 0xbe, 0x45, 0x8f, 0x08, 0x35, 0x03, 0xcb,
0x27, 0x68, 0x53, 0x36, 0x57, 0xba, 0x28, 0x67, 0x0a, 0xfe, 0xd8, 0xf2, 0x49, 0x5e, 0xce, 0xc6,
0x90, 0x6e, 0x14, 0x78, 0x38, 0x00, 0x9b, 0xe2, 0x23, 0xc6, 0x0c, 0x8f, 0x03, 0x42, 0x59, 0xcf,
0x8d, 0xcc, 0x0e, 0x0d, 0x7d, 0x33, 0xb2, 0x28, 0x09, 0x62, 0x74, 0x53, 0xa6, 0xe0, 0x5b, 0x23,
0x8e, 0xaf, 0x0b, 0xab, 0xc7, 0x99, 0xd1, 0x3e, 0x0d, 0xfd, 0x96, 0x34, 0x49, 0x38, 0x7e, 0x33,
0xab, 0x78, 0xd3, 0x78, 0xdd, 0xf8, 0xba, 0x99, 0xf0, 0x97, 0x1a, 0x58, 0xf3, 0x43, 0xc7, 0x8c,
0x5d, 0x9f, 0x98, 0xc7, 0x6e, 0xe0, 0x84, 0xc7, 0x26, 0x43, 0x6f, 0xc8, 0x84, 0xfd, 0xe4, 0x9c,
0xe3, 0x35, 0xc3, 0x3a, 0x3e, 0x08, 0x9d, 0x27, 0xae, 0x4f, 0x9e, 0x4a, 0x56, 0xdc, 0xe1, 0xcb,
0x7e, 0x09, 0xc9, 0x5b, 0xd0, 0x32, 0x9c, 0x65, 0xee, 0x74, 0xd8, 0x98, 0xf4, 0x62, 0x54, 0x7c,
0xc0, 0x17, 0x1a, 0xd8, 0x48, 0x8f, 0x89, 0xdd, 0xa7, 0x42, 0x9b, 0x79, 0x4c, 0xdd, 0x98, 0x30,
0xf4, 0xa6, 0x14, 0xf3, 0x03, 0x51, 0x7a, 0xd5, 0x86, 0x4f, 0xf9, 0xa7, 0x92, 0x4e, 0x38, 0xbe,
0x5d, 0x38, 0x35, 0x25, 0xae, 0x70, 0x78, 0x76, 0x0a, 0x67, 0x47, 0xdb, 0x31, 0xa6, 0x79, 0x12,
0x45, 0x2c, 0xdb, 0xdb, 0x1d, 0xf1, 0xc5, 0x84, 0x6a, 0xe3, 0x22, 0x96, 0x12, 0xfb, 0x02, 0xcf,
0x0f, 0x7f, 0x11, 0xd4, 0x8d, 0x92, 0x0d, 0xf4, 0xc0, 0xaa, 0xfc, 0x92, 0x35, 0x45, 0x2d, 0x30,
0x55, 0x7d, 0xc5, 0xb2, 0xbe, 0x5e, 0xcb, 0xea, 0x6b, 0x53, 0xf0, 0xe3, 0x22, 0x2b, 0x9b, 0xfb,
0x76, 0x09, 0xcb, 0x33, 0x5b, 0x86, 0x75, 0xa3, 0x62, 0x07, 0x3f, 0xd7, 0xc0, 0x9a, 0xdc, 0x42,
0xf2, 0x43, 0xd8, 0x54, 0x5f, 0xc2, 0xa8, 0x2e, 0xe3, 0xad, 0x8b, 0x0f, 0x89, 0xdd, 0x30, 0x1a,
0x18, 0x82, 0x3b, 0x90, 0x54, 0xf3, 0x91, 0x68, 0xc5, 0xec, 0x32, 0x98, 0x70, 0xbc, 0x95, 0x6f,
0xa3, 0x02, 0x5e, 0x48, 0x23, 0x8b, 0xad, 0xc0, 0xb1, 0xa8, 0x23, 0xee, 0xff, 0xb9, 0x6c, 0x60,
0x54, 0x1d, 0xc1, 0x3f, 0x0a, 0x39, 0x96, 0x28, 0xa0, 0x24, 0x60, 0x6e, 0xec, 0x3e, 0x13, 0x19,
0x45, 0xb7, 0x64, 0x3a, 0x4f, 0x44, 0x5f, 0xb8, 0x6b, 0x31, 0x72, 0x98, 0x71, 0xfb, 0xb2, 0x2f,
0xb4, 0xcb, 0x50, 0xc2, 0xf1, 0x86, 0x12, 0x53, 0xc6, 0x45, 0x0f, 0x34, 0x61, 0x3b, 0x09, 0x89,
0x36, 0xb0, 0x12, 0xc4, 0xa8, 0xd8, 0x30, 0xf8, 0x07, 0x0d, 0xac, 0x76, 0x42, 0xcf, 0x0b, 0x8f,
0xcd, 0x4f, 0xfb, 0x81, 0x2d, 0xda, 0x11, 0x86, 0xf4, 0xb1, 0xca, 0xef, 0x67, 0xe0, 0x87, 0x6c,
0xcf, 0xa5, 0x4c, 0xa8, 0xfc, 0xb4, 0x0c, 0xe5, 0x2a, 0x2b, 0xb8, 0x54, 0x59, 0xb5, 0x9d, 0x84,
0x84, 0xca, 0x4a, 0x10, 0x63, 0x45, 0x29, 0xca, 0x61, 0xf8, 0x18, 0x2c, 0x8b, 0x1d, 0x35, 0xae,
0x0e, 0xe8, 0x2d, 0x29, 0x51, 0x7c, 0x5f, 0x2d, 0x09, 0x26, 0x3f, 0xd7, 0x09, 0xc7, 0xeb, 0xea,
0xf2, 0x2b, 0xa2, 0xba, 0x51, 0xb6, 0x92, 0x0e, 0xc5, 0xfd, 0x3a, 0x76, 0xd8, 0x28, 0x38, 0xb4,
0xad, 0x60, 0x8a, 0xc3, 0x22, 0x2a, 0x1c, 0x16, 0xc7, 0xf0, 0x08, 0xcc, 0x53, 0x62, 0x39, 0x66,
0x18, 0x78, 0x03, 0xf4, 0xe7, 0x7d, 0xe9, 0xec, 0xe0, 0x9c, 0x63, 0xb8, 0x47, 0x22, 0x4a, 0x6c,
0x2b, 0x26, 0x8e, 0x41, 0x2c, 0xe7, 0x71, 0xe0, 0x0d, 0x46, 0x1c, 0x6b, 0xef, 0xe7, 0xff, 0x17,
0x68, 0x28, 0x1b, 0xd8, 0xf7, 0x42, 0xdf, 0x15, 0xb7, 0x49, 0x3c, 0x90, 0xff, 0x17, 0x26, 0x50,
0xa4, 0x19, 0x73, 0x34, 0x75, 0x00, 0x7f, 0x0e, 0xd6, 0x4a, 0x5d, 0xad, 0xac, 0xf0, 0x7f, 0x11,
0x41, 0xb5, 0xe6, 0x47, 0xe7, 0x1c, 0xa3, 0x71, 0xd0, 0x83, 0x71, 0x6f, 0xda, 0xb2, 0xe3, 0x2c,
0x74, 0xad, 0xda, 0xda, 0xb6, 0xec, 0xb8, 0xa0, 0x00, 0x69, 0xc6, 0x72, 0x99, 0x84, 0x3f, 0x06,
0x57, 0xd4, 0x8d, 0xce, 0xd0, 0x97, 0xfb, 0xb2, 0x1a, 0x7d, 0x5b, 0x94, 0xc6, 0x71, 0x20, 0xd5,
0xa9, 0xb1, 0xf2, 0xcb, 0xa5, 0x53, 0x0a, 0xae, 0xd3, 0x12, 0x84, 0x34, 0x23, 0xf3, 0xd7, 0x7c,
0xf4, 0xf2, 0xab, 0xda, 0xcc, 0xf0, 0xab, 0xda, 0xcc, 0xcb, 0xf3, 0x9a, 0x36, 0x3c, 0xaf, 0x69,
0xbf, 0x7d, 0x55, 0x9b, 0xf9, 0xe2, 0x55, 0x4d, 0x1b, 0xbe, 0xaa, 0xcd, 0xfc, 0xeb, 0x55, 0x6d,
0xe6, 0x93, 0x77, 0xfe, 0x8b, 0x3f, 0x3a, 0xaa, 0xa0, 0xb4, 0x2f, 0xcb, 0x3f, 0x3b, 0x1f, 0xfc,
0x27, 0x00, 0x00, 0xff, 0xff, 0xd1, 0xc6, 0xcc, 0xd3, 0xf7, 0x13, 0x00, 0x00,
// 2407 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x6f, 0x1b, 0xc7,
0x15, 0xd7, 0x4a, 0xb6, 0x25, 0x8d, 0xbe, 0x47, 0x96, 0xbd, 0x51, 0x12, 0x8d, 0xb2, 0xa1, 0x63,
0x25, 0x4d, 0x64, 0x5b, 0x31, 0x02, 0xc4, 0xa8, 0xdb, 0x86, 0x92, 0x85, 0xba, 0xae, 0x62, 0x61,
0xa9, 0xd6, 0x6d, 0x52, 0x60, 0xbb, 0xda, 0x1d, 0x92, 0x1b, 0xed, 0x07, 0xbb, 0xb3, 0xb2, 0x44,
0x1f, 0x02, 0xb7, 0x87, 0xa2, 0x45, 0x73, 0x28, 0xd4, 0x43, 0x91, 0x43, 0x81, 0x00, 0x2d, 0x8a,
0x36, 0xfd, 0x03, 0x0a, 0xf4, 0x2f, 0xf0, 0xa5, 0x90, 0x4e, 0x45, 0xd1, 0xc3, 0x00, 0x91, 0x6f,
0x3c, 0xf2, 0xe8, 0x53, 0xf1, 0xde, 0x7e, 0x70, 0x96, 0x64, 0x80, 0x02, 0xbd, 0x71, 0x7e, 0xbf,
0x37, 0xef, 0xfd, 0xf6, 0xcd, 0xcc, 0x9b, 0x37, 0x24, 0x15, 0xdf, 0xdb, 0xbf, 0xe1, 0x44, 0x61,
0xdd, 0x6b, 0xdc, 0xa8, 0x47, 0xbe, 0xcb, 0xe3, 0x74, 0x70, 0x18, 0xdb, 0x89, 0x17, 0x85, 0xeb,
0xad, 0x38, 0x4a, 0x22, 0x7a, 0x29, 0x05, 0x97, 0x5f, 0x1e, 0xb0, 0x4e, 0xda, 0x2d, 0x9e, 0x1a,
0x2d, 0x2f, 0x29, 0xa4, 0xf0, 0x9e, 0xe4, 0xf0, 0xb2, 0x02, 0xb7, 0x0e, 0x7d, 0x3f, 0x8a, 0x5d,
0x1e, 0x67, 0xdc, 0x9a, 0xc2, 0x3d, 0xe6, 0xb1, 0xf0, 0xa2, 0xd0, 0x0b, 0x1b, 0x43, 0x14, 0x2c,
0x33, 0xc5, 0x72, 0xdf, 0x8f, 0x9c, 0x83, 0x7e, 0x57, 0x14, 0x0c, 0xea, 0xe2, 0x06, 0x08, 0x12,
0x19, 0xf6, 0x4a, 0x86, 0x39, 0x51, 0xab, 0x1d, 0xdb, 0x61, 0x83, 0x07, 0x3c, 0x69, 0x46, 0x6e,
0xc6, 0x4e, 0xf2, 0xe3, 0x24, 0xfd, 0x69, 0xfc, 0x6b, 0x8c, 0xbc, 0xb4, 0x8d, 0xdf, 0xb3, 0xc5,
0x1f, 0x7b, 0x0e, 0xdf, 0x54, 0x15, 0xd0, 0x2f, 0x35, 0x32, 0xe9, 0x22, 0x6e, 0x79, 0xae, 0xae,
0xad, 0x6a, 0x6b, 0xd3, 0xd5, 0xcf, 0xb4, 0x67, 0x92, 0x8d, 0xfc, 0x47, 0xb2, 0xdb, 0x0d, 0x2f,
0x69, 0x1e, 0xee, 0xaf, 0x3b, 0x51, 0x70, 0x43, 0xb4, 0x43, 0x27, 0x69, 0x7a, 0x61, 0x43, 0xf9,
0x05, 0x12, 0x30, 0x88, 0x13, 0xf9, 0xeb, 0xa9, 0xf7, 0xfb, 0x5b, 0xe7, 0x92, 0x4d, 0xe4, 0xbf,
0x3b, 0x92, 0x4d, 0xb8, 0xd9, 0xef, 0xae, 0x64, 0x33, 0xc7, 0x81, 0x7f, 0xc7, 0xf0, 0xdc, 0xb7,
0xed, 0x24, 0x89, 0x8d, 0xce, 0x69, 0x65, 0x3c, 0xfb, 0xdd, 0x3d, 0xad, 0x14, 0x76, 0xbf, 0x3a,
0xab, 0x68, 0x27, 0x67, 0x95, 0xc2, 0x87, 0x99, 0x33, 0x2e, 0xfd, 0xb3, 0x46, 0x66, 0xbc, 0x30,
0x89, 0x23, 0xf7, 0xd0, 0xe1, 0xae, 0xb5, 0xdf, 0xd6, 0x47, 0x51, 0xf0, 0xd3, 0xff, 0x4b, 0x70,
0x47, 0xb2, 0xe9, 0x9e, 0xd7, 0x6a, 0xbb, 0x2b, 0xd9, 0xd5, 0x54, 0xa8, 0x02, 0x16, 0x92, 0x17,
0x06, 0x50, 0x10, 0x6c, 0x96, 0x3c, 0x50, 0x87, 0x2c, 0xf2, 0xd0, 0x89, 0xdb, 0x2d, 0xc8, 0xb1,
0xd5, 0xb2, 0x85, 0x38, 0x8a, 0x62, 0x57, 0x1f, 0x5b, 0xd5, 0xd6, 0x26, 0xab, 0x1b, 0x1d, 0xc9,
0x68, 0x8f, 0xde, 0xcd, 0xd8, 0xae, 0x64, 0x3a, 0x86, 0x1d, 0xa4, 0x0c, 0x73, 0x88, 0xbd, 0xf1,
0x79, 0x85, 0x2c, 0xa6, 0x0b, 0x5b, 0x5e, 0xd2, 0x1a, 0x19, 0xcd, 0x96, 0x72, 0xb2, 0xba, 0x79,
0x2e, 0xd9, 0x28, 0x7e, 0xe2, 0xa8, 0x07, 0x11, 0x56, 0x4a, 0x2b, 0xb0, 0x1a, 0x46, 0x2e, 0xaf,
0xdb, 0x87, 0x7e, 0x72, 0xc7, 0x48, 0xe2, 0x43, 0xae, 0x2e, 0xc9, 0xc9, 0x59, 0x65, 0xf4, 0xfe,
0xd6, 0x17, 0xf0, 0x6d, 0xa3, 0x9e, 0x4b, 0x7f, 0x40, 0x2e, 0xfa, 0xf6, 0x3e, 0xf7, 0x31, 0xe3,
0x93, 0xd5, 0x6f, 0x77, 0x24, 0x4b, 0x81, 0xae, 0x64, 0xab, 0xe8, 0x14, 0x47, 0x99, 0xdf, 0x98,
0x8b, 0xc4, 0x8e, 0x93, 0x3b, 0x46, 0xdd, 0xf6, 0x05, 0xba, 0x25, 0x3d, 0xfa, 0xe9, 0x59, 0x65,
0xc4, 0x4c, 0x27, 0xd3, 0x06, 0x99, 0xab, 0x7b, 0x3e, 0x17, 0x6d, 0x91, 0xf0, 0xc0, 0x82, 0xfd,
0x8d, 0x49, 0x9a, 0xdd, 0xa0, 0xeb, 0x75, 0xb1, 0xbe, 0x5d, 0x50, 0x7b, 0xed, 0x16, 0xaf, 0xbe,
0xd5, 0x91, 0x6c, 0xb6, 0x5e, 0xc2, 0xba, 0x92, 0x5d, 0xc6, 0xe8, 0x65, 0xd8, 0x30, 0xfb, 0xec,
0xe8, 0x0e, 0xb9, 0xd0, 0xb2, 0x93, 0xa6, 0x7e, 0x01, 0xe5, 0xbf, 0xdf, 0x91, 0x0c, 0xc7, 0x5d,
0xc9, 0x5e, 0xc6, 0xf9, 0x30, 0xc8, 0xc4, 0x17, 0x29, 0xf9, 0x14, 0x84, 0x4f, 0x16, 0xcc, 0x8b,
0xd3, 0x8a, 0xf6, 0xa9, 0x89, 0xd3, 0xe8, 0x2e, 0xb9, 0x80, 0x62, 0x2f, 0x66, 0x62, 0xd3, 0xd3,
0xbb, 0x9e, 0x2e, 0x07, 0x8a, 0x5d, 0x83, 0x10, 0x49, 0x2a, 0x71, 0x0e, 0x43, 0xc0, 0xa0, 0xd8,
0x46, 0x93, 0xc5, 0xc8, 0x44, 0x2b, 0xfa, 0x13, 0x32, 0x9e, 0xee, 0x73, 0xa1, 0x5f, 0x5a, 0x1d,
0x5b, 0x9b, 0xda, 0x78, 0xad, 0xec, 0x74, 0xc8, 0xe1, 0xad, 0x32, 0xd8, 0xf6, 0x1d, 0xc9, 0xf2,
0x99, 0x5d, 0xc9, 0xa6, 0x31, 0x54, 0x3a, 0x36, 0xcc, 0x9c, 0xa0, 0xbf, 0xd3, 0xc8, 0x42, 0xcc,
0x85, 0x63, 0x87, 0x96, 0x17, 0x26, 0x3c, 0x7e, 0x6c, 0xfb, 0x96, 0xd0, 0xc7, 0x57, 0xb5, 0xb5,
0x8b, 0xd5, 0x46, 0x47, 0xb2, 0xb9, 0x94, 0xbc, 0x9f, 0x71, 0xb5, 0xae, 0x64, 0x6f, 0xa2, 0xa7,
0x3e, 0xbc, 0x3f, 0x45, 0xef, 0xbe, 0x77, 0xf3, 0xa6, 0xf1, 0x42, 0xb2, 0x31, 0x2f, 0x4c, 0x3a,
0xa7, 0x95, 0xcb, 0xc3, 0xcc, 0x5f, 0x9c, 0x56, 0x2e, 0x80, 0x9d, 0xd9, 0x1f, 0x84, 0xfe, 0x43,
0x23, 0xb4, 0x2e, 0xac, 0x23, 0x3b, 0x71, 0x9a, 0x3c, 0xb6, 0x78, 0x68, 0xef, 0xfb, 0xdc, 0xd5,
0x27, 0x56, 0xb5, 0xb5, 0x89, 0xea, 0x6f, 0xb4, 0x73, 0xc9, 0xe6, 0xb7, 0x6b, 0x8f, 0x52, 0xf6,
0x5e, 0x4a, 0x76, 0x24, 0x9b, 0xaf, 0x8b, 0x32, 0xd6, 0x95, 0xec, 0xad, 0x74, 0x13, 0xf4, 0x11,
0xfd, 0x6a, 0xf3, 0x3d, 0xbe, 0x34, 0xd4, 0x10, 0x74, 0x82, 0xc5, 0xc9, 0x59, 0x65, 0x20, 0xac,
0x39, 0x10, 0x94, 0xfe, 0xbd, 0x2c, 0xde, 0xe5, 0xbe, 0xdd, 0xb6, 0x84, 0x3e, 0x89, 0x39, 0xfd,
0x35, 0x88, 0x9f, 0x2b, 0xbc, 0x6c, 0x01, 0x59, 0x83, 0x3c, 0x17, 0x6e, 0x52, 0xa8, 0x2b, 0xd9,
0xf5, 0xb2, 0xf4, 0x14, 0xef, 0x57, 0x7e, 0xab, 0x94, 0xe5, 0x61, 0xc6, 0x2f, 0x4e, 0x2b, 0xa3,
0xb7, 0x6e, 0x9e, 0x9c, 0x55, 0xfa, 0xa3, 0x9a, 0xfd, 0x31, 0xe9, 0x4f, 0xc9, 0xb4, 0xd7, 0x08,
0xa3, 0x98, 0x5b, 0x2d, 0x1e, 0x07, 0x42, 0x27, 0x98, 0xef, 0xbb, 0x1d, 0xc9, 0xa6, 0x52, 0x7c,
0x17, 0xe0, 0xae, 0x64, 0x57, 0xd2, 0x6a, 0xd1, 0xc3, 0x8a, 0xed, 0x3b, 0xdf, 0x0f, 0x9a, 0xea,
0x54, 0xfa, 0x73, 0x8d, 0xcc, 0xda, 0x87, 0x49, 0x64, 0x85, 0x51, 0x1c, 0xd8, 0xbe, 0xf7, 0x84,
0xeb, 0x53, 0x18, 0xe4, 0xa3, 0x8e, 0x64, 0x33, 0xc0, 0x7c, 0x98, 0x13, 0x45, 0x06, 0x4a, 0xe8,
0xd7, 0xad, 0x1c, 0x1d, 0xb4, 0xca, 0x97, 0xcd, 0x2c, 0xfb, 0xa5, 0x11, 0x99, 0x09, 0xbc, 0xd0,
0x72, 0x3d, 0x71, 0x60, 0xd5, 0x63, 0xce, 0xf5, 0xe9, 0x55, 0x6d, 0x6d, 0x6a, 0x63, 0x3a, 0x3f,
0x56, 0x35, 0xef, 0x09, 0xaf, 0xde, 0xcd, 0x4e, 0xd0, 0x54, 0xe0, 0x85, 0x5b, 0x9e, 0x38, 0xd8,
0x8e, 0x39, 0x28, 0x62, 0xa8, 0x48, 0xc1, 0xd4, 0xa5, 0x58, 0xbd, 0x66, 0xbc, 0x38, 0xad, 0x8c,
0xdd, 0x5a, 0xbd, 0x66, 0xaa, 0xd3, 0x68, 0x83, 0x90, 0xde, 0x3d, 0xaf, 0xcf, 0x60, 0x34, 0x96,
0x47, 0xfb, 0x61, 0xc1, 0x94, 0x8f, 0xf0, 0x1b, 0x99, 0x00, 0x65, 0x6a, 0x57, 0xb2, 0x79, 0x8c,
0xdf, 0x83, 0x0c, 0x53, 0xe1, 0xe9, 0x5d, 0x32, 0xee, 0x44, 0x2d, 0x8f, 0xc7, 0x42, 0x9f, 0xc5,
0xdd, 0xf6, 0x3a, 0xd4, 0x80, 0x0c, 0x2a, 0xae, 0xd9, 0x6c, 0x9c, 0xef, 0x1b, 0x33, 0x37, 0xa0,
0xff, 0xd4, 0xc8, 0x15, 0xe8, 0x30, 0x78, 0x6c, 0x05, 0xf6, 0xb1, 0xd5, 0xe2, 0xa1, 0xeb, 0x85,
0x0d, 0xeb, 0xc0, 0xdb, 0xd7, 0xe7, 0xd0, 0xdd, 0xef, 0x61, 0xf3, 0x2e, 0xee, 0xa2, 0xc9, 0x8e,
0x7d, 0xbc, 0x9b, 0x1a, 0x3c, 0xf0, 0xaa, 0x1d, 0xc9, 0x16, 0x5b, 0x83, 0x70, 0x57, 0xb2, 0x97,
0xd2, 0x22, 0x3a, 0xc8, 0x29, 0xdb, 0x76, 0xe8, 0xd4, 0xe1, 0xf0, 0xc9, 0x59, 0x65, 0x58, 0x7c,
0x73, 0x88, 0xed, 0x3e, 0xa4, 0xa3, 0x69, 0x8b, 0x26, 0xa4, 0x63, 0xbe, 0x97, 0x8e, 0x0c, 0x2a,
0xd2, 0x91, 0x8d, 0x7b, 0xe9, 0xc8, 0x00, 0xfa, 0x01, 0xb9, 0x88, 0xbd, 0x96, 0xbe, 0x80, 0xb5,
0x7c, 0x21, 0x5f, 0x31, 0x88, 0xff, 0x10, 0x88, 0xaa, 0x0e, 0x97, 0x1d, 0xda, 0x74, 0x25, 0x9b,
0x42, 0x6f, 0x38, 0x32, 0xcc, 0x14, 0xa5, 0x0f, 0xc8, 0x4c, 0x76, 0xa0, 0x5c, 0xee, 0xf3, 0x84,
0xeb, 0x14, 0x37, 0xfb, 0x1b, 0xd8, 0x59, 0x20, 0xb1, 0x85, 0x78, 0x57, 0x32, 0xaa, 0x1c, 0xa9,
0x14, 0x34, 0xcc, 0x92, 0x0d, 0x3d, 0x26, 0x3a, 0xd6, 0xe9, 0x56, 0x1c, 0x35, 0x62, 0x2e, 0x84,
0x5a, 0xb0, 0x17, 0xf1, 0xfb, 0xe0, 0xf2, 0x5d, 0x02, 0x9b, 0xdd, 0xcc, 0x44, 0x2d, 0xdb, 0xe9,
0x75, 0x36, 0x94, 0x2d, 0xbe, 0x7d, 0xf8, 0x64, 0x5a, 0x23, 0xb3, 0xd9, 0xbe, 0x68, 0xd9, 0x87,
0x82, 0x5b, 0x42, 0xbf, 0x8c, 0xf1, 0xde, 0x81, 0xef, 0x48, 0x99, 0x5d, 0x20, 0x6a, 0xc5, 0x77,
0xa8, 0x60, 0xe1, 0xbd, 0x64, 0x4a, 0x39, 0x99, 0x81, 0x5d, 0x06, 0x49, 0xf5, 0x3d, 0x27, 0x11,
0xfa, 0x12, 0xfa, 0xfc, 0x0e, 0xf8, 0x0c, 0xec, 0xe3, 0xcd, 0x1c, 0xef, 0x9d, 0x3a, 0x05, 0x1c,
0x5a, 0x01, 0xd3, 0x4a, 0x67, 0x96, 0x66, 0x53, 0x97, 0x5c, 0x76, 0x3d, 0x01, 0x95, 0xd9, 0x12,
0x2d, 0x3b, 0x16, 0xdc, 0xc2, 0x06, 0x40, 0xbf, 0x82, 0x2b, 0x81, 0x2d, 0x57, 0xc6, 0xd7, 0x90,
0xc6, 0xd6, 0xa2, 0x68, 0xb9, 0x06, 0x29, 0xc3, 0x1c, 0x62, 0xaf, 0x46, 0x49, 0x78, 0xd0, 0xb2,
0xbc, 0xd0, 0xe5, 0xc7, 0x5c, 0xe8, 0x57, 0x07, 0xa2, 0xec, 0xf1, 0xa0, 0x75, 0x3f, 0x65, 0xfb,
0xa3, 0x28, 0x54, 0x2f, 0x8a, 0x02, 0xd2, 0x0d, 0x72, 0x09, 0x17, 0xc0, 0xd5, 0x75, 0xf4, 0xbb,
0xdc, 0x91, 0x2c, 0x43, 0x8a, 0x1b, 0x3e, 0x1d, 0x1a, 0x66, 0x86, 0xd3, 0x84, 0x5c, 0x3d, 0xe2,
0xf6, 0x81, 0x05, 0xbb, 0xda, 0x4a, 0x9a, 0x31, 0x17, 0xcd, 0xc8, 0x77, 0xad, 0x96, 0x93, 0xe8,
0x2f, 0x61, 0xc2, 0xa1, 0xbc, 0x5f, 0x06, 0x93, 0xef, 0xda, 0xa2, 0xb9, 0x97, 0x1b, 0xec, 0x3a,
0x49, 0x57, 0xb2, 0x65, 0x74, 0x39, 0x8c, 0x2c, 0x16, 0x75, 0xe8, 0x54, 0xba, 0x49, 0xa6, 0x02,
0x3b, 0x3e, 0xe0, 0xb1, 0x15, 0xda, 0x01, 0xd7, 0x97, 0xb1, 0xb9, 0x32, 0xa0, 0x9c, 0xa5, 0xf0,
0x87, 0x76, 0xc0, 0x8b, 0x72, 0xd6, 0x83, 0x0c, 0x53, 0xe1, 0x69, 0x9b, 0x2c, 0xc3, 0x23, 0xc6,
0x8a, 0x8e, 0x42, 0x1e, 0x8b, 0xa6, 0xd7, 0xb2, 0xea, 0x71, 0x14, 0x58, 0x2d, 0x3b, 0xe6, 0x61,
0xa2, 0xbf, 0x8c, 0x29, 0xf8, 0x66, 0x47, 0xb2, 0xab, 0x60, 0xf5, 0x30, 0x37, 0xda, 0x8e, 0xa3,
0x60, 0x17, 0x4d, 0xba, 0x92, 0xbd, 0x9a, 0x57, 0xbc, 0x61, 0xbc, 0x61, 0x7e, 0xdd, 0x4c, 0xfa,
0x4b, 0x8d, 0x2c, 0x04, 0x91, 0x6b, 0x25, 0x5e, 0xc0, 0xad, 0x23, 0x2f, 0x74, 0xa3, 0x23, 0x4b,
0xe8, 0xaf, 0x60, 0xc2, 0x3e, 0x3e, 0x97, 0x6c, 0xc1, 0xb4, 0x8f, 0x76, 0x22, 0x77, 0xcf, 0x0b,
0xf8, 0x23, 0x64, 0xe1, 0x0e, 0x9f, 0x0d, 0x4a, 0x48, 0xd1, 0x82, 0x96, 0xe1, 0x3c, 0x73, 0x27,
0x67, 0x95, 0x41, 0x2f, 0x66, 0x9f, 0x0f, 0xfa, 0x54, 0x23, 0x4b, 0xd9, 0x31, 0x71, 0x0e, 0x63,
0xd0, 0x66, 0x1d, 0xc5, 0x5e, 0xc2, 0x85, 0xfe, 0x2a, 0x8a, 0xf9, 0x3e, 0x94, 0xde, 0x74, 0xc3,
0x67, 0xfc, 0x23, 0xa4, 0xbb, 0x92, 0x5d, 0x53, 0x4e, 0x4d, 0x89, 0x53, 0x0e, 0xcf, 0x86, 0x72,
0x76, 0xb4, 0x0d, 0x73, 0x98, 0x27, 0x28, 0x62, 0xf9, 0xde, 0xae, 0xc3, 0x8b, 0x49, 0x5f, 0xe9,
0x15, 0xb1, 0x8c, 0xd8, 0x06, 0xbc, 0x38, 0xfc, 0x2a, 0x68, 0x98, 0x25, 0x1b, 0xea, 0x93, 0x79,
0x7c, 0xc9, 0x5a, 0x50, 0x0b, 0xac, 0xb4, 0xbe, 0x32, 0xac, 0xaf, 0x57, 0xf2, 0xfa, 0x5a, 0x05,
0xbe, 0x57, 0x64, 0xb1, 0xb9, 0xdf, 0x2f, 0x61, 0x45, 0x66, 0xcb, 0xb0, 0x61, 0xf6, 0xd9, 0xd1,
0xcf, 0x34, 0xb2, 0x80, 0x5b, 0x08, 0x1f, 0xc2, 0x56, 0xfa, 0x12, 0xd6, 0x57, 0x31, 0xde, 0x22,
0x3c, 0x24, 0x36, 0xa3, 0x56, 0xdb, 0x04, 0x6e, 0x07, 0xa9, 0xea, 0x03, 0x68, 0xc5, 0x9c, 0x32,
0xd8, 0x95, 0x6c, 0xad, 0xd8, 0x46, 0x0a, 0xae, 0xa4, 0x51, 0x24, 0x76, 0xe8, 0xda, 0xb1, 0x0b,
0xf7, 0xff, 0x44, 0x3e, 0x30, 0xfb, 0x1d, 0xd1, 0x3f, 0x81, 0x1c, 0x1b, 0x0a, 0x28, 0x0f, 0x85,
0x97, 0x78, 0x8f, 0x21, 0xa3, 0xfa, 0x6b, 0x98, 0xce, 0x63, 0xe8, 0x0b, 0x37, 0x6d, 0xc1, 0x6b,
0x39, 0xb7, 0x8d, 0x7d, 0xa1, 0x53, 0x86, 0xba, 0x92, 0x2d, 0xa5, 0x62, 0xca, 0x38, 0xf4, 0x40,
0x03, 0xb6, 0x83, 0x10, 0xb4, 0x81, 0x7d, 0x41, 0xcc, 0x3e, 0x1b, 0x41, 0xff, 0xa8, 0x91, 0xf9,
0x7a, 0xe4, 0xfb, 0xd1, 0x91, 0xf5, 0xc9, 0x61, 0xe8, 0x40, 0x3b, 0x22, 0x74, 0xa3, 0xa7, 0xf2,
0x7b, 0x39, 0xf8, 0x81, 0xd8, 0xf2, 0x62, 0x01, 0x2a, 0x3f, 0x29, 0x43, 0x85, 0xca, 0x3e, 0x1c,
0x55, 0xf6, 0xdb, 0x0e, 0x42, 0xa0, 0xb2, 0x2f, 0x88, 0x39, 0x97, 0x2a, 0x2a, 0x60, 0xfa, 0x90,
0xcc, 0xc2, 0x8e, 0xea, 0x55, 0x07, 0xfd, 0x75, 0x94, 0x08, 0xef, 0xab, 0x19, 0x60, 0x8a, 0x73,
0xdd, 0x95, 0x6c, 0x31, 0xbd, 0xfc, 0x54, 0xd4, 0x30, 0xcb, 0x56, 0xe8, 0x90, 0x87, 0xae, 0xe2,
0xb0, 0xa2, 0x38, 0xe4, 0xa1, 0x3b, 0xc4, 0xa1, 0x8a, 0x82, 0x43, 0x75, 0x0c, 0x45, 0x10, 0x15,
0x1e, 0x43, 0x37, 0x2a, 0xf4, 0x6b, 0xe8, 0x0d, 0x8b, 0x20, 0xc0, 0x3f, 0x42, 0xb4, 0x28, 0x82,
0x3d, 0xc8, 0x30, 0x15, 0x1e, 0x9d, 0x80, 0xaa, 0xcc, 0xc9, 0x1b, 0x8a, 0x13, 0x1e, 0xba, 0xfd,
0x4e, 0x0a, 0x08, 0x9c, 0x14, 0x03, 0x68, 0xec, 0x71, 0x3e, 0xdc, 0x7d, 0x09, 0x8f, 0xf5, 0xeb,
0xd8, 0x83, 0x2e, 0xe6, 0x27, 0x0e, 0xad, 0xb6, 0x91, 0xaa, 0xae, 0xe5, 0x8d, 0xef, 0x71, 0x0f,
0xec, 0x4a, 0xb6, 0x80, 0xfe, 0x15, 0xcc, 0x30, 0x55, 0x0b, 0x7a, 0x40, 0x26, 0x63, 0x6e, 0xbb,
0x56, 0x14, 0xfa, 0x6d, 0xfd, 0x2f, 0xdb, 0xa8, 0x72, 0xe7, 0x5c, 0x32, 0xba, 0xc5, 0x5b, 0x31,
0x77, 0xec, 0x84, 0xbb, 0x26, 0xb7, 0xdd, 0x87, 0xa1, 0xdf, 0xee, 0x48, 0xa6, 0xbd, 0x53, 0xfc,
0x97, 0x12, 0x47, 0xd8, 0xac, 0xbf, 0x1d, 0x05, 0x1e, 0xdc, 0x9c, 0x49, 0x1b, 0xff, 0x4b, 0x19,
0x40, 0x75, 0xcd, 0x9c, 0x88, 0x33, 0x07, 0xf4, 0x67, 0x64, 0xa1, 0xd4, 0xc1, 0xe3, 0x6d, 0xf6,
0x57, 0x08, 0xaa, 0x55, 0xef, 0x9d, 0x4b, 0xa6, 0xf7, 0x82, 0xee, 0xf4, 0xfa, 0xf0, 0x5d, 0x27,
0xc9, 0x43, 0xaf, 0xf4, 0xb7, 0xf1, 0xbb, 0x4e, 0xa2, 0x28, 0xd0, 0x35, 0x73, 0xb6, 0x4c, 0xd2,
0x1f, 0x93, 0xf1, 0xb4, 0x7b, 0x11, 0xfa, 0x97, 0xdb, 0x58, 0x79, 0xbf, 0x05, 0xd7, 0x40, 0x2f,
0x50, 0xda, 0x95, 0x8a, 0xf2, 0xc7, 0x65, 0x53, 0x14, 0xd7, 0x59, 0xb9, 0xd5, 0x35, 0x33, 0xf7,
0x47, 0x0f, 0xc8, 0x2c, 0xf6, 0x75, 0xbd, 0x7d, 0xf7, 0xb7, 0x34, 0x7f, 0x9b, 0xe7, 0x92, 0x5d,
0xed, 0x45, 0xa8, 0x39, 0x76, 0x58, 0x6c, 0xae, 0x3c, 0xce, 0xab, 0x45, 0x57, 0x57, 0x50, 0xe5,
0x0f, 0x99, 0x29, 0x71, 0xc6, 0x2f, 0xc6, 0xc8, 0x94, 0xb2, 0xdc, 0xf4, 0x63, 0x32, 0xce, 0xc3,
0x24, 0xf6, 0xb8, 0xd0, 0x35, 0xfc, 0x77, 0x41, 0x1f, 0xb2, 0x29, 0xee, 0x85, 0x49, 0xdc, 0xae,
0x5e, 0xcf, 0xff, 0x54, 0xc8, 0x26, 0x14, 0x3d, 0x2f, 0x8c, 0x71, 0xd9, 0x2e, 0xe2, 0x2f, 0x33,
0x37, 0xa0, 0x9f, 0x67, 0x97, 0x97, 0xf0, 0xc2, 0x86, 0xcf, 0x2d, 0x64, 0x2d, 0x01, 0x8f, 0xbe,
0x51, 0x4c, 0x61, 0x1d, 0xfa, 0xa2, 0xc0, 0x3e, 0xae, 0x21, 0x8f, 0x51, 0x6a, 0xea, 0xcb, 0x6f,
0x90, 0x2a, 0xf5, 0x7d, 0x1b, 0xb7, 0x95, 0x47, 0xc4, 0x10, 0x3f, 0xf0, 0x00, 0x04, 0x2b, 0x73,
0x08, 0x47, 0x9f, 0x90, 0x59, 0x90, 0x96, 0x44, 0x09, 0x34, 0xd0, 0xa0, 0x69, 0x0c, 0x35, 0xed,
0x65, 0xfd, 0xe7, 0x1e, 0x10, 0x99, 0x9a, 0xd7, 0x72, 0x35, 0x05, 0xa8, 0xe8, 0xb8, 0x7d, 0xf3,
0xfd, 0xf7, 0x14, 0x1d, 0xa5, 0xb9, 0xa0, 0x00, 0x78, 0xb3, 0x84, 0x1a, 0x7f, 0xd0, 0xc8, 0x7c,
0x7f, 0x7a, 0xe1, 0xb9, 0x11, 0xc0, 0x6b, 0x3c, 0xfb, 0x83, 0xee, 0x1b, 0xf0, 0xb6, 0x40, 0x40,
0xe9, 0x93, 0x12, 0xa7, 0x59, 0xbc, 0xb4, 0x49, 0x6f, 0x68, 0xa6, 0x86, 0x74, 0x9b, 0x5c, 0x82,
0x87, 0xbb, 0x97, 0x60, 0x7e, 0x27, 0xaa, 0xeb, 0xd8, 0x1f, 0x22, 0x52, 0x1c, 0xe1, 0x74, 0x58,
0x78, 0x99, 0x52, 0xc6, 0x66, 0x66, 0x5b, 0x7d, 0xf0, 0xec, 0xab, 0x95, 0x91, 0xb3, 0xaf, 0x56,
0x46, 0x9e, 0x9d, 0xaf, 0x68, 0x67, 0xe7, 0x2b, 0xda, 0x6f, 0x9f, 0xaf, 0x8c, 0x7c, 0xf1, 0x7c,
0x45, 0x3b, 0x7b, 0xbe, 0x32, 0xf2, 0xef, 0xe7, 0x2b, 0x23, 0x1f, 0xbd, 0xf9, 0x3f, 0xfc, 0x9f,
0x9a, 0xee, 0xa3, 0xfd, 0x4b, 0xf8, 0xbf, 0xea, 0xbb, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x9a,
0x47, 0x7c, 0xbb, 0x75, 0x17, 0x00, 0x00,
}
func (m *FolderDeviceConfiguration) Marshal() (dAtA []byte, err error) {
@@ -355,6 +464,20 @@ func (m *FolderConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.DeprecatedScanOwnership {
i--
if m.DeprecatedScanOwnership {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x4
i--
dAtA[i] = 0xb2
i--
dAtA[i] = 0xd8
}
if m.DeprecatedPullers != 0 {
i = encodeVarintFolderconfiguration(dAtA, i, uint64(m.DeprecatedPullers))
i--
@@ -388,9 +511,45 @@ func (m *FolderConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0xc0
}
if m.ScanOwnership {
{
size, err := m.XattrFilter.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintFolderconfiguration(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2
i--
dAtA[i] = 0xba
if m.SendXattrs {
i--
if m.ScanOwnership {
if m.SendXattrs {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x2
i--
dAtA[i] = 0xb0
}
if m.SyncXattrs {
i--
if m.SyncXattrs {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x2
i--
dAtA[i] = 0xa8
}
if m.SendOwnership {
i--
if m.SendOwnership {
dAtA[i] = 1
} else {
dAtA[i] = 0
@@ -705,6 +864,93 @@ func (m *FolderConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *XattrFilter) Marshal() (dAtA []byte, err error) {
size := m.ProtoSize()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *XattrFilter) MarshalTo(dAtA []byte) (int, error) {
size := m.ProtoSize()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *XattrFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.MaxTotalSize != 0 {
i = encodeVarintFolderconfiguration(dAtA, i, uint64(m.MaxTotalSize))
i--
dAtA[i] = 0x18
}
if m.MaxSingleEntrySize != 0 {
i = encodeVarintFolderconfiguration(dAtA, i, uint64(m.MaxSingleEntrySize))
i--
dAtA[i] = 0x10
}
if len(m.Entries) > 0 {
for iNdEx := len(m.Entries) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Entries[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintFolderconfiguration(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func (m *XattrFilterEntry) Marshal() (dAtA []byte, err error) {
size := m.ProtoSize()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *XattrFilterEntry) MarshalTo(dAtA []byte) (int, error) {
size := m.ProtoSize()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *XattrFilterEntry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Permit {
i--
if m.Permit {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x10
}
if len(m.Match) > 0 {
i -= len(m.Match)
copy(dAtA[i:], m.Match)
i = encodeVarintFolderconfiguration(dAtA, i, uint64(len(m.Match)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintFolderconfiguration(dAtA []byte, offset int, v uint64) int {
offset -= sovFolderconfiguration(v)
base := offset
@@ -849,9 +1095,17 @@ func (m *FolderConfiguration) ProtoSize() (n int) {
if m.SyncOwnership {
n += 3
}
if m.ScanOwnership {
if m.SendOwnership {
n += 3
}
if m.SyncXattrs {
n += 3
}
if m.SendXattrs {
n += 3
}
l = m.XattrFilter.ProtoSize()
n += 2 + l + sovFolderconfiguration(uint64(l))
if m.DeprecatedReadOnly {
n += 4
}
@@ -861,6 +1115,46 @@ func (m *FolderConfiguration) ProtoSize() (n int) {
if m.DeprecatedPullers != 0 {
n += 3 + sovFolderconfiguration(uint64(m.DeprecatedPullers))
}
if m.DeprecatedScanOwnership {
n += 4
}
return n
}
func (m *XattrFilter) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Entries) > 0 {
for _, e := range m.Entries {
l = e.ProtoSize()
n += 1 + l + sovFolderconfiguration(uint64(l))
}
}
if m.MaxSingleEntrySize != 0 {
n += 1 + sovFolderconfiguration(uint64(m.MaxSingleEntrySize))
}
if m.MaxTotalSize != 0 {
n += 1 + sovFolderconfiguration(uint64(m.MaxTotalSize))
}
return n
}
func (m *XattrFilterEntry) ProtoSize() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Match)
if l > 0 {
n += 1 + l + sovFolderconfiguration(uint64(l))
}
if m.Permit {
n += 2
}
return n
}
@@ -1821,7 +2115,7 @@ func (m *FolderConfiguration) Unmarshal(dAtA []byte) error {
m.SyncOwnership = bool(v != 0)
case 36:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ScanOwnership", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field SendOwnership", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
@@ -1838,7 +2132,80 @@ func (m *FolderConfiguration) Unmarshal(dAtA []byte) error {
break
}
}
m.ScanOwnership = bool(v != 0)
m.SendOwnership = bool(v != 0)
case 37:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field SyncXattrs", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.SyncXattrs = bool(v != 0)
case 38:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field SendXattrs", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.SendXattrs = bool(v != 0)
case 39:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field XattrFilter", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthFolderconfiguration
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthFolderconfiguration
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.XattrFilter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 9000:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedReadOnly", wireType)
@@ -1889,6 +2256,250 @@ func (m *FolderConfiguration) Unmarshal(dAtA []byte) error {
break
}
}
case 9003:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedScanOwnership", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.DeprecatedScanOwnership = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := skipFolderconfiguration(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthFolderconfiguration
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *XattrFilter) 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 ErrIntOverflowFolderconfiguration
}
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: XattrFilter: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: XattrFilter: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthFolderconfiguration
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthFolderconfiguration
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Entries = append(m.Entries, XattrFilterEntry{})
if err := m.Entries[len(m.Entries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxSingleEntrySize", wireType)
}
m.MaxSingleEntrySize = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.MaxSingleEntrySize |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxTotalSize", wireType)
}
m.MaxTotalSize = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.MaxTotalSize |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipFolderconfiguration(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthFolderconfiguration
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *XattrFilterEntry) 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 ErrIntOverflowFolderconfiguration
}
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: XattrFilterEntry: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: XattrFilterEntry: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
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 ErrInvalidLengthFolderconfiguration
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthFolderconfiguration
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Match = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Permit", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowFolderconfiguration
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.Permit = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := skipFolderconfiguration(dAtA[iNdEx:])