diff --git a/client/llb/fileop.go b/client/llb/fileop.go index d41f9e4cb09bd..074fb35edc567 100644 --- a/client/llb/fileop.go +++ b/client/llb/fileop.go @@ -237,9 +237,10 @@ func (up *UserOpt) marshal(base pb.InputIndex) *pb.UserOpt { return nil } if up.Name != "" { - return &pb.UserOpt{Name: up.Name, Input: base} + return &pb.UserOpt{User: &pb.UserOpt_ByName{ByName: &pb.NamedUserOpt{ + Name: up.Name, Input: base}}} } - return &pb.UserOpt{Id: uint32(up.UID), Input: -1} + return &pb.UserOpt{User: &pb.UserOpt_ByID{ByID: uint32(up.UID)}} } func Mkfile(p string, m os.FileMode, dt []byte, opts ...MkfileOption) *FileAction { @@ -415,16 +416,16 @@ type fileActionCopy struct { func (a *fileActionCopy) toProtoAction(parent string, base pb.InputIndex) pb.IsFileAction { c := &pb.FileActionCopy{ - Src: a.sourcePath(), - Dest: normalizePath(parent, a.dest), - Owner: a.info.ChownOpt.marshal(base), - AllowWildcard: a.info.AllowWildcard, - AllowEmptyWildcard: a.info.AllowEmptyWildcard, - FollowSymlink: a.info.FollowSymlinks, - DirCopyContents: a.info.CopyDirContentsOnly, - AttemptUnpack: a.info.AttemptUnpack, - CreateDestPath: a.info.CreateDestPath, - Timestamp: marshalTime(a.info.CreatedTime), + Src: a.sourcePath(), + Dest: normalizePath(parent, a.dest), + Owner: a.info.ChownOpt.marshal(base), + AllowWildcard: a.info.AllowWildcard, + AllowEmptyWildcard: a.info.AllowEmptyWildcard, + FollowSymlink: a.info.FollowSymlinks, + DirCopyContents: a.info.CopyDirContentsOnly, + AttemptUnpackDockerCompatibility: a.info.AttemptUnpack, + CreateDestPath: a.info.CreateDestPath, + Timestamp: marshalTime(a.info.CreatedTime), } if a.info.Mode != nil { c.Mode = int32(*a.info.Mode) diff --git a/client/llb/fileop_test.go b/client/llb/fileop_test.go index 76ae9b65f8e14..6576530437c53 100644 --- a/client/llb/fileop_test.go +++ b/client/llb/fileop_test.go @@ -478,18 +478,14 @@ func TestFileOwner(t *testing.T) { action = f.Actions[1] mkdir = action.Action.(*pb.FileAction_Mkdir).Mkdir - require.Equal(t, 123, int(mkdir.Owner.User.Id)) - require.Equal(t, "", mkdir.Owner.User.Name) - require.Equal(t, -1, int(mkdir.Owner.User.Input)) - require.Equal(t, 456, int(mkdir.Owner.Group.Id)) - require.Equal(t, "", mkdir.Owner.Group.Name) - require.Equal(t, -1, int(mkdir.Owner.Group.Input)) + require.Equal(t, 123, int(mkdir.Owner.User.User.(*pb.UserOpt_ByID).ByID)) + require.Equal(t, 456, int(mkdir.Owner.Group.User.(*pb.UserOpt_ByID).ByID)) action = f.Actions[2] mkdir = action.Action.(*pb.FileAction_Mkdir).Mkdir - require.Equal(t, 0, int(mkdir.Owner.User.Id)) - require.Equal(t, "foouser", mkdir.Owner.User.Name) - require.Equal(t, 0, int(mkdir.Owner.User.Input)) + + require.Equal(t, "foouser", mkdir.Owner.User.User.(*pb.UserOpt_ByName).ByName.Name) + require.Equal(t, 0, int(mkdir.Owner.User.User.(*pb.UserOpt_ByName).ByName.Input)) require.Nil(t, mkdir.Owner.Group) } @@ -524,44 +520,36 @@ func TestFileCopyOwner(t *testing.T) { action := f.Actions[0] mkdir := action.Action.(*pb.FileAction_Mkdir).Mkdir - require.Equal(t, 0, int(mkdir.Owner.User.Id)) - require.Equal(t, "user1", mkdir.Owner.User.Name) - require.Equal(t, -1, int(mkdir.Owner.User.Input)) + require.Equal(t, "user1", mkdir.Owner.User.User.(*pb.UserOpt_ByName).ByName.Name) + require.Equal(t, -1, int(mkdir.Owner.User.User.(*pb.UserOpt_ByName).ByName.Input)) require.Nil(t, mkdir.Owner.Group) action = f.Actions[1] copy := action.Action.(*pb.FileAction_Copy).Copy require.Equal(t, "/src1", copy.Src) - require.Equal(t, 0, int(copy.Owner.User.Id)) - require.Equal(t, "user2", copy.Owner.User.Name) - require.Equal(t, -1, int(copy.Owner.User.Input)) + require.Equal(t, "user2", copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Name) + require.Equal(t, -1, int(copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Input)) require.Nil(t, copy.Owner.Group) action = f.Actions[2] copy = action.Action.(*pb.FileAction_Copy).Copy require.Equal(t, "/src0", copy.Src) - require.Equal(t, 0, int(copy.Owner.User.Id)) - require.Equal(t, "user3", copy.Owner.User.Name) - require.Equal(t, 0, int(copy.Owner.User.Input)) + require.Equal(t, "user3", copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Name) + require.Equal(t, 0, int(copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Input)) require.Nil(t, copy.Owner.Group) action = f.Actions[3] copy = action.Action.(*pb.FileAction_Copy).Copy require.Equal(t, "/src2", copy.Src) - require.Equal(t, 0, int(copy.Owner.User.Id)) - require.Equal(t, "user4", copy.Owner.User.Name) - require.Equal(t, -1, int(copy.Owner.User.Input)) + require.Equal(t, "user4", copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Name) + require.Equal(t, -1, int(copy.Owner.User.User.(*pb.UserOpt_ByName).ByName.Input)) require.Nil(t, copy.Owner.Group) action = f.Actions[4] copy = action.Action.(*pb.FileAction_Copy).Copy require.Equal(t, "/src3", copy.Src) - require.Equal(t, 1, int(copy.Owner.User.Id)) - require.Equal(t, "", copy.Owner.User.Name) - require.Equal(t, -1, int(copy.Owner.User.Input)) - require.Equal(t, 2, int(copy.Owner.Group.Id)) - require.Equal(t, "", copy.Owner.Group.Name) - require.Equal(t, -1, int(copy.Owner.Group.Input)) + require.Equal(t, 1, int(copy.Owner.User.User.(*pb.UserOpt_ByID).ByID)) + require.Equal(t, 2, int(copy.Owner.Group.User.(*pb.UserOpt_ByID).ByID)) } func TestFileCreatedTime(t *testing.T) { diff --git a/solver/pb/ops.pb.go b/solver/pb/ops.pb.go index dc427008efd61..92dbf76b7f4bf 100644 --- a/solver/pb/ops.pb.go +++ b/solver/pb/ops.pb.go @@ -37,6 +37,7 @@ FileActionRm ChownOpt UserOpt + NamedUserOpt */ package pb @@ -1163,17 +1164,28 @@ func _FileAction_OneofSizer(msg proto.Message) (n int) { } type FileActionCopy struct { - Src string `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"` - Dest string `protobuf:"bytes,2,opt,name=dest,proto3" json:"dest,omitempty"` - Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` - Mode int32 `protobuf:"varint,5,opt,name=mode,proto3" json:"mode,omitempty"` - FollowSymlink bool `protobuf:"varint,6,opt,name=followSymlink,proto3" json:"followSymlink,omitempty"` - DirCopyContents bool `protobuf:"varint,7,opt,name=dirCopyContents,proto3" json:"dirCopyContents,omitempty"` - AttemptUnpack bool `protobuf:"varint,8,opt,name=attemptUnpack,proto3" json:"attemptUnpack,omitempty"` - CreateDestPath bool `protobuf:"varint,9,opt,name=createDestPath,proto3" json:"createDestPath,omitempty"` - AllowWildcard bool `protobuf:"varint,10,opt,name=allowWildcard,proto3" json:"allowWildcard,omitempty"` - AllowEmptyWildcard bool `protobuf:"varint,11,opt,name=allowEmptyWildcard,proto3" json:"allowEmptyWildcard,omitempty"` - Timestamp int64 `protobuf:"varint,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // src is the source path + Src string `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"` + // dest path + Dest string `protobuf:"bytes,2,opt,name=dest,proto3" json:"dest,omitempty"` + // optional owner override + Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` + // optional permission bits override + Mode int32 `protobuf:"varint,5,opt,name=mode,proto3" json:"mode,omitempty"` + // followSymlink resolves symlinks in src + FollowSymlink bool `protobuf:"varint,6,opt,name=followSymlink,proto3" json:"followSymlink,omitempty"` + // dirCopyContents only copies contents if src is a directory + DirCopyContents bool `protobuf:"varint,7,opt,name=dirCopyContents,proto3" json:"dirCopyContents,omitempty"` + // attemptUnpackDockerCompatibility detects if src is an archive to unpack it instead + AttemptUnpackDockerCompatibility bool `protobuf:"varint,8,opt,name=attemptUnpackDockerCompatibility,proto3" json:"attemptUnpackDockerCompatibility,omitempty"` + // createDestPath creates dest path directories if needed + CreateDestPath bool `protobuf:"varint,9,opt,name=createDestPath,proto3" json:"createDestPath,omitempty"` + // allowWildcard allows filepath.Match wildcards in src path + AllowWildcard bool `protobuf:"varint,10,opt,name=allowWildcard,proto3" json:"allowWildcard,omitempty"` + // allowEmptyWildcard doesn't fail the whole copy if wildcard doesn't resolve to files + AllowEmptyWildcard bool `protobuf:"varint,11,opt,name=allowEmptyWildcard,proto3" json:"allowEmptyWildcard,omitempty"` + // optional created time override + Timestamp int64 `protobuf:"varint,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionCopy) Reset() { *m = FileActionCopy{} } @@ -1223,9 +1235,9 @@ func (m *FileActionCopy) GetDirCopyContents() bool { return false } -func (m *FileActionCopy) GetAttemptUnpack() bool { +func (m *FileActionCopy) GetAttemptUnpackDockerCompatibility() bool { if m != nil { - return m.AttemptUnpack + return m.AttemptUnpackDockerCompatibility } return false } @@ -1259,11 +1271,16 @@ func (m *FileActionCopy) GetTimestamp() int64 { } type FileActionMkFile struct { - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // path for the new file + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // permission bits + Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + // data is the new file contents + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + // optional owner for the new file + Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` + // optional created time override + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionMkFile) Reset() { *m = FileActionMkFile{} } @@ -1307,11 +1324,16 @@ func (m *FileActionMkFile) GetTimestamp() int64 { } type FileActionMkDir struct { - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` - MakeParents bool `protobuf:"varint,3,opt,name=makeParents,proto3" json:"makeParents,omitempty"` - Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // path for the new directory + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // permission bits + Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + // makeParents creates parent directories as well if needed + MakeParents bool `protobuf:"varint,3,opt,name=makeParents,proto3" json:"makeParents,omitempty"` + // optional owner for the new directory + Owner *ChownOpt `protobuf:"bytes,4,opt,name=owner" json:"owner,omitempty"` + // optional created time override + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } func (m *FileActionMkDir) Reset() { *m = FileActionMkDir{} } @@ -1355,9 +1377,12 @@ func (m *FileActionMkDir) GetTimestamp() int64 { } type FileActionRm struct { - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - AllowNotFound bool `protobuf:"varint,2,opt,name=allowNotFound,proto3" json:"allowNotFound,omitempty"` - AllowWildcard bool `protobuf:"varint,3,opt,name=allowWildcard,proto3" json:"allowWildcard,omitempty"` + // path to remove + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // allowNotFound doesn't fail the rm if file is not found + AllowNotFound bool `protobuf:"varint,2,opt,name=allowNotFound,proto3" json:"allowNotFound,omitempty"` + // allowWildcard allows filepath.Match wildcards in path + AllowWildcard bool `protobuf:"varint,3,opt,name=allowWildcard,proto3" json:"allowWildcard,omitempty"` } func (m *FileActionRm) Reset() { *m = FileActionRm{} } @@ -1411,9 +1436,10 @@ func (m *ChownOpt) GetGroup() *UserOpt { } type UserOpt struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Input InputIndex `protobuf:"varint,2,opt,name=input,proto3,customtype=InputIndex" json:"input"` - Id uint32 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` + // Types that are valid to be assigned to User: + // *UserOpt_ByName + // *UserOpt_ByID + User isUserOpt_User `protobuf_oneof:"user"` } func (m *UserOpt) Reset() { *m = UserOpt{} } @@ -1421,20 +1447,129 @@ func (m *UserOpt) String() string { return proto.CompactTextString(m) func (*UserOpt) ProtoMessage() {} func (*UserOpt) Descriptor() ([]byte, []int) { return fileDescriptorOps, []int{25} } -func (m *UserOpt) GetName() string { +type isUserOpt_User interface { + isUserOpt_User() + MarshalTo([]byte) (int, error) + Size() int +} + +type UserOpt_ByName struct { + ByName *NamedUserOpt `protobuf:"bytes,1,opt,name=byName,oneof"` +} +type UserOpt_ByID struct { + ByID uint32 `protobuf:"varint,2,opt,name=byID,proto3,oneof"` +} + +func (*UserOpt_ByName) isUserOpt_User() {} +func (*UserOpt_ByID) isUserOpt_User() {} + +func (m *UserOpt) GetUser() isUserOpt_User { if m != nil { - return m.Name + return m.User } - return "" + return nil } -func (m *UserOpt) GetId() uint32 { - if m != nil { - return m.Id +func (m *UserOpt) GetByName() *NamedUserOpt { + if x, ok := m.GetUser().(*UserOpt_ByName); ok { + return x.ByName + } + return nil +} + +func (m *UserOpt) GetByID() uint32 { + if x, ok := m.GetUser().(*UserOpt_ByID); ok { + return x.ByID } return 0 } +// XXX_OneofFuncs is for the internal use of the proto package. +func (*UserOpt) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _UserOpt_OneofMarshaler, _UserOpt_OneofUnmarshaler, _UserOpt_OneofSizer, []interface{}{ + (*UserOpt_ByName)(nil), + (*UserOpt_ByID)(nil), + } +} + +func _UserOpt_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*UserOpt) + // user + switch x := m.User.(type) { + case *UserOpt_ByName: + _ = b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ByName); err != nil { + return err + } + case *UserOpt_ByID: + _ = b.EncodeVarint(2<<3 | proto.WireVarint) + _ = b.EncodeVarint(uint64(x.ByID)) + case nil: + default: + return fmt.Errorf("UserOpt.User has unexpected type %T", x) + } + return nil +} + +func _UserOpt_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*UserOpt) + switch tag { + case 1: // user.byName + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(NamedUserOpt) + err := b.DecodeMessage(msg) + m.User = &UserOpt_ByName{msg} + return true, err + case 2: // user.byID + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.User = &UserOpt_ByID{uint32(x)} + return true, err + default: + return false, nil + } +} + +func _UserOpt_OneofSizer(msg proto.Message) (n int) { + m := msg.(*UserOpt) + // user + switch x := m.User.(type) { + case *UserOpt_ByName: + s := proto.Size(x.ByName) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *UserOpt_ByID: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.ByID)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type NamedUserOpt struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Input InputIndex `protobuf:"varint,2,opt,name=input,proto3,customtype=InputIndex" json:"input"` +} + +func (m *NamedUserOpt) Reset() { *m = NamedUserOpt{} } +func (m *NamedUserOpt) String() string { return proto.CompactTextString(m) } +func (*NamedUserOpt) ProtoMessage() {} +func (*NamedUserOpt) Descriptor() ([]byte, []int) { return fileDescriptorOps, []int{26} } + +func (m *NamedUserOpt) GetName() string { + if m != nil { + return m.Name + } + return "" +} + func init() { proto.RegisterType((*Op)(nil), "pb.Op") proto.RegisterType((*Platform)(nil), "pb.Platform") @@ -1462,6 +1597,7 @@ func init() { proto.RegisterType((*FileActionRm)(nil), "pb.FileActionRm") proto.RegisterType((*ChownOpt)(nil), "pb.ChownOpt") proto.RegisterType((*UserOpt)(nil), "pb.UserOpt") + proto.RegisterType((*NamedUserOpt)(nil), "pb.NamedUserOpt") proto.RegisterEnum("pb.NetMode", NetMode_name, NetMode_value) proto.RegisterEnum("pb.MountType", MountType_name, MountType_value) proto.RegisterEnum("pb.CacheSharingOpt", CacheSharingOpt_name, CacheSharingOpt_value) @@ -2631,10 +2767,10 @@ func (m *FileActionCopy) MarshalTo(dAtA []byte) (int, error) { } i++ } - if m.AttemptUnpack { + if m.AttemptUnpackDockerCompatibility { dAtA[i] = 0x40 i++ - if m.AttemptUnpack { + if m.AttemptUnpackDockerCompatibility { dAtA[i] = 1 } else { dAtA[i] = 0 @@ -2876,6 +3012,52 @@ func (m *UserOpt) Marshal() (dAtA []byte, err error) { } func (m *UserOpt) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.User != nil { + nn27, err := m.User.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += nn27 + } + return i, nil +} + +func (m *UserOpt_ByName) MarshalTo(dAtA []byte) (int, error) { + i := 0 + if m.ByName != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintOps(dAtA, i, uint64(m.ByName.Size())) + n28, err := m.ByName.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + } + return i, nil +} +func (m *UserOpt_ByID) MarshalTo(dAtA []byte) (int, error) { + i := 0 + dAtA[i] = 0x10 + i++ + i = encodeVarintOps(dAtA, i, uint64(m.ByID)) + return i, nil +} +func (m *NamedUserOpt) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NamedUserOpt) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -2891,11 +3073,6 @@ func (m *UserOpt) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintOps(dAtA, i, uint64(m.Input)) } - if m.Id != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintOps(dAtA, i, uint64(m.Id)) - } return i, nil } @@ -3416,7 +3593,7 @@ func (m *FileActionCopy) Size() (n int) { if m.DirCopyContents { n += 2 } - if m.AttemptUnpack { + if m.AttemptUnpackDockerCompatibility { n += 2 } if m.CreateDestPath { @@ -3512,6 +3689,30 @@ func (m *ChownOpt) Size() (n int) { } func (m *UserOpt) Size() (n int) { + var l int + _ = l + if m.User != nil { + n += m.User.Size() + } + return n +} + +func (m *UserOpt_ByName) Size() (n int) { + var l int + _ = l + if m.ByName != nil { + l = m.ByName.Size() + n += 1 + l + sovOps(uint64(l)) + } + return n +} +func (m *UserOpt_ByID) Size() (n int) { + var l int + _ = l + n += 1 + sovOps(uint64(m.ByID)) + return n +} +func (m *NamedUserOpt) Size() (n int) { var l int _ = l l = len(m.Name) @@ -3521,9 +3722,6 @@ func (m *UserOpt) Size() (n int) { if m.Input != 0 { n += 1 + sovOps(uint64(m.Input)) } - if m.Id != 0 { - n += 1 + sovOps(uint64(m.Id)) - } return n } @@ -7226,7 +7424,7 @@ func (m *FileActionCopy) Unmarshal(dAtA []byte) error { m.DirCopyContents = bool(v != 0) case 8: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AttemptUnpack", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AttemptUnpackDockerCompatibility", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -7243,7 +7441,7 @@ func (m *FileActionCopy) Unmarshal(dAtA []byte) error { break } } - m.AttemptUnpack = bool(v != 0) + m.AttemptUnpackDockerCompatibility = bool(v != 0) case 9: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CreateDestPath", wireType) @@ -7961,9 +8159,9 @@ func (m *UserOpt) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ByName", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowOps @@ -7973,26 +8171,29 @@ func (m *UserOpt) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthOps } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + v := &NamedUserOpt{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.User = &UserOpt_ByName{v} iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Input", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ByID", wireType) } - m.Input = 0 + var v uint32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowOps @@ -8002,16 +8203,96 @@ func (m *UserOpt) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Input |= (InputIndex(b) & 0x7F) << shift + v |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - case 3: + m.User = &UserOpt_ByID{v} + default: + iNdEx = preIndex + skippy, err := skipOps(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthOps + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamedUserOpt) 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 ErrIntOverflowOps + } + 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: NamedUserOpt: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamedUserOpt: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowOps + } + 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 ErrInvalidLengthOps + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Input", wireType) } - m.Id = 0 + m.Input = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowOps @@ -8021,7 +8302,7 @@ func (m *UserOpt) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Id |= (uint32(b) & 0x7F) << shift + m.Input |= (InputIndex(b) & 0x7F) << shift if b < 0x80 { break } @@ -8155,122 +8436,125 @@ var ( func init() { proto.RegisterFile("ops.proto", fileDescriptorOps) } var fileDescriptorOps = []byte{ - // 1866 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6e, 0x23, 0xc7, - 0x11, 0x16, 0x87, 0xff, 0x45, 0x49, 0xcb, 0xb4, 0xd7, 0x1b, 0x46, 0xd9, 0x48, 0xf2, 0xd8, 0x31, - 0xe8, 0xfd, 0xa1, 0x00, 0x19, 0xb0, 0x0d, 0x1f, 0x82, 0x48, 0x22, 0x17, 0x62, 0x9c, 0x15, 0x85, - 0xe6, 0xfe, 0x1c, 0x17, 0xa3, 0x99, 0x26, 0x35, 0x20, 0x39, 0x3d, 0xe8, 0x69, 0xae, 0xc4, 0x4b, - 0x10, 0xec, 0x13, 0x18, 0x08, 0x90, 0x5b, 0x0e, 0x39, 0xe6, 0x21, 0x72, 0xf7, 0x31, 0x08, 0x72, - 0x48, 0x72, 0x70, 0x82, 0xcd, 0x8b, 0x04, 0x55, 0xdd, 0xc3, 0x19, 0x72, 0x15, 0xec, 0x2e, 0x12, - 0xe4, 0xc4, 0xee, 0xaf, 0xbe, 0xae, 0xae, 0xae, 0xaa, 0xee, 0xaa, 0x21, 0xd4, 0x65, 0x9c, 0x74, - 0x62, 0x25, 0xb5, 0x64, 0x4e, 0x7c, 0xb1, 0xf3, 0x70, 0x1c, 0xea, 0xcb, 0xf9, 0x45, 0xc7, 0x97, - 0xb3, 0x83, 0xb1, 0x1c, 0xcb, 0x03, 0x12, 0x5d, 0xcc, 0x47, 0x34, 0xa3, 0x09, 0x8d, 0xcc, 0x12, - 0xf7, 0xf7, 0x0e, 0x38, 0x83, 0x98, 0x7d, 0x04, 0x95, 0x30, 0x8a, 0xe7, 0x3a, 0x69, 0x15, 0xf6, - 0x8b, 0xed, 0xc6, 0x61, 0xbd, 0x13, 0x5f, 0x74, 0xfa, 0x88, 0x70, 0x2b, 0x60, 0xfb, 0x50, 0x12, - 0xd7, 0xc2, 0x6f, 0x39, 0xfb, 0x85, 0x76, 0xe3, 0x10, 0x90, 0xd0, 0xbb, 0x16, 0xfe, 0x20, 0x3e, - 0xdd, 0xe0, 0x24, 0x61, 0x9f, 0x42, 0x25, 0x91, 0x73, 0xe5, 0x8b, 0x56, 0x91, 0x38, 0x9b, 0xc8, - 0x19, 0x12, 0x42, 0x2c, 0x2b, 0x45, 0x4d, 0xa3, 0x70, 0x2a, 0x5a, 0xa5, 0x4c, 0xd3, 0xa3, 0x70, - 0x6a, 0x38, 0x24, 0x61, 0x1f, 0x43, 0xf9, 0x62, 0x1e, 0x4e, 0x83, 0x56, 0x99, 0x28, 0x0d, 0xa4, - 0x1c, 0x23, 0x40, 0x1c, 0x23, 0x63, 0x6d, 0xa8, 0xc5, 0x53, 0x4f, 0x8f, 0xa4, 0x9a, 0xb5, 0x20, - 0xdb, 0xf0, 0xdc, 0x62, 0x7c, 0x29, 0x65, 0x5f, 0x42, 0xc3, 0x97, 0x51, 0xa2, 0x95, 0x17, 0x46, - 0x3a, 0x69, 0x35, 0x88, 0xfc, 0x21, 0x92, 0x9f, 0x4b, 0x35, 0x11, 0xea, 0x24, 0x13, 0xf2, 0x3c, - 0xf3, 0xb8, 0x04, 0x8e, 0x8c, 0xdd, 0xdf, 0x16, 0xa0, 0x96, 0x6a, 0x65, 0x2e, 0x6c, 0x1e, 0x29, - 0xff, 0x32, 0xd4, 0xc2, 0xd7, 0x73, 0x25, 0x5a, 0x85, 0xfd, 0x42, 0xbb, 0xce, 0x57, 0x30, 0xb6, - 0x0d, 0xce, 0x60, 0x48, 0x8e, 0xaa, 0x73, 0x67, 0x30, 0x64, 0x2d, 0xa8, 0x3e, 0xf3, 0x54, 0xe8, - 0x45, 0x9a, 0x3c, 0x53, 0xe7, 0xe9, 0x94, 0xdd, 0x85, 0xfa, 0x60, 0xf8, 0x4c, 0xa8, 0x24, 0x94, - 0x11, 0xf9, 0xa3, 0xce, 0x33, 0x80, 0xed, 0x02, 0x0c, 0x86, 0x8f, 0x84, 0x87, 0x4a, 0x93, 0x56, - 0x79, 0xbf, 0xd8, 0xae, 0xf3, 0x1c, 0xe2, 0xfe, 0x0a, 0xca, 0x14, 0x23, 0xf6, 0x0b, 0xa8, 0x04, - 0xe1, 0x58, 0x24, 0xda, 0x98, 0x73, 0x7c, 0xf8, 0xdd, 0xf7, 0x7b, 0x1b, 0x7f, 0xff, 0x7e, 0xef, - 0x5e, 0x2e, 0x19, 0x64, 0x2c, 0x22, 0x5f, 0x46, 0xda, 0x0b, 0x23, 0xa1, 0x92, 0x83, 0xb1, 0x7c, - 0x68, 0x96, 0x74, 0xba, 0xf4, 0xc3, 0xad, 0x06, 0xf6, 0x19, 0x94, 0xc3, 0x28, 0x10, 0xd7, 0x64, - 0x7f, 0xf1, 0xf8, 0x03, 0xab, 0xaa, 0x31, 0x98, 0xeb, 0x78, 0xae, 0xfb, 0x28, 0xe2, 0x86, 0xe1, - 0xc6, 0x50, 0x31, 0x29, 0xc0, 0xee, 0x42, 0x69, 0x26, 0xb4, 0x47, 0xdb, 0x37, 0x0e, 0x6b, 0xe8, - 0xda, 0xc7, 0x42, 0x7b, 0x9c, 0x50, 0xcc, 0xae, 0x99, 0x9c, 0xa3, 0xeb, 0x9d, 0x2c, 0xbb, 0x1e, - 0x23, 0xc2, 0xad, 0x80, 0xfd, 0x14, 0xaa, 0x91, 0xd0, 0x57, 0x52, 0x4d, 0xc8, 0x45, 0xdb, 0x26, - 0xe6, 0x67, 0x42, 0x3f, 0x96, 0x81, 0xe0, 0xa9, 0xcc, 0xfd, 0x43, 0x01, 0x4a, 0xa8, 0x98, 0x31, - 0x28, 0x79, 0x6a, 0x6c, 0xd2, 0xb5, 0xce, 0x69, 0xcc, 0x9a, 0x50, 0x14, 0xd1, 0x4b, 0xda, 0xa3, - 0xce, 0x71, 0x88, 0x88, 0x7f, 0x15, 0x58, 0xa7, 0xe3, 0x10, 0xd7, 0xcd, 0x13, 0xa1, 0xac, 0xaf, - 0x69, 0xcc, 0x3e, 0x83, 0x7a, 0xac, 0xe4, 0xf5, 0xe2, 0x05, 0xae, 0x2e, 0xe7, 0x32, 0x09, 0xc1, - 0x5e, 0xf4, 0x92, 0xd7, 0x62, 0x3b, 0x62, 0xf7, 0x00, 0xc4, 0xb5, 0x56, 0xde, 0xa9, 0x4c, 0x74, - 0xd2, 0xaa, 0xd0, 0x69, 0x28, 0x81, 0x11, 0xe8, 0x9f, 0xf3, 0x9c, 0xd4, 0xfd, 0xb3, 0x03, 0x65, - 0x3a, 0x24, 0x6b, 0xa3, 0x4b, 0xe3, 0xb9, 0x89, 0x4e, 0xf1, 0x98, 0x59, 0x97, 0x02, 0x05, 0x6f, - 0xe9, 0x51, 0x0c, 0xe4, 0x0e, 0xd4, 0x12, 0x31, 0x15, 0xbe, 0x96, 0xca, 0xe6, 0xcf, 0x72, 0x8e, - 0xa6, 0x07, 0x18, 0x62, 0x73, 0x1a, 0x1a, 0xb3, 0xfb, 0x50, 0x91, 0x14, 0x17, 0x3a, 0xd0, 0x7f, - 0x88, 0x96, 0xa5, 0xa0, 0x72, 0x25, 0xbc, 0x40, 0x46, 0xd3, 0x05, 0x1d, 0xb3, 0xc6, 0x97, 0x73, - 0x76, 0x1f, 0xea, 0x14, 0x89, 0x27, 0x8b, 0x58, 0xb4, 0x2a, 0x14, 0x81, 0xad, 0x65, 0x94, 0x10, - 0xe4, 0x99, 0x1c, 0x6f, 0x9e, 0xef, 0xf9, 0x97, 0x62, 0x10, 0xeb, 0xd6, 0xed, 0xcc, 0x5f, 0x27, - 0x16, 0xe3, 0x4b, 0x29, 0xaa, 0x4d, 0x84, 0xaf, 0x84, 0x46, 0xea, 0x87, 0x44, 0x25, 0xb5, 0xc3, - 0x14, 0xe4, 0x99, 0x9c, 0xb9, 0x50, 0x19, 0x0e, 0x4f, 0x91, 0x79, 0x27, 0x7b, 0x19, 0x0c, 0xc2, - 0xad, 0xc4, 0xed, 0x43, 0x2d, 0xdd, 0x06, 0xaf, 0x59, 0xbf, 0x6b, 0x2f, 0xa0, 0xd3, 0xef, 0xb2, - 0x87, 0x50, 0x4d, 0x2e, 0x3d, 0x15, 0x46, 0x63, 0xf2, 0xdd, 0xf6, 0xe1, 0x07, 0x4b, 0xab, 0x86, - 0x06, 0x47, 0x4d, 0x29, 0xc7, 0x95, 0x50, 0x5f, 0x9a, 0xf1, 0x86, 0xae, 0x26, 0x14, 0xe7, 0x61, - 0x40, 0x7a, 0xb6, 0x38, 0x0e, 0x11, 0x19, 0x87, 0x26, 0x97, 0xb6, 0x38, 0x0e, 0x31, 0x20, 0x33, - 0x19, 0x98, 0x77, 0x6c, 0x8b, 0xd3, 0x18, 0x7d, 0x2c, 0x63, 0x1d, 0xca, 0xc8, 0x9b, 0xa6, 0x3e, - 0x4e, 0xe7, 0xee, 0x34, 0x3d, 0xdf, 0xff, 0x65, 0xb7, 0xdf, 0x14, 0xa0, 0x96, 0x3e, 0xbe, 0xf8, - 0x92, 0x84, 0x81, 0x88, 0x74, 0x38, 0x0a, 0x85, 0xb2, 0x1b, 0xe7, 0x10, 0xf6, 0x10, 0xca, 0x9e, - 0xd6, 0x2a, 0xbd, 0xa0, 0x3f, 0xcc, 0xbf, 0xdc, 0x9d, 0x23, 0x94, 0xf4, 0x22, 0xad, 0x16, 0xdc, - 0xb0, 0x76, 0xbe, 0x02, 0xc8, 0x40, 0xb4, 0x75, 0x22, 0x16, 0x56, 0x2b, 0x0e, 0xd9, 0x6d, 0x28, - 0xbf, 0xf4, 0xa6, 0x73, 0x61, 0x73, 0xd8, 0x4c, 0xbe, 0x76, 0xbe, 0x2a, 0xb8, 0x7f, 0x74, 0xa0, - 0x6a, 0x5f, 0x72, 0xf6, 0x00, 0xaa, 0xf4, 0x92, 0x5b, 0x8b, 0x6e, 0xbe, 0x18, 0x29, 0x85, 0x1d, - 0x2c, 0x4b, 0x54, 0xce, 0x46, 0xab, 0xca, 0x94, 0x2a, 0x6b, 0x63, 0x56, 0xb0, 0x8a, 0x81, 0x18, - 0xd9, 0x5a, 0xb4, 0x8d, 0xec, 0xae, 0x18, 0x85, 0x51, 0x88, 0xfe, 0xe1, 0x28, 0x62, 0x0f, 0xd2, - 0x53, 0x97, 0x48, 0xe3, 0x9d, 0xbc, 0xc6, 0x37, 0x0f, 0xdd, 0x87, 0x46, 0x6e, 0x9b, 0x1b, 0x4e, - 0xfd, 0x49, 0xfe, 0xd4, 0x76, 0x4b, 0x52, 0x67, 0x0a, 0x69, 0xe6, 0x85, 0xff, 0xc2, 0x7f, 0x5f, - 0x00, 0x64, 0x2a, 0xdf, 0xfd, 0x61, 0x71, 0x5f, 0x15, 0x01, 0x06, 0x31, 0x3e, 0x9d, 0x81, 0x47, - 0x2f, 0xf2, 0x66, 0x38, 0x8e, 0xa4, 0x12, 0x2f, 0xe8, 0xaa, 0xd2, 0xfa, 0x1a, 0x6f, 0x18, 0x8c, - 0x6e, 0x0c, 0x3b, 0x82, 0x46, 0x20, 0x12, 0x5f, 0x85, 0x94, 0x50, 0xd6, 0xe9, 0x7b, 0x78, 0xa6, - 0x4c, 0x4f, 0xa7, 0x9b, 0x31, 0x8c, 0xaf, 0xf2, 0x6b, 0xd8, 0x21, 0x6c, 0x8a, 0xeb, 0x58, 0x2a, - 0x6d, 0x77, 0x31, 0x05, 0xff, 0x96, 0x69, 0x1d, 0x10, 0xa7, 0x9d, 0x78, 0x43, 0x64, 0x13, 0xe6, - 0x41, 0xc9, 0xf7, 0x62, 0x53, 0xed, 0x1a, 0x87, 0xad, 0xb5, 0xfd, 0x4e, 0xbc, 0xd8, 0x38, 0xed, - 0xf8, 0x73, 0x3c, 0xeb, 0xab, 0x7f, 0xec, 0xdd, 0xcf, 0x95, 0xb8, 0x99, 0xbc, 0x58, 0x1c, 0x50, - 0xbe, 0x4c, 0x42, 0x7d, 0x30, 0xd7, 0xe1, 0xf4, 0xc0, 0x8b, 0x43, 0x54, 0x87, 0x0b, 0xfb, 0x5d, - 0x4e, 0xaa, 0x77, 0x7e, 0x06, 0xcd, 0x75, 0xbb, 0xdf, 0x27, 0x06, 0x3b, 0x5f, 0x42, 0x7d, 0x69, - 0xc7, 0xdb, 0x16, 0xd6, 0xf2, 0xc1, 0xfb, 0x18, 0x1a, 0xb9, 0x73, 0x23, 0xf1, 0x19, 0x11, 0x8d, - 0xf7, 0xcd, 0xc4, 0x7d, 0x85, 0xdd, 0x46, 0x5a, 0x6f, 0x7e, 0x02, 0x70, 0xa9, 0x75, 0xfc, 0x82, - 0x0a, 0x90, 0xdd, 0xa4, 0x8e, 0x08, 0x31, 0xd8, 0x1e, 0x34, 0x70, 0x92, 0x58, 0xb9, 0xb1, 0x94, - 0x56, 0x24, 0x86, 0xf0, 0x63, 0xa8, 0x8f, 0x96, 0xcb, 0x4d, 0xe1, 0xa8, 0x8d, 0xd2, 0xd5, 0x3f, - 0x82, 0x5a, 0x24, 0xad, 0xcc, 0xd4, 0xc3, 0x6a, 0x24, 0x49, 0xe4, 0xde, 0x87, 0x1f, 0xbc, 0xd1, - 0x1a, 0xb1, 0x3b, 0x50, 0x19, 0x85, 0x53, 0x4d, 0xd7, 0x15, 0x4b, 0xac, 0x9d, 0xb9, 0x7f, 0x2b, - 0x00, 0x64, 0x57, 0x0b, 0x3d, 0x82, 0xf7, 0x0e, 0x39, 0x9b, 0xe6, 0x9e, 0x4d, 0xa1, 0x36, 0xb3, - 0x11, 0xb4, 0x79, 0x74, 0x77, 0xf5, 0x3a, 0x76, 0xd2, 0x00, 0x9b, 0xd8, 0x1e, 0xda, 0xd8, 0xbe, - 0x4f, 0xfb, 0xb2, 0xdc, 0x61, 0xe7, 0x1b, 0xd8, 0x5a, 0x51, 0xf7, 0x8e, 0x37, 0x35, 0xcb, 0xb2, - 0x7c, 0xc8, 0x1e, 0x40, 0xc5, 0x94, 0x76, 0x7c, 0x7f, 0x71, 0x64, 0xd5, 0xd0, 0x98, 0xde, 0xf1, - 0xf3, 0xb4, 0xd1, 0xeb, 0x9f, 0xbb, 0x87, 0x50, 0x31, 0x9d, 0x2c, 0x6b, 0x43, 0xd5, 0xf3, 0xf1, - 0x68, 0xe9, 0x73, 0xb5, 0x9d, 0xb6, 0xb9, 0x47, 0x04, 0xf3, 0x54, 0xec, 0xfe, 0xc5, 0x01, 0xc8, - 0xf0, 0xf7, 0xe8, 0x15, 0xbe, 0x86, 0xed, 0x44, 0xf8, 0x32, 0x0a, 0x3c, 0xb5, 0x20, 0xa9, 0xed, - 0xd8, 0x6e, 0x5a, 0xb2, 0xc6, 0xcc, 0xf5, 0x0d, 0xc5, 0xb7, 0xf7, 0x0d, 0x6d, 0x28, 0xf9, 0x32, - 0x5e, 0xd8, 0xeb, 0xcb, 0x56, 0x0f, 0x72, 0x22, 0xe3, 0x05, 0xf6, 0xed, 0xc8, 0x60, 0x1d, 0xa8, - 0xcc, 0x26, 0xd4, 0xdb, 0x9b, 0x36, 0xea, 0xf6, 0x2a, 0xf7, 0xf1, 0x04, 0xc7, 0xf8, 0x25, 0x60, - 0x58, 0xec, 0x3e, 0x94, 0x67, 0x93, 0x20, 0x54, 0xd4, 0x71, 0x34, 0x4c, 0xbd, 0xce, 0xd3, 0xbb, - 0xa1, 0xc2, 0x7e, 0x9f, 0x38, 0xcc, 0x05, 0x47, 0xcd, 0x5a, 0x55, 0x62, 0x36, 0xd7, 0xbc, 0x39, - 0x3b, 0xdd, 0xe0, 0x8e, 0x9a, 0x1d, 0xd7, 0xa0, 0x62, 0xfc, 0xea, 0xfe, 0xba, 0x08, 0xdb, 0xab, - 0x56, 0x62, 0x1e, 0x24, 0xca, 0x4f, 0xf3, 0x20, 0x51, 0xfe, 0xb2, 0xa5, 0x72, 0x72, 0x2d, 0x95, - 0x0b, 0x65, 0x79, 0x15, 0xd9, 0x16, 0x31, 0xed, 0x6c, 0x2e, 0xe5, 0x55, 0x84, 0xcd, 0x83, 0x11, - 0x2d, 0x6b, 0x31, 0x9e, 0xb2, 0x6c, 0x6b, 0xf1, 0x27, 0xb0, 0x35, 0x92, 0xd3, 0xa9, 0xbc, 0x1a, - 0x2e, 0x66, 0xd3, 0x30, 0x9a, 0xd0, 0x99, 0x6a, 0x7c, 0x15, 0x64, 0x6d, 0xb8, 0x15, 0x84, 0x0a, - 0xcd, 0x39, 0x91, 0x91, 0x16, 0xd8, 0x13, 0x57, 0x89, 0xb7, 0x0e, 0xa3, 0x3e, 0x4f, 0x6b, 0x31, - 0x8b, 0xf5, 0xd3, 0x28, 0xf6, 0xfc, 0x49, 0xab, 0x66, 0xf4, 0xad, 0x80, 0xec, 0x53, 0xd8, 0xf6, - 0x95, 0xf0, 0xb4, 0xe8, 0x8a, 0x44, 0x9f, 0x7b, 0xfa, 0xb2, 0x55, 0x27, 0xda, 0x1a, 0x4a, 0xda, - 0xd0, 0x8e, 0xe7, 0xe1, 0x34, 0xf0, 0x3d, 0x15, 0xd0, 0x17, 0x13, 0x6a, 0xcb, 0x83, 0xac, 0x03, - 0x8c, 0x80, 0xde, 0x2c, 0xd6, 0x8b, 0x25, 0xb5, 0x41, 0xd4, 0x1b, 0x24, 0xf8, 0xf9, 0xa2, 0xc3, - 0x99, 0x48, 0xb4, 0x37, 0x8b, 0x5b, 0x9b, 0x98, 0x49, 0x3c, 0x03, 0xdc, 0x6f, 0x0b, 0xd0, 0x5c, - 0x0f, 0x3e, 0xba, 0x2e, 0x46, 0x33, 0xed, 0x35, 0xc2, 0xf1, 0xd2, 0x9d, 0x4e, 0xce, 0x9d, 0x18, - 0x1a, 0x7c, 0x2f, 0x30, 0x3f, 0x37, 0x39, 0x8d, 0xdf, 0x29, 0x34, 0x2b, 0x26, 0x95, 0xd7, 0x4d, - 0xfa, 0x5d, 0x01, 0x6e, 0xad, 0x25, 0xd8, 0x3b, 0x5b, 0xb4, 0x0f, 0x8d, 0x99, 0x37, 0x11, 0xe7, - 0x9e, 0xa2, 0xb0, 0x15, 0x4d, 0xc9, 0xcc, 0x41, 0xff, 0x03, 0xfb, 0x22, 0xd8, 0xcc, 0x67, 0xf5, - 0x8d, 0xb6, 0xa5, 0xa1, 0x3c, 0x93, 0xfa, 0x91, 0x9c, 0x47, 0x81, 0xad, 0x33, 0xab, 0xe0, 0x9b, - 0x01, 0x2f, 0xde, 0x10, 0x70, 0xf7, 0x0c, 0x6a, 0xa9, 0x81, 0x6c, 0xcf, 0x7e, 0x1a, 0x15, 0xb2, - 0x6f, 0xee, 0xa7, 0x89, 0x50, 0x68, 0xbb, 0xf9, 0x4e, 0xfa, 0x08, 0xca, 0x63, 0x25, 0xe7, 0xb1, - 0x7d, 0x35, 0x57, 0x18, 0x46, 0xe2, 0x3e, 0x87, 0xaa, 0x45, 0xd0, 0xf4, 0xc8, 0x9b, 0xa5, 0x1f, - 0xc8, 0x34, 0xce, 0x1e, 0x37, 0xe7, 0x6d, 0x8f, 0xdb, 0x36, 0x38, 0xcb, 0xf6, 0xd7, 0x09, 0x83, - 0x7b, 0x6d, 0xa8, 0xda, 0x8f, 0x41, 0x56, 0x87, 0xf2, 0xd3, 0xb3, 0x61, 0xef, 0x49, 0x73, 0x83, - 0xd5, 0xa0, 0x74, 0x3a, 0x18, 0x3e, 0x69, 0x16, 0x70, 0x74, 0x36, 0x38, 0xeb, 0x35, 0x9d, 0x7b, - 0x3f, 0x87, 0xfa, 0xf2, 0xa3, 0x05, 0xe1, 0xe3, 0xfe, 0x59, 0xb7, 0xb9, 0xc1, 0x00, 0x2a, 0xc3, - 0xde, 0x09, 0xef, 0x21, 0xb9, 0x0a, 0xc5, 0xe1, 0xf0, 0xb4, 0xe9, 0xa0, 0xaa, 0x93, 0xa3, 0x93, - 0xd3, 0x5e, 0xb3, 0x88, 0xc3, 0x27, 0x8f, 0xcf, 0x1f, 0x0d, 0x9b, 0xa5, 0x7b, 0x5f, 0xc0, 0xad, - 0xb5, 0x8f, 0x06, 0x5a, 0x7d, 0x7a, 0xc4, 0x7b, 0xa8, 0xa9, 0x01, 0xd5, 0x73, 0xde, 0x7f, 0x76, - 0xf4, 0xa4, 0xd7, 0x2c, 0xa0, 0xe0, 0x97, 0x83, 0x93, 0x6f, 0x7a, 0xdd, 0xa6, 0x73, 0x7c, 0xfb, - 0xbb, 0xd7, 0xbb, 0x85, 0x3f, 0xbd, 0xde, 0x2d, 0xfc, 0xf5, 0xf5, 0x6e, 0xe1, 0x9f, 0xaf, 0x77, - 0x0b, 0xdf, 0xfe, 0x6b, 0x77, 0xe3, 0xa2, 0x42, 0x7f, 0xb4, 0x7c, 0xfe, 0xef, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xe3, 0xa1, 0x74, 0x29, 0xa8, 0x11, 0x00, 0x00, + // 1916 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5f, 0x6f, 0x1b, 0xc7, + 0x11, 0x17, 0x8f, 0x7f, 0x6f, 0x28, 0xc9, 0xec, 0xc6, 0x71, 0x59, 0xd5, 0x95, 0x94, 0x4b, 0x1a, + 0x30, 0x92, 0x4d, 0x01, 0x0a, 0x90, 0x04, 0x79, 0x28, 0x2a, 0x8a, 0x34, 0xc4, 0x24, 0x12, 0x85, + 0xa5, 0xec, 0x3c, 0x1a, 0xc7, 0xbb, 0x25, 0x75, 0x20, 0xef, 0xf6, 0xb0, 0xb7, 0xb4, 0xc4, 0x97, + 0x3e, 0xf8, 0x13, 0x04, 0x28, 0xd0, 0xb7, 0x3e, 0xf4, 0xa5, 0x40, 0x3f, 0x44, 0xdf, 0xf3, 0x58, + 0x14, 0x7d, 0x68, 0xfb, 0x90, 0x16, 0xee, 0x17, 0x29, 0x66, 0x77, 0x8f, 0x77, 0xa4, 0x55, 0xd8, + 0x46, 0x8b, 0x3e, 0x71, 0x76, 0xe6, 0xb7, 0xb3, 0xb3, 0x33, 0xb3, 0x33, 0x73, 0x04, 0x9b, 0xc7, + 0x49, 0x3b, 0x16, 0x5c, 0x72, 0x62, 0xc5, 0xa3, 0x9d, 0xc7, 0x93, 0x40, 0x5e, 0xcf, 0x47, 0x6d, + 0x8f, 0x87, 0x47, 0x13, 0x3e, 0xe1, 0x47, 0x4a, 0x34, 0x9a, 0x8f, 0xd5, 0x4a, 0x2d, 0x14, 0xa5, + 0xb7, 0x38, 0xbf, 0xb3, 0xc0, 0x1a, 0xc4, 0xe4, 0x03, 0xa8, 0x04, 0x51, 0x3c, 0x97, 0x49, 0xb3, + 0xb0, 0x5f, 0x6c, 0xd5, 0x8f, 0xed, 0x76, 0x3c, 0x6a, 0xf7, 0x91, 0x43, 0x8d, 0x80, 0xec, 0x43, + 0x89, 0xdd, 0x32, 0xaf, 0x69, 0xed, 0x17, 0x5a, 0xf5, 0x63, 0x40, 0x40, 0xef, 0x96, 0x79, 0x83, + 0xf8, 0x6c, 0x83, 0x2a, 0x09, 0xf9, 0x18, 0x2a, 0x09, 0x9f, 0x0b, 0x8f, 0x35, 0x8b, 0x0a, 0xb3, + 0x89, 0x98, 0xa1, 0xe2, 0x28, 0x94, 0x91, 0xa2, 0xa6, 0x71, 0x30, 0x63, 0xcd, 0x52, 0xa6, 0xe9, + 0x49, 0x30, 0xd3, 0x18, 0x25, 0x21, 0x1f, 0x42, 0x79, 0x34, 0x0f, 0x66, 0x7e, 0xb3, 0xac, 0x20, + 0x75, 0x84, 0x74, 0x90, 0xa1, 0x30, 0x5a, 0x46, 0x5a, 0x50, 0x8b, 0x67, 0xae, 0x1c, 0x73, 0x11, + 0x36, 0x21, 0x3b, 0xf0, 0xd2, 0xf0, 0xe8, 0x52, 0x4a, 0x3e, 0x87, 0xba, 0xc7, 0xa3, 0x44, 0x0a, + 0x37, 0x88, 0x64, 0xd2, 0xac, 0x2b, 0xf0, 0xfb, 0x08, 0xfe, 0x96, 0x8b, 0x29, 0x13, 0xa7, 0x99, + 0x90, 0xe6, 0x91, 0x9d, 0x12, 0x58, 0x3c, 0x76, 0x7e, 0x53, 0x80, 0x5a, 0xaa, 0x95, 0x38, 0xb0, + 0x79, 0x22, 0xbc, 0xeb, 0x40, 0x32, 0x4f, 0xce, 0x05, 0x6b, 0x16, 0xf6, 0x0b, 0x2d, 0x9b, 0xae, + 0xf0, 0xc8, 0x36, 0x58, 0x83, 0xa1, 0x72, 0x94, 0x4d, 0xad, 0xc1, 0x90, 0x34, 0xa1, 0xfa, 0xcc, + 0x15, 0x81, 0x1b, 0x49, 0xe5, 0x19, 0x9b, 0xa6, 0x4b, 0xf2, 0x10, 0xec, 0xc1, 0xf0, 0x19, 0x13, + 0x49, 0xc0, 0x23, 0xe5, 0x0f, 0x9b, 0x66, 0x0c, 0xb2, 0x0b, 0x30, 0x18, 0x3e, 0x61, 0x2e, 0x2a, + 0x4d, 0x9a, 0xe5, 0xfd, 0x62, 0xcb, 0xa6, 0x39, 0x8e, 0xf3, 0x2b, 0x28, 0xab, 0x18, 0x91, 0xaf, + 0xa0, 0xe2, 0x07, 0x13, 0x96, 0x48, 0x6d, 0x4e, 0xe7, 0xf8, 0xfb, 0x1f, 0xf6, 0x36, 0xfe, 0xfe, + 0xc3, 0xde, 0x41, 0x2e, 0x19, 0x78, 0xcc, 0x22, 0x8f, 0x47, 0xd2, 0x0d, 0x22, 0x26, 0x92, 0xa3, + 0x09, 0x7f, 0xac, 0xb7, 0xb4, 0xbb, 0xea, 0x87, 0x1a, 0x0d, 0xe4, 0x13, 0x28, 0x07, 0x91, 0xcf, + 0x6e, 0x95, 0xfd, 0xc5, 0xce, 0x7b, 0x46, 0x55, 0x7d, 0x30, 0x97, 0xf1, 0x5c, 0xf6, 0x51, 0x44, + 0x35, 0xc2, 0x89, 0xa1, 0xa2, 0x53, 0x80, 0x3c, 0x84, 0x52, 0xc8, 0xa4, 0xab, 0x8e, 0xaf, 0x1f, + 0xd7, 0xd0, 0xb5, 0xe7, 0x4c, 0xba, 0x54, 0x71, 0x31, 0xbb, 0x42, 0x3e, 0x47, 0xd7, 0x5b, 0x59, + 0x76, 0x9d, 0x23, 0x87, 0x1a, 0x01, 0xf9, 0x39, 0x54, 0x23, 0x26, 0x6f, 0xb8, 0x98, 0x2a, 0x17, + 0x6d, 0xeb, 0x98, 0x5f, 0x30, 0x79, 0xce, 0x7d, 0x46, 0x53, 0x99, 0xf3, 0x87, 0x02, 0x94, 0x50, + 0x31, 0x21, 0x50, 0x72, 0xc5, 0x44, 0xa7, 0xab, 0x4d, 0x15, 0x4d, 0x1a, 0x50, 0x64, 0xd1, 0x0b, + 0x75, 0x86, 0x4d, 0x91, 0x44, 0x8e, 0x77, 0xe3, 0x1b, 0xa7, 0x23, 0x89, 0xfb, 0xe6, 0x09, 0x13, + 0xc6, 0xd7, 0x8a, 0x26, 0x9f, 0x80, 0x1d, 0x0b, 0x7e, 0xbb, 0x78, 0x8e, 0xbb, 0xcb, 0xb9, 0x4c, + 0x42, 0x66, 0x2f, 0x7a, 0x41, 0x6b, 0xb1, 0xa1, 0xc8, 0x01, 0x00, 0xbb, 0x95, 0xc2, 0x3d, 0xe3, + 0x89, 0x4c, 0x9a, 0x15, 0x75, 0x1b, 0x95, 0xc0, 0xc8, 0xe8, 0x5f, 0xd2, 0x9c, 0xd4, 0xf9, 0xb3, + 0x05, 0x65, 0x75, 0x49, 0xd2, 0x42, 0x97, 0xc6, 0x73, 0x1d, 0x9d, 0x62, 0x87, 0x18, 0x97, 0x82, + 0x0a, 0xde, 0xd2, 0xa3, 0x18, 0xc8, 0x1d, 0xa8, 0x25, 0x6c, 0xc6, 0x3c, 0xc9, 0x85, 0xc9, 0x9f, + 0xe5, 0x1a, 0x4d, 0xf7, 0x31, 0xc4, 0xfa, 0x36, 0x8a, 0x26, 0x87, 0x50, 0xe1, 0x2a, 0x2e, 0xea, + 0x42, 0xff, 0x21, 0x5a, 0x06, 0x82, 0xca, 0x05, 0x73, 0x7d, 0x1e, 0xcd, 0x16, 0xea, 0x9a, 0x35, + 0xba, 0x5c, 0x93, 0x43, 0xb0, 0x55, 0x24, 0xae, 0x16, 0x31, 0x6b, 0x56, 0x54, 0x04, 0xb6, 0x96, + 0x51, 0x42, 0x26, 0xcd, 0xe4, 0xf8, 0xf2, 0x3c, 0xd7, 0xbb, 0x66, 0x83, 0x58, 0x36, 0xef, 0x67, + 0xfe, 0x3a, 0x35, 0x3c, 0xba, 0x94, 0xa2, 0xda, 0x84, 0x79, 0x82, 0x49, 0x84, 0xbe, 0xaf, 0xa0, + 0x4a, 0xed, 0x30, 0x65, 0xd2, 0x4c, 0x4e, 0x1c, 0xa8, 0x0c, 0x87, 0x67, 0x88, 0x7c, 0x90, 0x55, + 0x06, 0xcd, 0xa1, 0x46, 0xe2, 0xf4, 0xa1, 0x96, 0x1e, 0x83, 0xcf, 0xac, 0xdf, 0x35, 0x0f, 0xd0, + 0xea, 0x77, 0xc9, 0x63, 0xa8, 0x26, 0xd7, 0xae, 0x08, 0xa2, 0x89, 0xf2, 0xdd, 0xf6, 0xf1, 0x7b, + 0x4b, 0xab, 0x86, 0x9a, 0x8f, 0x9a, 0x52, 0x8c, 0xc3, 0xc1, 0x5e, 0x9a, 0xf1, 0x9a, 0xae, 0x06, + 0x14, 0xe7, 0x81, 0xaf, 0xf4, 0x6c, 0x51, 0x24, 0x91, 0x33, 0x09, 0x74, 0x2e, 0x6d, 0x51, 0x24, + 0x31, 0x20, 0x21, 0xf7, 0x75, 0x1d, 0xdb, 0xa2, 0x8a, 0x46, 0x1f, 0xf3, 0x58, 0x06, 0x3c, 0x72, + 0x67, 0xa9, 0x8f, 0xd3, 0xb5, 0x33, 0x4b, 0xef, 0xf7, 0x7f, 0x39, 0xed, 0xd7, 0x05, 0xa8, 0xa5, + 0xc5, 0x17, 0x2b, 0x49, 0xe0, 0xb3, 0x48, 0x06, 0xe3, 0x80, 0x09, 0x73, 0x70, 0x8e, 0x43, 0x1e, + 0x43, 0xd9, 0x95, 0x52, 0xa4, 0x0f, 0xf4, 0xc7, 0xf9, 0xca, 0xdd, 0x3e, 0x41, 0x49, 0x2f, 0x92, + 0x62, 0x41, 0x35, 0x6a, 0xe7, 0x0b, 0x80, 0x8c, 0x89, 0xb6, 0x4e, 0xd9, 0xc2, 0x68, 0x45, 0x92, + 0xdc, 0x87, 0xf2, 0x0b, 0x77, 0x36, 0x67, 0x26, 0x87, 0xf5, 0xe2, 0x4b, 0xeb, 0x8b, 0x82, 0xf3, + 0x47, 0x0b, 0xaa, 0xa6, 0x92, 0x93, 0x47, 0x50, 0x55, 0x95, 0xdc, 0x58, 0x74, 0xf7, 0xc3, 0x48, + 0x21, 0xe4, 0x68, 0xd9, 0xa2, 0x72, 0x36, 0x1a, 0x55, 0xba, 0x55, 0x19, 0x1b, 0xb3, 0x86, 0x55, + 0xf4, 0xd9, 0xd8, 0xf4, 0xa2, 0x6d, 0x44, 0x77, 0xd9, 0x38, 0x88, 0x02, 0xf4, 0x0f, 0x45, 0x11, + 0x79, 0x94, 0xde, 0xba, 0xa4, 0x34, 0x3e, 0xc8, 0x6b, 0x7c, 0xfd, 0xd2, 0x7d, 0xa8, 0xe7, 0x8e, + 0xb9, 0xe3, 0xd6, 0x1f, 0xe5, 0x6f, 0x6d, 0x8e, 0x54, 0xea, 0x74, 0x23, 0xcd, 0xbc, 0xf0, 0x5f, + 0xf8, 0xef, 0x33, 0x80, 0x4c, 0xe5, 0xdb, 0x17, 0x16, 0xe7, 0x65, 0x11, 0x60, 0x10, 0x63, 0xe9, + 0xf4, 0x5d, 0x55, 0x91, 0x37, 0x83, 0x49, 0xc4, 0x05, 0x7b, 0xae, 0x9e, 0xaa, 0xda, 0x5f, 0xa3, + 0x75, 0xcd, 0x53, 0x2f, 0x86, 0x9c, 0x40, 0xdd, 0x67, 0x89, 0x27, 0x02, 0x95, 0x50, 0xc6, 0xe9, + 0x7b, 0x78, 0xa7, 0x4c, 0x4f, 0xbb, 0x9b, 0x21, 0xb4, 0xaf, 0xf2, 0x7b, 0xc8, 0x31, 0x6c, 0xb2, + 0xdb, 0x98, 0x0b, 0x69, 0x4e, 0xd1, 0x0d, 0xff, 0x9e, 0x1e, 0x1d, 0x90, 0xaf, 0x4e, 0xa2, 0x75, + 0x96, 0x2d, 0x88, 0x0b, 0x25, 0xcf, 0x8d, 0x75, 0xb7, 0xab, 0x1f, 0x37, 0xd7, 0xce, 0x3b, 0x75, + 0x63, 0xed, 0xb4, 0xce, 0xa7, 0x78, 0xd7, 0x97, 0xff, 0xd8, 0x3b, 0xcc, 0xb5, 0xb8, 0x90, 0x8f, + 0x16, 0x47, 0x2a, 0x5f, 0xa6, 0x81, 0x3c, 0x9a, 0xcb, 0x60, 0x76, 0xe4, 0xc6, 0x01, 0xaa, 0xc3, + 0x8d, 0xfd, 0x2e, 0x55, 0xaa, 0x77, 0x7e, 0x01, 0x8d, 0x75, 0xbb, 0xdf, 0x25, 0x06, 0x3b, 0x9f, + 0x83, 0xbd, 0xb4, 0xe3, 0x4d, 0x1b, 0x6b, 0xf9, 0xe0, 0x7d, 0x08, 0xf5, 0xdc, 0xbd, 0x11, 0xf8, + 0x4c, 0x01, 0xb5, 0xf7, 0xf5, 0xc2, 0x79, 0x89, 0xd3, 0x46, 0xda, 0x6f, 0x7e, 0x06, 0x70, 0x2d, + 0x65, 0xfc, 0x5c, 0x35, 0x20, 0x73, 0x88, 0x8d, 0x1c, 0x85, 0x20, 0x7b, 0x50, 0xc7, 0x45, 0x62, + 0xe4, 0xda, 0x52, 0xb5, 0x23, 0xd1, 0x80, 0x9f, 0x82, 0x3d, 0x5e, 0x6e, 0xd7, 0x8d, 0xa3, 0x36, + 0x4e, 0x77, 0xff, 0x04, 0x6a, 0x11, 0x37, 0x32, 0xdd, 0x0f, 0xab, 0x11, 0x57, 0x22, 0xe7, 0x10, + 0x7e, 0xf4, 0xda, 0x68, 0x44, 0x1e, 0x40, 0x65, 0x1c, 0xcc, 0xa4, 0x7a, 0xae, 0xd8, 0x62, 0xcd, + 0xca, 0xf9, 0x5b, 0x01, 0x20, 0x7b, 0x5a, 0xe8, 0x11, 0x7c, 0x77, 0x88, 0xd9, 0xd4, 0xef, 0x6c, + 0x06, 0xb5, 0xd0, 0x44, 0xd0, 0xe4, 0xd1, 0xc3, 0xd5, 0xe7, 0xd8, 0x4e, 0x03, 0xac, 0x63, 0x7b, + 0x6c, 0x62, 0xfb, 0x2e, 0xe3, 0xcb, 0xf2, 0x84, 0x9d, 0xaf, 0x61, 0x6b, 0x45, 0xdd, 0x5b, 0xbe, + 0xd4, 0x2c, 0xcb, 0xf2, 0x21, 0x7b, 0x04, 0x15, 0xdd, 0xda, 0xb1, 0xfe, 0x22, 0x65, 0xd4, 0x28, + 0x5a, 0xd5, 0xf1, 0xcb, 0x74, 0xd0, 0xeb, 0x5f, 0x3a, 0xc7, 0x50, 0xd1, 0x93, 0x2c, 0x69, 0x41, + 0xd5, 0xf5, 0xf0, 0x6a, 0x69, 0xb9, 0xda, 0x4e, 0xc7, 0xdc, 0x13, 0xc5, 0xa6, 0xa9, 0xd8, 0xf9, + 0x8b, 0x05, 0x90, 0xf1, 0xdf, 0x61, 0x56, 0xf8, 0x12, 0xb6, 0x13, 0xe6, 0xf1, 0xc8, 0x77, 0xc5, + 0x42, 0x49, 0xcd, 0xc4, 0x76, 0xd7, 0x96, 0x35, 0x64, 0x6e, 0x6e, 0x28, 0xbe, 0x79, 0x6e, 0x68, + 0x41, 0xc9, 0xe3, 0xf1, 0xc2, 0x3c, 0x5f, 0xb2, 0x7a, 0x91, 0x53, 0x1e, 0x2f, 0x70, 0x6e, 0x47, + 0x04, 0x69, 0x43, 0x25, 0x9c, 0xaa, 0xd9, 0x5e, 0x8f, 0x51, 0xf7, 0x57, 0xb1, 0xe7, 0x53, 0xa4, + 0xf1, 0x4b, 0x40, 0xa3, 0xc8, 0x21, 0x94, 0xc3, 0xa9, 0x1f, 0x08, 0x35, 0x71, 0xd4, 0x75, 0xbf, + 0xce, 0xc3, 0xbb, 0x81, 0xc0, 0x79, 0x5f, 0x61, 0x88, 0x03, 0x96, 0x08, 0x9b, 0x55, 0x85, 0x6c, + 0xac, 0x79, 0x33, 0x3c, 0xdb, 0xa0, 0x96, 0x08, 0x3b, 0x35, 0xa8, 0x68, 0xbf, 0x3a, 0xbf, 0x2f, + 0xc2, 0xf6, 0xaa, 0x95, 0x98, 0x07, 0x89, 0xf0, 0xd2, 0x3c, 0x48, 0x84, 0xb7, 0x1c, 0xa9, 0xac, + 0xdc, 0x48, 0xe5, 0x40, 0x99, 0xdf, 0x44, 0x66, 0x44, 0x4c, 0x27, 0x9b, 0x6b, 0x7e, 0x13, 0xe1, + 0xf0, 0xa0, 0x45, 0xcb, 0x5e, 0x8c, 0xb7, 0x2c, 0x9b, 0x5e, 0xfc, 0x11, 0x6c, 0x8d, 0xf9, 0x6c, + 0xc6, 0x6f, 0x86, 0x8b, 0x70, 0x16, 0x44, 0x53, 0x75, 0xa7, 0x1a, 0x5d, 0x65, 0x92, 0x16, 0xdc, + 0xf3, 0x03, 0x81, 0xe6, 0x9c, 0xf2, 0x48, 0x32, 0x9c, 0x89, 0xab, 0x0a, 0xb7, 0xce, 0x26, 0x5f, + 0xc1, 0xbe, 0x2b, 0x25, 0x0b, 0x63, 0xf9, 0x34, 0x8a, 0x5d, 0x6f, 0xda, 0xe5, 0x9e, 0x7a, 0x8f, + 0x61, 0xec, 0xca, 0x60, 0x14, 0xcc, 0x02, 0xb9, 0x68, 0xd6, 0xd4, 0xd6, 0x37, 0xe2, 0xc8, 0xc7, + 0xb0, 0xed, 0x09, 0xe6, 0x4a, 0xd6, 0x65, 0x89, 0xbc, 0x74, 0xe5, 0x75, 0xd3, 0x56, 0x3b, 0xd7, + 0xb8, 0x78, 0x07, 0x17, 0xad, 0xfd, 0x36, 0x98, 0xf9, 0x9e, 0x2b, 0x7c, 0xf5, 0x5d, 0x55, 0xa3, + 0xab, 0x4c, 0xd2, 0x06, 0xa2, 0x18, 0xbd, 0x30, 0x96, 0x8b, 0x25, 0xb4, 0xae, 0xa0, 0x77, 0x48, + 0xf0, 0x23, 0x47, 0x06, 0x21, 0x4b, 0xa4, 0x1b, 0xc6, 0xcd, 0x4d, 0xcc, 0x37, 0x9a, 0x31, 0x9c, + 0xef, 0x0a, 0xd0, 0x58, 0x4f, 0x11, 0x74, 0x70, 0x8c, 0x66, 0x9a, 0xc7, 0x86, 0xf4, 0xd2, 0xe9, + 0x56, 0xce, 0xe9, 0x18, 0x40, 0xac, 0x2a, 0x98, 0xc5, 0x9b, 0x54, 0xd1, 0x6f, 0x15, 0xc0, 0x15, + 0x93, 0xca, 0xeb, 0x26, 0xfd, 0xb6, 0x00, 0xf7, 0xd6, 0xd2, 0xf0, 0xad, 0x2d, 0xda, 0x87, 0x7a, + 0xe8, 0x4e, 0xd9, 0xa5, 0x2b, 0x54, 0x70, 0x8b, 0xba, 0xb1, 0xe6, 0x58, 0xff, 0x03, 0xfb, 0x22, + 0xd8, 0xcc, 0xe7, 0xfe, 0x9d, 0xb6, 0xa5, 0xa1, 0xbc, 0xe0, 0xf2, 0x09, 0x9f, 0x47, 0xbe, 0xe9, + 0x46, 0xab, 0xcc, 0xd7, 0x03, 0x5e, 0xbc, 0x23, 0xe0, 0xce, 0x05, 0xd4, 0x52, 0x03, 0xc9, 0x9e, + 0xf9, 0x80, 0x2a, 0x64, 0x5f, 0xe6, 0x4f, 0x13, 0x26, 0xd0, 0x76, 0xfd, 0x35, 0xf5, 0x01, 0x94, + 0x27, 0x82, 0xcf, 0x63, 0x53, 0x5b, 0x57, 0x10, 0x5a, 0xe2, 0x0c, 0xa1, 0x6a, 0x38, 0xe4, 0x00, + 0x2a, 0xa3, 0xc5, 0x85, 0x1b, 0x32, 0xa3, 0x50, 0x3d, 0x6c, 0x5c, 0xfb, 0x06, 0x81, 0xd5, 0x42, + 0x23, 0xc8, 0x7d, 0x28, 0x8d, 0x16, 0xfd, 0xae, 0x1e, 0x93, 0xb1, 0xe6, 0xe0, 0xaa, 0x53, 0xd1, + 0x06, 0x39, 0xdf, 0xc0, 0x66, 0x7e, 0x1f, 0x3a, 0x25, 0x4a, 0xf5, 0xda, 0x54, 0xd1, 0x59, 0x71, + 0xb5, 0xde, 0x50, 0x5c, 0x0f, 0x5a, 0x50, 0x35, 0x1f, 0x9f, 0xc4, 0x86, 0xf2, 0xd3, 0x8b, 0x61, + 0xef, 0xaa, 0xb1, 0x41, 0x6a, 0x50, 0x3a, 0x1b, 0x0c, 0xaf, 0x1a, 0x05, 0xa4, 0x2e, 0x06, 0x17, + 0xbd, 0x86, 0x75, 0xf0, 0x4b, 0xb0, 0x97, 0x1f, 0x49, 0xc8, 0xee, 0xf4, 0x2f, 0xba, 0x8d, 0x0d, + 0x02, 0x50, 0x19, 0xf6, 0x4e, 0x69, 0x0f, 0xc1, 0x55, 0x28, 0x0e, 0x87, 0x67, 0x0d, 0x0b, 0x55, + 0x9d, 0x9e, 0x9c, 0x9e, 0xf5, 0x1a, 0x45, 0x24, 0xaf, 0xce, 0x2f, 0x9f, 0x0c, 0x1b, 0xa5, 0x83, + 0xcf, 0xe0, 0xde, 0xda, 0x47, 0x8a, 0xda, 0x7d, 0x76, 0x42, 0x7b, 0xa8, 0xa9, 0x0e, 0xd5, 0x4b, + 0xda, 0x7f, 0x76, 0x72, 0xd5, 0x6b, 0x14, 0x50, 0xf0, 0xcd, 0xe0, 0xf4, 0xeb, 0x5e, 0xb7, 0x61, + 0x75, 0xee, 0x7f, 0xff, 0x6a, 0xb7, 0xf0, 0xa7, 0x57, 0xbb, 0x85, 0xbf, 0xbe, 0xda, 0x2d, 0xfc, + 0xf3, 0xd5, 0x6e, 0xe1, 0xbb, 0x7f, 0xed, 0x6e, 0x8c, 0x2a, 0xea, 0x8f, 0x9d, 0x4f, 0xff, 0x1d, + 0x00, 0x00, 0xff, 0xff, 0x66, 0x48, 0x02, 0x73, 0x18, 0x12, 0x00, 0x00, } diff --git a/solver/pb/ops.proto b/solver/pb/ops.proto index 9051053d24f35..4946de2e9bbc8 100644 --- a/solver/pb/ops.proto +++ b/solver/pb/ops.proto @@ -210,46 +210,74 @@ message FileAction { int64 secondaryInput = 2 [(gogoproto.customtype) = "InputIndex", (gogoproto.nullable) = false]; // --//-- int64 output = 3 [(gogoproto.customtype) = "OutputIndex", (gogoproto.nullable) = false]; oneof action { + // FileActionCopy copies files from secondaryInput on top of input FileActionCopy copy = 4; + // FileActionMkFile creates a new file FileActionMkFile mkfile = 5; + // FileActionMkDir creates a new directory FileActionMkDir mkdir = 6; + // FileActionRm removes a file FileActionRm rm = 7; } } message FileActionCopy { + // src is the source path string src = 1; + // dest path string dest = 2; + // optional owner override ChownOpt owner = 4; + // optional permission bits override int32 mode = 5; + // followSymlink resolves symlinks in src bool followSymlink = 6; + // dirCopyContents only copies contents if src is a directory bool dirCopyContents = 7; - bool attemptUnpack = 8; + // attemptUnpackDockerCompatibility detects if src is an archive to unpack it instead + bool attemptUnpackDockerCompatibility = 8; + // createDestPath creates dest path directories if needed bool createDestPath = 9; + // allowWildcard allows filepath.Match wildcards in src path bool allowWildcard = 10; + // allowEmptyWildcard doesn't fail the whole copy if wildcard doesn't resolve to files bool allowEmptyWildcard = 11; + // optional created time override int64 timestamp = 12; } message FileActionMkFile { + // path for the new file string path = 1; + // permission bits int32 mode = 2; + // data is the new file contents bytes data = 3; + // optional owner for the new file ChownOpt owner = 4; + // optional created time override int64 timestamp = 5; } message FileActionMkDir { + // path for the new directory string path = 1; + // permission bits int32 mode = 2; + // makeParents creates parent directories as well if needed bool makeParents = 3; + // optional owner for the new directory ChownOpt owner = 4; + // optional created time override int64 timestamp = 5; } message FileActionRm { + // path to remove string path = 1; + // allowNotFound doesn't fail the rm if file is not found bool allowNotFound = 2; + // allowWildcard allows filepath.Match wildcards in path bool allowWildcard = 3; } @@ -259,7 +287,13 @@ message ChownOpt { } message UserOpt { + oneof user { + NamedUserOpt byName = 1; + uint32 byID = 2; + } +} + +message NamedUserOpt { string name = 1; - int64 input = 2 [(gogoproto.customtype) = "InputIndex", (gogoproto.nullable) = false]; // input that contains /etc/passwd if using a name - uint32 id = 3; + int64 input = 2 [(gogoproto.customtype) = "InputIndex", (gogoproto.nullable) = false]; } \ No newline at end of file