Merge pull request #35008 from timstclair/cri

Automatic merge from submit-queue

Add streaming methods to CRI API

Copied verbatim from the proposal in the [design doc](https://docs.google.com/document/d/1OE_QoInPlVCK9rMAx9aybRmgFiVjHpJCHI9LrfdNM_s/edit#heading=h.akcz9mrsrc0x).

Note: this will conflict with https://github.com/kubernetes/kubernetes/pull/33988, but the fix ("not implemented") is simple so we can see which gets approved first.

For https://github.com/kubernetes/kubernetes/pull/33988/files

/cc @Random-Liu @kubernetes/sig-node
This commit is contained in:
Kubernetes Submit Queue 2016-10-20 19:21:34 -07:00 committed by GitHub
commit 3148bc7996
2 changed files with 576 additions and 285 deletions

View File

@ -74,8 +74,14 @@ It has these top-level messages:
ContainerStatusRequest
ContainerStatus
ContainerStatusResponse
ExecSyncRequest
ExecSyncResponse
ExecRequest
ExecResponse
AttachRequest
AttachResponse
PortForwardRequest
PortForwardResponse
ImageFilter
ListImagesRequest
Image
@ -2042,6 +2048,78 @@ func (m *ContainerStatusResponse) GetStatus() *ContainerStatus {
return nil
}
type ExecSyncRequest struct {
// The id of the container
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
// The cmd to execute
Cmd []string `protobuf:"bytes,2,rep,name=cmd" json:"cmd,omitempty"`
// Timeout in seconds to stop the command. Default: run forever.
Timeout *int64 `protobuf:"varint,3,opt,name=timeout" json:"timeout,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} }
func (m *ExecSyncRequest) String() string { return proto.CompactTextString(m) }
func (*ExecSyncRequest) ProtoMessage() {}
func (*ExecSyncRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{49} }
func (m *ExecSyncRequest) GetContainerId() string {
if m != nil && m.ContainerId != nil {
return *m.ContainerId
}
return ""
}
func (m *ExecSyncRequest) GetCmd() []string {
if m != nil {
return m.Cmd
}
return nil
}
func (m *ExecSyncRequest) GetTimeout() int64 {
if m != nil && m.Timeout != nil {
return *m.Timeout
}
return 0
}
type ExecSyncResponse struct {
// The captured command stdout output.
Stdout []byte `protobuf:"bytes,1,opt,name=stdout" json:"stdout,omitempty"`
// The captured command stderr output.
Stderr []byte `protobuf:"bytes,2,opt,name=stderr" json:"stderr,omitempty"`
// The exit code the command finished with.
ExitCode *int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} }
func (m *ExecSyncResponse) String() string { return proto.CompactTextString(m) }
func (*ExecSyncResponse) ProtoMessage() {}
func (*ExecSyncResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} }
func (m *ExecSyncResponse) GetStdout() []byte {
if m != nil {
return m.Stdout
}
return nil
}
func (m *ExecSyncResponse) GetStderr() []byte {
if m != nil {
return m.Stderr
}
return nil
}
func (m *ExecSyncResponse) GetExitCode() int32 {
if m != nil && m.ExitCode != nil {
return *m.ExitCode
}
return 0
}
type ExecRequest struct {
// The id of the container
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
@ -2049,15 +2127,15 @@ type ExecRequest struct {
Cmd []string `protobuf:"bytes,2,rep,name=cmd" json:"cmd,omitempty"`
// Whether use tty
Tty *bool `protobuf:"varint,3,opt,name=tty" json:"tty,omitempty"`
// Streaming stdin
Stdin []byte `protobuf:"bytes,4,opt,name=stdin" json:"stdin,omitempty"`
// Whether to stream stdin
Stdin *bool `protobuf:"varint,4,opt,name=stdin" json:"stdin,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ExecRequest) Reset() { *m = ExecRequest{} }
func (m *ExecRequest) String() string { return proto.CompactTextString(m) }
func (*ExecRequest) ProtoMessage() {}
func (*ExecRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{49} }
func (*ExecRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} }
func (m *ExecRequest) GetContainerId() string {
if m != nil && m.ContainerId != nil {
@ -2080,38 +2158,119 @@ func (m *ExecRequest) GetTty() bool {
return false
}
func (m *ExecRequest) GetStdin() []byte {
if m != nil {
return m.Stdin
func (m *ExecRequest) GetStdin() bool {
if m != nil && m.Stdin != nil {
return *m.Stdin
}
return nil
return false
}
type ExecResponse struct {
// Streaming stdout
Stdout []byte `protobuf:"bytes,1,opt,name=stdout" json:"stdout,omitempty"`
// Streaming stderr
Stderr []byte `protobuf:"bytes,2,opt,name=stderr" json:"stderr,omitempty"`
XXX_unrecognized []byte `json:"-"`
// The fully qualified URL of the exec streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *ExecResponse) Reset() { *m = ExecResponse{} }
func (m *ExecResponse) String() string { return proto.CompactTextString(m) }
func (*ExecResponse) ProtoMessage() {}
func (*ExecResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} }
func (*ExecResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} }
func (m *ExecResponse) GetStdout() []byte {
func (m *ExecResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return ""
}
type AttachRequest struct {
// The id of the container
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
// Whether to stream stdin
Stdin *bool `protobuf:"varint,2,opt,name=stdin" json:"stdin,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *AttachRequest) Reset() { *m = AttachRequest{} }
func (m *AttachRequest) String() string { return proto.CompactTextString(m) }
func (*AttachRequest) ProtoMessage() {}
func (*AttachRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} }
func (m *AttachRequest) GetContainerId() string {
if m != nil && m.ContainerId != nil {
return *m.ContainerId
}
return ""
}
func (m *AttachRequest) GetStdin() bool {
if m != nil && m.Stdin != nil {
return *m.Stdin
}
return false
}
type AttachResponse struct {
// The fully qualified URL of the attach streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *AttachResponse) Reset() { *m = AttachResponse{} }
func (m *AttachResponse) String() string { return proto.CompactTextString(m) }
func (*AttachResponse) ProtoMessage() {}
func (*AttachResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} }
func (m *AttachResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return ""
}
type PortForwardRequest struct {
// The id of the container
PodSandboxId *string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId" json:"pod_sandbox_id,omitempty"`
// The port to forward
Port []int32 `protobuf:"varint,2,rep,name=port" json:"port,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} }
func (m *PortForwardRequest) String() string { return proto.CompactTextString(m) }
func (*PortForwardRequest) ProtoMessage() {}
func (*PortForwardRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} }
func (m *PortForwardRequest) GetPodSandboxId() string {
if m != nil && m.PodSandboxId != nil {
return *m.PodSandboxId
}
return ""
}
func (m *PortForwardRequest) GetPort() []int32 {
if m != nil {
return m.Stdout
return m.Port
}
return nil
}
func (m *ExecResponse) GetStderr() []byte {
if m != nil {
return m.Stderr
type PortForwardResponse struct {
// The fully qualified URL of the port-forward streaming server
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} }
func (m *PortForwardResponse) String() string { return proto.CompactTextString(m) }
func (*PortForwardResponse) ProtoMessage() {}
func (*PortForwardResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} }
func (m *PortForwardResponse) GetUrl() string {
if m != nil && m.Url != nil {
return *m.Url
}
return nil
return ""
}
type ImageFilter struct {
@ -2123,7 +2282,7 @@ type ImageFilter struct {
func (m *ImageFilter) Reset() { *m = ImageFilter{} }
func (m *ImageFilter) String() string { return proto.CompactTextString(m) }
func (*ImageFilter) ProtoMessage() {}
func (*ImageFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} }
func (*ImageFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} }
func (m *ImageFilter) GetImage() *ImageSpec {
if m != nil {
@ -2141,7 +2300,7 @@ type ListImagesRequest struct {
func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} }
func (m *ListImagesRequest) String() string { return proto.CompactTextString(m) }
func (*ListImagesRequest) ProtoMessage() {}
func (*ListImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} }
func (*ListImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} }
func (m *ListImagesRequest) GetFilter() *ImageFilter {
if m != nil {
@ -2166,7 +2325,7 @@ type Image struct {
func (m *Image) Reset() { *m = Image{} }
func (m *Image) String() string { return proto.CompactTextString(m) }
func (*Image) ProtoMessage() {}
func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} }
func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} }
func (m *Image) GetId() string {
if m != nil && m.Id != nil {
@ -2205,7 +2364,7 @@ type ListImagesResponse struct {
func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} }
func (m *ListImagesResponse) String() string { return proto.CompactTextString(m) }
func (*ListImagesResponse) ProtoMessage() {}
func (*ListImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} }
func (*ListImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} }
func (m *ListImagesResponse) GetImages() []*Image {
if m != nil {
@ -2223,7 +2382,7 @@ type ImageStatusRequest struct {
func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} }
func (m *ImageStatusRequest) String() string { return proto.CompactTextString(m) }
func (*ImageStatusRequest) ProtoMessage() {}
func (*ImageStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} }
func (*ImageStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} }
func (m *ImageStatusRequest) GetImage() *ImageSpec {
if m != nil {
@ -2241,7 +2400,7 @@ type ImageStatusResponse struct {
func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} }
func (m *ImageStatusResponse) String() string { return proto.CompactTextString(m) }
func (*ImageStatusResponse) ProtoMessage() {}
func (*ImageStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} }
func (*ImageStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} }
func (m *ImageStatusResponse) GetImage() *Image {
if m != nil {
@ -2267,7 +2426,7 @@ type AuthConfig struct {
func (m *AuthConfig) Reset() { *m = AuthConfig{} }
func (m *AuthConfig) String() string { return proto.CompactTextString(m) }
func (*AuthConfig) ProtoMessage() {}
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} }
func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} }
func (m *AuthConfig) GetUsername() string {
if m != nil && m.Username != nil {
@ -2324,7 +2483,7 @@ type PullImageRequest struct {
func (m *PullImageRequest) Reset() { *m = PullImageRequest{} }
func (m *PullImageRequest) String() string { return proto.CompactTextString(m) }
func (*PullImageRequest) ProtoMessage() {}
func (*PullImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} }
func (*PullImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} }
func (m *PullImageRequest) GetImage() *ImageSpec {
if m != nil {
@ -2354,7 +2513,7 @@ type PullImageResponse struct {
func (m *PullImageResponse) Reset() { *m = PullImageResponse{} }
func (m *PullImageResponse) String() string { return proto.CompactTextString(m) }
func (*PullImageResponse) ProtoMessage() {}
func (*PullImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} }
func (*PullImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} }
type RemoveImageRequest struct {
// The spec of the image
@ -2365,7 +2524,7 @@ type RemoveImageRequest struct {
func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} }
func (m *RemoveImageRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveImageRequest) ProtoMessage() {}
func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} }
func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} }
func (m *RemoveImageRequest) GetImage() *ImageSpec {
if m != nil {
@ -2381,7 +2540,7 @@ type RemoveImageResponse struct {
func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} }
func (m *RemoveImageResponse) String() string { return proto.CompactTextString(m) }
func (*RemoveImageResponse) ProtoMessage() {}
func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} }
func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} }
type NetworkConfig struct {
// The CIDR to use for pod IP addresses
@ -2392,7 +2551,7 @@ type NetworkConfig struct {
func (m *NetworkConfig) Reset() { *m = NetworkConfig{} }
func (m *NetworkConfig) String() string { return proto.CompactTextString(m) }
func (*NetworkConfig) ProtoMessage() {}
func (*NetworkConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} }
func (*NetworkConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} }
func (m *NetworkConfig) GetPodCidr() string {
if m != nil && m.PodCidr != nil {
@ -2409,7 +2568,7 @@ type RuntimeConfig struct {
func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} }
func (m *RuntimeConfig) String() string { return proto.CompactTextString(m) }
func (*RuntimeConfig) ProtoMessage() {}
func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} }
func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69} }
func (m *RuntimeConfig) GetNetworkConfig() *NetworkConfig {
if m != nil {
@ -2426,7 +2585,7 @@ type UpdateRuntimeConfigRequest struct {
func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} }
func (m *UpdateRuntimeConfigRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateRuntimeConfigRequest) ProtoMessage() {}
func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} }
func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{70} }
func (m *UpdateRuntimeConfigRequest) GetRuntimeConfig() *RuntimeConfig {
if m != nil {
@ -2442,7 +2601,7 @@ type UpdateRuntimeConfigResponse struct {
func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} }
func (m *UpdateRuntimeConfigResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateRuntimeConfigResponse) ProtoMessage() {}
func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} }
func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{71} }
func init() {
proto.RegisterType((*VersionRequest)(nil), "runtime.VersionRequest")
@ -2494,8 +2653,14 @@ func init() {
proto.RegisterType((*ContainerStatusRequest)(nil), "runtime.ContainerStatusRequest")
proto.RegisterType((*ContainerStatus)(nil), "runtime.ContainerStatus")
proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.ContainerStatusResponse")
proto.RegisterType((*ExecSyncRequest)(nil), "runtime.ExecSyncRequest")
proto.RegisterType((*ExecSyncResponse)(nil), "runtime.ExecSyncResponse")
proto.RegisterType((*ExecRequest)(nil), "runtime.ExecRequest")
proto.RegisterType((*ExecResponse)(nil), "runtime.ExecResponse")
proto.RegisterType((*AttachRequest)(nil), "runtime.AttachRequest")
proto.RegisterType((*AttachResponse)(nil), "runtime.AttachResponse")
proto.RegisterType((*PortForwardRequest)(nil), "runtime.PortForwardRequest")
proto.RegisterType((*PortForwardResponse)(nil), "runtime.PortForwardResponse")
proto.RegisterType((*ImageFilter)(nil), "runtime.ImageFilter")
proto.RegisterType((*ListImagesRequest)(nil), "runtime.ListImagesRequest")
proto.RegisterType((*Image)(nil), "runtime.Image")
@ -2557,8 +2722,14 @@ type RuntimeServiceClient interface {
ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error)
// ContainerStatus returns status of the container.
ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error)
// Exec executes the command in the container.
Exec(ctx context.Context, opts ...grpc.CallOption) (RuntimeService_ExecClient, error)
// ExecSync runs a command in a container synchronously.
ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error)
// Exec prepares a streaming endpoint to execute a command in the container.
Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error)
// Attach prepares a streaming endpoint to attach to a running container.
Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error)
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error)
// UpdateRuntimeConfig updates the runtime configuration based on request
UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error)
}
@ -2679,35 +2850,40 @@ func (c *runtimeServiceClient) ContainerStatus(ctx context.Context, in *Containe
return out, nil
}
func (c *runtimeServiceClient) Exec(ctx context.Context, opts ...grpc.CallOption) (RuntimeService_ExecClient, error) {
stream, err := grpc.NewClientStream(ctx, &_RuntimeService_serviceDesc.Streams[0], c.cc, "/runtime.RuntimeService/Exec", opts...)
func (c *runtimeServiceClient) ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error) {
out := new(ExecSyncResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/ExecSync", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
x := &runtimeServiceExecClient{stream}
return x, nil
return out, nil
}
type RuntimeService_ExecClient interface {
Send(*ExecRequest) error
Recv() (*ExecResponse, error)
grpc.ClientStream
}
type runtimeServiceExecClient struct {
grpc.ClientStream
}
func (x *runtimeServiceExecClient) Send(m *ExecRequest) error {
return x.ClientStream.SendMsg(m)
}
func (x *runtimeServiceExecClient) Recv() (*ExecResponse, error) {
m := new(ExecResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
func (c *runtimeServiceClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) {
out := new(ExecResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/Exec", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return m, nil
return out, nil
}
func (c *runtimeServiceClient) Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error) {
out := new(AttachResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/Attach", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *runtimeServiceClient) PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error) {
out := new(PortForwardResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/PortForward", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *runtimeServiceClient) UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) {
@ -2752,8 +2928,14 @@ type RuntimeServiceServer interface {
ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error)
// ContainerStatus returns status of the container.
ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error)
// Exec executes the command in the container.
Exec(RuntimeService_ExecServer) error
// ExecSync runs a command in a container synchronously.
ExecSync(context.Context, *ExecSyncRequest) (*ExecSyncResponse, error)
// Exec prepares a streaming endpoint to execute a command in the container.
Exec(context.Context, *ExecRequest) (*ExecResponse, error)
// Attach prepares a streaming endpoint to attach to a running container.
Attach(context.Context, *AttachRequest) (*AttachResponse, error)
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
PortForward(context.Context, *PortForwardRequest) (*PortForwardResponse, error)
// UpdateRuntimeConfig updates the runtime configuration based on request
UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error)
}
@ -2978,30 +3160,76 @@ func _RuntimeService_ContainerStatus_Handler(srv interface{}, ctx context.Contex
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_Exec_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(RuntimeServiceServer).Exec(&runtimeServiceExecServer{stream})
}
type RuntimeService_ExecServer interface {
Send(*ExecResponse) error
Recv() (*ExecRequest, error)
grpc.ServerStream
}
type runtimeServiceExecServer struct {
grpc.ServerStream
}
func (x *runtimeServiceExecServer) Send(m *ExecResponse) error {
return x.ServerStream.SendMsg(m)
}
func (x *runtimeServiceExecServer) Recv() (*ExecRequest, error) {
m := new(ExecRequest)
if err := x.ServerStream.RecvMsg(m); err != nil {
func _RuntimeService_ExecSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ExecSyncRequest)
if err := dec(in); err != nil {
return nil, err
}
return m, nil
if interceptor == nil {
return srv.(RuntimeServiceServer).ExecSync(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/ExecSync",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).ExecSync(ctx, req.(*ExecSyncRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ExecRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServiceServer).Exec(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/Exec",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).Exec(ctx, req.(*ExecRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_Attach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AttachRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServiceServer).Attach(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/Attach",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).Attach(ctx, req.(*AttachRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_PortForward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PortForwardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServiceServer).PortForward(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/runtime.RuntimeService/PortForward",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).PortForward(ctx, req.(*PortForwardRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RuntimeService_UpdateRuntimeConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
@ -3074,19 +3302,28 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{
MethodName: "ContainerStatus",
Handler: _RuntimeService_ContainerStatus_Handler,
},
{
MethodName: "ExecSync",
Handler: _RuntimeService_ExecSync_Handler,
},
{
MethodName: "Exec",
Handler: _RuntimeService_Exec_Handler,
},
{
MethodName: "Attach",
Handler: _RuntimeService_Attach_Handler,
},
{
MethodName: "PortForward",
Handler: _RuntimeService_PortForward_Handler,
},
{
MethodName: "UpdateRuntimeConfig",
Handler: _RuntimeService_UpdateRuntimeConfig_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "Exec",
Handler: _RuntimeService_Exec_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Streams: []grpc.StreamDesc{},
Metadata: fileDescriptorApi,
}
@ -3266,191 +3503,199 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptorApi = []byte{
// 2966 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x73, 0xdb, 0xc6,
0x35, 0x14, 0x45, 0x89, 0x7c, 0x14, 0x29, 0x6a, 0x25, 0x4b, 0x0c, 0x15, 0xdb, 0x32, 0x92, 0xb4,
0x8e, 0x92, 0x68, 0x1c, 0xb6, 0x93, 0x34, 0x4e, 0xec, 0x44, 0x91, 0x14, 0x8f, 0x62, 0x9b, 0x56,
0x41, 0xdb, 0x8d, 0x27, 0x07, 0x0c, 0x4c, 0x40, 0x12, 0x6c, 0x12, 0x40, 0x00, 0x50, 0xb5, 0x7a,
0xed, 0xa5, 0x87, 0x1e, 0x7a, 0xed, 0xad, 0x87, 0x76, 0x7a, 0xe8, 0xad, 0x33, 0x9d, 0xe9, 0x7f,
0xe8, 0xf4, 0x87, 0xf4, 0x17, 0xb4, 0xc7, 0xbe, 0xfd, 0xc0, 0x62, 0xf1, 0x25, 0x4b, 0xee, 0x4c,
0xe3, 0x1b, 0xf6, 0xed, 0xdb, 0xb7, 0x6f, 0xdf, 0x7b, 0xfb, 0xbe, 0x16, 0xd0, 0x30, 0x7d, 0x67,
0xcb, 0x0f, 0xbc, 0xc8, 0x23, 0xf3, 0xc1, 0xd4, 0x8d, 0x9c, 0x89, 0xad, 0x6d, 0x42, 0xfb, 0xb1,
0x1d, 0x84, 0x8e, 0xe7, 0xea, 0xf6, 0xf7, 0x53, 0x3b, 0x8c, 0x48, 0x17, 0xe6, 0x4f, 0x38, 0xa4,
0x5b, 0xd9, 0xa8, 0x5c, 0x6f, 0xe8, 0xf1, 0x50, 0xfb, 0x73, 0x05, 0x16, 0x25, 0x72, 0xe8, 0x7b,
0x6e, 0x68, 0x97, 0x63, 0x93, 0x6b, 0xb0, 0x20, 0x36, 0x31, 0x5c, 0x73, 0x62, 0x77, 0x67, 0xd8,
0x74, 0x53, 0xc0, 0x06, 0x08, 0x22, 0x3f, 0x86, 0xc5, 0x18, 0x25, 0x26, 0x52, 0x65, 0x58, 0x6d,
0x01, 0x16, 0xbb, 0x91, 0x2d, 0x58, 0x8e, 0x11, 0xf1, 0x0c, 0x12, 0x79, 0x96, 0x21, 0x2f, 0x89,
0xa9, 0x6d, 0xdf, 0x11, 0xf8, 0xda, 0x77, 0xd0, 0xd8, 0x1d, 0x0c, 0x77, 0x3c, 0xf7, 0xd0, 0x39,
0xa2, 0x2c, 0x86, 0x76, 0x40, 0xd7, 0x20, 0x8b, 0x55, 0xca, 0xa2, 0x18, 0x92, 0x1e, 0xd4, 0x43,
0xdb, 0x0c, 0x46, 0xc7, 0x76, 0x88, 0xec, 0xd1, 0x29, 0x39, 0xa6, 0xab, 0x3c, 0x3f, 0x42, 0x62,
0x21, 0xf2, 0xc4, 0x56, 0x89, 0xa1, 0xf6, 0xfb, 0x0a, 0x34, 0x0f, 0xbc, 0x20, 0xba, 0x6f, 0xfa,
0xbe, 0xe3, 0x1e, 0x91, 0x0f, 0xa1, 0xce, 0x84, 0x3a, 0xf2, 0xc6, 0x4c, 0x06, 0xed, 0xfe, 0xd2,
0x96, 0x60, 0x69, 0xeb, 0x40, 0x4c, 0xe8, 0x12, 0x85, 0xbc, 0x0b, 0xed, 0x91, 0xe7, 0x46, 0xa6,
0xe3, 0xda, 0x81, 0xe1, 0x23, 0x1d, 0x26, 0x99, 0x9a, 0xde, 0x92, 0x50, 0x4a, 0x9c, 0xac, 0x43,
0xe3, 0xd8, 0x0b, 0x23, 0x8e, 0x51, 0x65, 0x18, 0x75, 0x0a, 0x60, 0x93, 0x6b, 0x30, 0xcf, 0x26,
0x1d, 0x5f, 0xc8, 0x60, 0x8e, 0x0e, 0xf7, 0x7d, 0xed, 0x77, 0x15, 0xa8, 0xdd, 0xf7, 0x70, 0xf3,
0xcc, 0x36, 0x66, 0x74, 0x2c, 0xf4, 0xa3, 0x6c, 0x83, 0xc0, 0x64, 0x1b, 0x8a, 0xc1, 0x55, 0xc4,
0xb7, 0xa1, 0x93, 0x28, 0x9f, 0xc0, 0x36, 0x2d, 0xcf, 0x1d, 0x9f, 0x32, 0x16, 0xea, 0xba, 0x1c,
0x53, 0xdd, 0x85, 0xf6, 0xd8, 0x71, 0xa7, 0x2f, 0x8c, 0xc0, 0x1e, 0x9b, 0x4f, 0xed, 0x31, 0x63,
0xa5, 0xae, 0xb7, 0x05, 0x58, 0xe7, 0x50, 0xed, 0x19, 0x2c, 0x52, 0x65, 0x87, 0xbe, 0x39, 0xb2,
0x1f, 0x30, 0x11, 0x52, 0xd3, 0x60, 0x9b, 0xba, 0x76, 0xf4, 0x4b, 0x2f, 0x78, 0xce, 0x38, 0xab,
0xeb, 0x4d, 0x0a, 0x1b, 0x70, 0x10, 0x79, 0x13, 0xea, 0x9c, 0x2f, 0xc7, 0x62, 0x6c, 0xd5, 0x75,
0x76, 0xe2, 0x03, 0xc7, 0x92, 0x53, 0x8e, 0x3f, 0x12, 0x5c, 0xcd, 0xf3, 0xd3, 0x8f, 0xb4, 0x5f,
0x57, 0xe0, 0xd2, 0x3d, 0xba, 0xf9, 0x81, 0x67, 0x0d, 0x4d, 0xd7, 0x7a, 0xea, 0xbd, 0x10, 0x46,
0xf0, 0x36, 0xb4, 0x46, 0x47, 0x81, 0x37, 0xf5, 0xf1, 0xa4, 0x81, 0xed, 0x46, 0x42, 0x1a, 0x0b,
0x1c, 0x78, 0xc0, 0x60, 0x64, 0x0f, 0x96, 0xdc, 0x98, 0x55, 0x23, 0xd6, 0x3e, 0xdd, 0xbd, 0xd9,
0xef, 0x4a, 0x95, 0x66, 0x0e, 0xa3, 0x77, 0xdc, 0x34, 0x20, 0xd4, 0x02, 0x20, 0xc9, 0xfe, 0xf7,
0xed, 0xc8, 0xb4, 0xcc, 0xc8, 0x24, 0x04, 0x66, 0xd9, 0x3d, 0xe0, 0x1b, 0xb3, 0x6f, 0xd2, 0x81,
0xea, 0x54, 0x1c, 0xb0, 0xa1, 0xd3, 0x4f, 0xf2, 0x16, 0x34, 0x24, 0x3d, 0x71, 0x19, 0x12, 0x00,
0x35, 0x4a, 0x33, 0x8a, 0xec, 0x89, 0x1f, 0x31, 0x61, 0xb7, 0xf4, 0x78, 0xa8, 0xfd, 0x7d, 0x16,
0x3a, 0xb9, 0x43, 0x7f, 0x02, 0xf5, 0x89, 0xd8, 0x9e, 0x6d, 0xdb, 0xec, 0xaf, 0x27, 0x96, 0x99,
0xe3, 0x50, 0x97, 0xc8, 0x54, 0xf1, 0x54, 0xa4, 0xca, 0xbd, 0x95, 0x63, 0x2a, 0xc9, 0xb1, 0x77,
0x64, 0x58, 0x4e, 0x60, 0x8f, 0x22, 0x2f, 0x38, 0x15, 0x5c, 0x2e, 0x20, 0x70, 0x37, 0x86, 0x91,
0x8f, 0x00, 0x2c, 0x37, 0x34, 0x46, 0x8c, 0x0f, 0xc6, 0x6b, 0xb3, 0x4f, 0xe4, 0xde, 0xf2, 0x6e,
0xea, 0x0d, 0xc4, 0x12, 0xcc, 0x7e, 0x0a, 0x2d, 0x6a, 0xeb, 0xc6, 0x84, 0x5f, 0xab, 0xb0, 0x5b,
0xc3, 0x6b, 0xd7, 0xec, 0xaf, 0x28, 0x1c, 0xcb, 0x3b, 0xa7, 0x2f, 0xf8, 0xc9, 0x20, 0x24, 0xb7,
0x60, 0x8e, 0xd9, 0x5a, 0xd8, 0x9d, 0x63, 0x6b, 0xde, 0x2d, 0x38, 0x25, 0xdf, 0x65, 0xeb, 0x1e,
0xc3, 0xdb, 0x73, 0xa3, 0xe0, 0x54, 0x17, 0x8b, 0xc8, 0x3d, 0x68, 0x9a, 0xae, 0xeb, 0x45, 0x26,
0x57, 0xf8, 0x3c, 0xa3, 0xb1, 0x59, 0x4e, 0x63, 0x3b, 0x41, 0xe6, 0x84, 0xd4, 0xe5, 0xe4, 0xa7,
0x50, 0x63, 0xf6, 0xdf, 0xad, 0xb3, 0x53, 0x5f, 0x91, 0x74, 0x0a, 0x0d, 0x53, 0xe7, 0xc8, 0xbd,
0x4f, 0xa1, 0xa9, 0xb0, 0x46, 0x0d, 0xe3, 0xb9, 0x7d, 0x2a, 0x6c, 0x85, 0x7e, 0x92, 0x15, 0xa8,
0x9d, 0x98, 0xe3, 0x69, 0xac, 0x0f, 0x3e, 0xb8, 0x39, 0xf3, 0xb3, 0x4a, 0xef, 0x36, 0x74, 0xb2,
0x1c, 0x5d, 0x64, 0xbd, 0xb6, 0x0f, 0x2b, 0xfa, 0xd4, 0x4d, 0x18, 0x8b, 0x03, 0xc1, 0x47, 0x30,
0x27, 0xf4, 0xc7, 0x6d, 0xe7, 0xcd, 0x52, 0x89, 0xe8, 0x02, 0x51, 0xbb, 0x05, 0x97, 0x32, 0xa4,
0x44, 0x98, 0x78, 0x07, 0xda, 0xbe, 0x67, 0x19, 0x21, 0x07, 0x1b, 0x68, 0xf3, 0xe2, 0xfe, 0xf9,
0x12, 0x77, 0xdf, 0xa2, 0xcb, 0x87, 0x91, 0xe7, 0xe7, 0x59, 0x39, 0xdf, 0xf2, 0x2e, 0xac, 0x66,
0x97, 0xf3, 0xed, 0xb5, 0x2f, 0x60, 0x4d, 0xb7, 0x27, 0xde, 0x89, 0xfd, 0xaa, 0xa4, 0x7b, 0xd0,
0xcd, 0x13, 0x48, 0x88, 0x27, 0xd0, 0x21, 0xaa, 0x61, 0x1a, 0x5e, 0x8c, 0xf8, 0x7b, 0x2a, 0x01,
0xe1, 0x00, 0x39, 0x1d, 0xd2, 0x86, 0x19, 0xf4, 0xf1, 0x7c, 0x11, 0x7e, 0x69, 0x4f, 0xa0, 0x31,
0x50, 0xbd, 0x81, 0xea, 0x41, 0x31, 0x44, 0x89, 0x21, 0xe9, 0x27, 0xc1, 0xeb, 0x65, 0xee, 0x4b,
0x86, 0xb5, 0xbb, 0x39, 0xd7, 0x29, 0x78, 0xe8, 0x03, 0x48, 0x0f, 0x14, 0x0a, 0x5b, 0x20, 0x79,
0x7a, 0xba, 0x82, 0xa5, 0xfd, 0x31, 0xe5, 0x8e, 0x94, 0xc3, 0x58, 0xf2, 0x30, 0x56, 0xca, 0x3d,
0xcd, 0x5c, 0xc4, 0x3d, 0x6d, 0x41, 0x2d, 0x44, 0x92, 0xdc, 0x41, 0xb6, 0x95, 0xc3, 0x89, 0x55,
0x5f, 0xf1, 0x2d, 0x6d, 0x9d, 0xa3, 0x91, 0xcb, 0x00, 0x23, 0x0c, 0x5c, 0x91, 0x6d, 0x19, 0x26,
0xf7, 0x9c, 0x55, 0xbd, 0x21, 0x20, 0xdb, 0x11, 0xb9, 0x99, 0xc8, 0xb1, 0xc6, 0xd8, 0xd8, 0x28,
0x60, 0x23, 0xa5, 0x97, 0x44, 0xd2, 0xf2, 0xb6, 0xcf, 0x9d, 0x7d, 0xdb, 0xc5, 0x3a, 0x8e, 0xac,
0x38, 0xac, 0xf9, 0x52, 0x87, 0xc5, 0x57, 0x9c, 0xc7, 0x61, 0xd5, 0x4b, 0x1d, 0x96, 0xa0, 0x71,
0xa6, 0xc3, 0xfa, 0x21, 0x5d, 0xcf, 0x7d, 0xe8, 0xe6, 0xaf, 0x8e, 0x70, 0x19, 0xe8, 0x7e, 0x42,
0x06, 0x39, 0xc3, 0xfd, 0x88, 0x25, 0x02, 0x51, 0xfb, 0x57, 0x45, 0xb5, 0xba, 0xaf, 0x9d, 0x71,
0x64, 0x07, 0x39, 0xab, 0x93, 0xc6, 0x33, 0x73, 0x3e, 0xe3, 0x19, 0x42, 0x9b, 0x89, 0xdd, 0xc0,
0xbc, 0x86, 0x45, 0x37, 0x96, 0x0f, 0x36, 0xfb, 0x1f, 0x14, 0xf0, 0xc3, 0xb7, 0xe4, 0x3a, 0x1b,
0x0a, 0x74, 0x2e, 0xf1, 0xd6, 0x58, 0x85, 0xf5, 0xbe, 0x04, 0x92, 0x47, 0xba, 0x90, 0xe8, 0xbe,
0xa1, 0xd7, 0x95, 0xa6, 0x83, 0x05, 0x6e, 0xfb, 0x90, 0xb1, 0x71, 0x86, 0xdc, 0x38, 0x9f, 0xba,
0x40, 0xd4, 0xfe, 0x50, 0x05, 0x48, 0x26, 0x5f, 0xdb, 0x7b, 0xfa, 0x89, 0xbc, 0x35, 0x3c, 0x35,
0xb8, 0x5a, 0xc0, 0x45, 0xe1, 0x7d, 0xf9, 0x3a, 0x7d, 0x5f, 0x78, 0x92, 0xf0, 0x4e, 0xd1, 0xea,
0xd7, 0xf6, 0xa6, 0xec, 0xc0, 0x6a, 0x56, 0xdd, 0xe2, 0x9e, 0xbc, 0x07, 0x35, 0x07, 0x73, 0x40,
0x5e, 0xdc, 0x34, 0xfb, 0xcb, 0x05, 0xc7, 0xd2, 0x39, 0x86, 0x76, 0x0d, 0x1a, 0xfb, 0x13, 0xf3,
0xc8, 0x1e, 0xfa, 0xf6, 0x88, 0xee, 0xe5, 0xd0, 0x81, 0xd8, 0x9f, 0x0f, 0xb4, 0x3e, 0xd4, 0xef,
0xda, 0xa7, 0x8f, 0xe9, 0xbe, 0xe7, 0xe5, 0x4f, 0xfb, 0x47, 0x05, 0xd6, 0x98, 0xbb, 0xdb, 0x89,
0x4b, 0x0b, 0x64, 0xce, 0x9b, 0x06, 0x18, 0x08, 0x98, 0x4a, 0xfd, 0xa9, 0xe1, 0xdb, 0x81, 0xe3,
0x71, 0x9b, 0xa2, 0x2a, 0xf5, 0xa7, 0x07, 0x0c, 0x40, 0xcb, 0x0f, 0x3a, 0xfd, 0xfd, 0xd4, 0x13,
0xb6, 0x55, 0xd5, 0xeb, 0x08, 0xf8, 0x39, 0x1d, 0xc7, 0x6b, 0xc3, 0x63, 0xcc, 0xce, 0x43, 0x66,
0x43, 0x7c, 0xed, 0x90, 0x01, 0xd0, 0xd0, 0x2f, 0x4d, 0x30, 0x26, 0x07, 0xa7, 0xc6, 0xd8, 0x99,
0x38, 0x58, 0x0f, 0xb8, 0xc6, 0xd3, 0xd3, 0x08, 0x31, 0xb9, 0xe1, 0x10, 0x3e, 0x79, 0x8f, 0xce,
0xed, 0xbb, 0x5f, 0xd1, 0x19, 0xa2, 0x41, 0xcb, 0xf3, 0x26, 0x46, 0x38, 0xf2, 0x02, 0xac, 0x24,
0xad, 0x67, 0xcc, 0xdf, 0x57, 0xf5, 0x26, 0x02, 0x87, 0x14, 0xb6, 0x6d, 0x3d, 0xd3, 0x4c, 0x68,
0x0d, 0xf7, 0xd8, 0x71, 0x44, 0xb5, 0x82, 0x89, 0xfb, 0x34, 0x14, 0xd7, 0x09, 0x13, 0x77, 0xfa,
0x4d, 0x61, 0x81, 0x37, 0x8e, 0xe5, 0xc0, 0xbe, 0x29, 0x2c, 0x3a, 0xf5, 0xe3, 0xac, 0x9d, 0x7d,
0x53, 0x81, 0x8d, 0xed, 0x13, 0x51, 0x1b, 0xa1, 0xc0, 0xd8, 0x40, 0xb3, 0x00, 0x76, 0x4c, 0xdf,
0x7c, 0xea, 0x8c, 0x9d, 0xe8, 0x14, 0x15, 0xd8, 0x31, 0x2d, 0xcb, 0x18, 0xc5, 0x10, 0xc7, 0x8e,
0x0b, 0xd5, 0x45, 0x84, 0xef, 0x28, 0x60, 0xf2, 0x3e, 0x2c, 0x59, 0x81, 0xe7, 0xa7, 0x71, 0x79,
0xe5, 0xda, 0xa1, 0x13, 0x2a, 0xb2, 0xf6, 0x9f, 0x0a, 0xac, 0xa4, 0xd5, 0x22, 0x32, 0xed, 0xdb,
0xd0, 0x08, 0x62, 0x05, 0x09, 0x27, 0xb1, 0x91, 0x8e, 0x5b, 0x79, 0x45, 0xea, 0xc9, 0x12, 0xbc,
0x87, 0x0b, 0x19, 0x06, 0x2a, 0x29, 0xc3, 0x4b, 0xce, 0xa6, 0xa7, 0x10, 0xc9, 0x17, 0x49, 0xcd,
0x98, 0xd4, 0xd6, 0x74, 0xed, 0xaa, 0x5c, 0x9b, 0x12, 0xbd, 0xac, 0x25, 0x45, 0x65, 0x45, 0x7e,
0x24, 0x54, 0x91, 0x2d, 0x28, 0xd8, 0x9a, 0x47, 0x38, 0xc3, 0xd5, 0xa3, 0x7d, 0x0b, 0x0d, 0x09,
0x8a, 0x8b, 0x2c, 0x6e, 0x7b, 0xac, 0xc8, 0x42, 0xc8, 0x91, 0x28, 0xbb, 0x10, 0x82, 0x9f, 0xb4,
0x9a, 0x45, 0x59, 0x3b, 0x74, 0x17, 0x73, 0x6c, 0x20, 0x84, 0x57, 0xfd, 0x55, 0xbd, 0x9d, 0x80,
0xef, 0x20, 0x54, 0xdb, 0x86, 0x25, 0x29, 0x9c, 0x33, 0x4b, 0x3b, 0xa5, 0x54, 0x9b, 0x49, 0x97,
0x6a, 0xff, 0xae, 0xc1, 0x62, 0x56, 0x25, 0x1f, 0xe7, 0x2a, 0xb5, 0x5e, 0x22, 0xce, 0xec, 0x7e,
0x8a, 0x87, 0xbd, 0x1e, 0x5f, 0xe2, 0x99, 0x8c, 0x44, 0xe4, 0x3d, 0x17, 0x17, 0x9b, 0xf2, 0x33,
0xf2, 0x26, 0x13, 0x74, 0x08, 0x71, 0x3f, 0x43, 0x0c, 0x29, 0xf7, 0x66, 0x70, 0x44, 0xaf, 0x0d,
0x05, 0xb3, 0x6f, 0x72, 0x15, 0x9a, 0x34, 0xbd, 0xc1, 0xea, 0x8a, 0x16, 0x7a, 0xec, 0x9a, 0x34,
0x74, 0x10, 0x20, 0x2c, 0xf3, 0xc8, 0xbb, 0x30, 0x6b, 0xbb, 0x27, 0xb1, 0x2f, 0x4d, 0x1a, 0x1e,
0xb1, 0xf3, 0xd0, 0xd9, 0x34, 0x2a, 0x6c, 0x6e, 0x42, 0xdb, 0x11, 0x71, 0xa2, 0xd3, 0x96, 0x88,
0xac, 0x4b, 0xa1, 0x8b, 0x59, 0xf2, 0xb9, 0x74, 0xed, 0xf5, 0x8c, 0x73, 0xce, 0x48, 0xaa, 0xd0,
0xbf, 0xdf, 0x4d, 0xfb, 0xf7, 0x06, 0x23, 0xf1, 0x5e, 0x29, 0x89, 0xb3, 0xeb, 0xb7, 0x2b, 0x00,
0x7e, 0xe0, 0x9c, 0x38, 0x63, 0xfb, 0xc8, 0xb6, 0xba, 0xc0, 0x1a, 0x0c, 0x0a, 0x84, 0x35, 0xad,
0x44, 0x13, 0xc4, 0x08, 0x3c, 0x2f, 0x3a, 0x0c, 0xbb, 0x4d, 0xde, 0xf8, 0x88, 0xc1, 0x3a, 0x83,
0xd2, 0x3e, 0x05, 0x2d, 0x94, 0x59, 0x67, 0x65, 0x81, 0xe7, 0xe7, 0x38, 0x66, 0x8d, 0x95, 0x15,
0x1a, 0x18, 0x2d, 0xc7, 0xed, 0xb6, 0xd8, 0x4a, 0x3e, 0xa0, 0xfe, 0x8e, 0x7d, 0x18, 0x9e, 0x8b,
0xc5, 0x7f, 0x9b, 0x4d, 0x35, 0x18, 0xe4, 0x01, 0x02, 0xa8, 0xd5, 0x46, 0xd1, 0x69, 0x77, 0x91,
0xc1, 0xe9, 0x27, 0xf9, 0x49, 0x9c, 0x7c, 0x76, 0x98, 0xf6, 0x2f, 0x97, 0x5c, 0xe2, 0xd7, 0xa6,
0xd2, 0xfc, 0x6b, 0x05, 0x56, 0x77, 0x58, 0x38, 0x57, 0x1c, 0xcc, 0x05, 0x2a, 0x25, 0x72, 0x43,
0x96, 0xa4, 0xd9, 0xb2, 0x26, 0x7b, 0x58, 0x81, 0x47, 0xbe, 0x84, 0x76, 0x4c, 0x53, 0xac, 0xac,
0xbe, 0xac, 0x98, 0x6d, 0x85, 0xea, 0x50, 0xfb, 0x1c, 0xd6, 0x72, 0x3c, 0x8b, 0xd0, 0x7b, 0x0d,
0x1d, 0xa1, 0xec, 0xb1, 0x49, 0x96, 0x9b, 0x12, 0x86, 0xb5, 0xdd, 0x4d, 0x5a, 0xd2, 0x9a, 0x41,
0x94, 0x3b, 0xf0, 0x39, 0xd6, 0xb2, 0x7a, 0x36, 0xbd, 0x56, 0x94, 0x9c, 0x43, 0x58, 0xa1, 0x95,
0xee, 0x2b, 0x10, 0xa5, 0x7e, 0x80, 0x1e, 0xdb, 0x9b, 0x46, 0xc2, 0xff, 0xc5, 0x43, 0x6d, 0x8d,
0x57, 0xdf, 0xf9, 0xdd, 0x3e, 0x83, 0x55, 0x5e, 0xfc, 0xbe, 0xca, 0x21, 0xde, 0x8c, 0x4b, 0xef,
0x3c, 0xdd, 0xdf, 0xce, 0x28, 0x8e, 0xb0, 0x24, 0x5b, 0xff, 0x30, 0x9d, 0xad, 0xaf, 0xe5, 0x15,
0x9e, 0xca, 0x20, 0xf3, 0x66, 0x54, 0x2d, 0x30, 0x23, 0x3d, 0x97, 0xd2, 0xcf, 0x32, 0x97, 0xf1,
0x7e, 0x9e, 0xfa, 0xff, 0x31, 0xa3, 0xdf, 0xe7, 0x19, 0xbd, 0xdc, 0x5a, 0x76, 0x11, 0x6e, 0x64,
0x32, 0xfa, 0x6e, 0x19, 0x9b, 0x32, 0xa1, 0xff, 0xcd, 0x2c, 0x34, 0xe4, 0x5c, 0x4e, 0xa6, 0x79,
0x21, 0xcd, 0x14, 0x08, 0x49, 0x0d, 0x49, 0xd5, 0x57, 0x09, 0x49, 0xb3, 0x2f, 0x0b, 0x49, 0x98,
0xfc, 0xb1, 0x0f, 0x23, 0xb0, 0x0f, 0x45, 0x88, 0xa9, 0x33, 0x80, 0x6e, 0x1f, 0x26, 0x8a, 0x9f,
0x3b, 0x97, 0xe2, 0xd3, 0xa5, 0xc3, 0x7c, 0xb6, 0x74, 0xf8, 0x38, 0x13, 0x5f, 0xae, 0xe4, 0xc9,
0x15, 0x46, 0x96, 0xbd, 0xa2, 0xc8, 0xf2, 0x76, 0xc1, 0xe2, 0xd7, 0xb6, 0x70, 0xb8, 0xc7, 0x0b,
0x07, 0xd5, 0xaa, 0x84, 0xf7, 0xea, 0xa3, 0xc8, 0x24, 0x54, 0x54, 0x0f, 0x24, 0x7f, 0x34, 0x5d,
0xc1, 0xa2, 0xae, 0x20, 0x25, 0xff, 0xa4, 0xd5, 0x75, 0x0e, 0x57, 0xf0, 0x17, 0x35, 0xf1, 0x29,
0xe9, 0x09, 0x7d, 0x9c, 0xab, 0x35, 0xcf, 0x67, 0x75, 0x1f, 0xa6, 0x4b, 0xcd, 0x8b, 0x99, 0x4b,
0xae, 0xd2, 0x64, 0x91, 0x18, 0x3d, 0x2f, 0x9f, 0xe6, 0x45, 0x42, 0x43, 0x40, 0x70, 0x1a, 0xb3,
0xa3, 0x43, 0xc7, 0x75, 0xc2, 0x63, 0x3e, 0x3f, 0xc7, 0xe6, 0x21, 0x06, 0x6d, 0xb3, 0xc7, 0x1b,
0xfb, 0x05, 0x96, 0x24, 0x23, 0xcf, 0xb2, 0x99, 0x31, 0xd6, 0xf4, 0x3a, 0x05, 0xec, 0xe0, 0x38,
0xb9, 0x20, 0xf5, 0x0b, 0x5d, 0x90, 0x46, 0xe6, 0x82, 0xac, 0xc2, 0x1c, 0xf2, 0x1b, 0x7a, 0x2e,
0xcb, 0x51, 0x1a, 0xba, 0x18, 0x51, 0x07, 0x3f, 0xb1, 0xc3, 0x90, 0x6e, 0xd0, 0xe4, 0x59, 0x87,
0x18, 0x2a, 0x49, 0xd6, 0x42, 0x59, 0x92, 0x75, 0x46, 0xd3, 0x29, 0x93, 0x64, 0xb5, 0xca, 0x92,
0xac, 0xf3, 0xf4, 0x9c, 0x94, 0xbc, 0xb0, 0x7d, 0x56, 0x5e, 0xf8, 0x43, 0x5e, 0x9c, 0xbb, 0x18,
0xf7, 0xb3, 0xa6, 0x2e, 0x6e, 0xce, 0x8d, 0x4c, 0x6b, 0xaa, 0x5b, 0x26, 0x05, 0xd9, 0x99, 0x7a,
0x06, 0xcd, 0xbd, 0x17, 0xa8, 0xd8, 0xf3, 0xc7, 0x69, 0x64, 0x75, 0x34, 0xb1, 0x44, 0x71, 0x47,
0x3f, 0xe3, 0xfc, 0xaf, 0x9a, 0xe4, 0x7f, 0x32, 0x8d, 0xa4, 0x06, 0xbc, 0x20, 0xd2, 0x48, 0xed,
0x36, 0x2c, 0xf0, 0xbd, 0x04, 0xb7, 0xab, 0x94, 0x5b, 0x8b, 0x06, 0xfc, 0x0a, 0x43, 0x13, 0x23,
0x01, 0xb7, 0x83, 0x80, 0x9d, 0x9d, 0xc3, 0x71, 0xa4, 0x7d, 0x02, 0x4d, 0x66, 0x89, 0x22, 0x22,
0x5f, 0x57, 0xfb, 0x04, 0x67, 0x99, 0x2b, 0xad, 0x8d, 0xa8, 0xab, 0x61, 0x70, 0xe9, 0x17, 0x3e,
0xc8, 0x04, 0xaf, 0x95, 0xf4, 0xfa, 0x4c, 0xe0, 0x7a, 0x0e, 0x35, 0x06, 0xce, 0xf9, 0x85, 0x75,
0x5a, 0xb3, 0xfa, 0x9e, 0x11, 0x99, 0x47, 0xf2, 0xad, 0x96, 0x02, 0x1e, 0xe2, 0x98, 0x3d, 0x35,
0xd3, 0x49, 0xcb, 0xc1, 0x8d, 0xa3, 0xf8, 0xc1, 0xb6, 0x49, 0x61, 0xbb, 0x1c, 0x44, 0x8b, 0x9c,
0xd0, 0xf9, 0x15, 0x0f, 0x4a, 0xb3, 0x3a, 0xfb, 0xc6, 0xcc, 0x8e, 0xa8, 0xfc, 0x0a, 0x71, 0xa1,
0x69, 0xb2, 0xe3, 0xc4, 0x2e, 0xb1, 0x9d, 0x66, 0x58, 0x17, 0xb3, 0x28, 0x66, 0xc2, 0x25, 0x90,
0x72, 0x83, 0xe7, 0x97, 0xd6, 0x67, 0xb0, 0x9c, 0x5a, 0x2f, 0x5f, 0x4a, 0x52, 0x04, 0xb2, 0xbb,
0x8b, 0xc5, 0xff, 0xac, 0x00, 0x6c, 0x4f, 0xa3, 0x63, 0x51, 0x3e, 0xf6, 0xa0, 0x4e, 0xeb, 0x5e,
0xa5, 0x08, 0x95, 0x63, 0x3a, 0xe7, 0x9b, 0x61, 0x88, 0xb5, 0x5b, 0x1c, 0xe7, 0xe5, 0x98, 0x95,
0x7e, 0x48, 0x25, 0x6e, 0x59, 0xd0, 0x6f, 0xfa, 0x70, 0xcc, 0xdf, 0xc7, 0x0d, 0x2c, 0x7d, 0xb1,
0xe8, 0x0f, 0x45, 0xef, 0xa2, 0xc5, 0xa1, 0xdb, 0x1c, 0x48, 0xd1, 0x1c, 0xcb, 0x46, 0xd6, 0xa2,
0x53, 0x23, 0xf2, 0x9e, 0xdb, 0xae, 0x88, 0xe0, 0xad, 0x18, 0xfa, 0x90, 0x02, 0x29, 0x5a, 0x60,
0x1f, 0xa1, 0x94, 0x83, 0x18, 0x6d, 0x8e, 0xa3, 0xc5, 0x50, 0x86, 0x46, 0x7f, 0x2d, 0xe8, 0x1c,
0x4c, 0xc7, 0x63, 0x7e, 0xc8, 0x8b, 0xca, 0x12, 0x6b, 0x32, 0x7e, 0x8e, 0x6c, 0x27, 0x22, 0x11,
0x91, 0x38, 0xdc, 0xff, 0x5e, 0x0e, 0x2c, 0xc3, 0x92, 0xc2, 0xa8, 0xc8, 0x64, 0xd1, 0x16, 0x78,
0x92, 0xfb, 0x6a, 0xfc, 0x6b, 0x97, 0x60, 0x39, 0xb5, 0x5e, 0x90, 0xdd, 0x84, 0x96, 0x78, 0x76,
0x10, 0x7a, 0xc6, 0x92, 0x92, 0x66, 0x6e, 0x23, 0xc7, 0x8a, 0xdb, 0x51, 0xf3, 0x38, 0xde, 0xc1,
0xa1, 0x36, 0x80, 0x96, 0xce, 0xc9, 0x0b, 0xdc, 0x5b, 0xd0, 0x16, 0x8f, 0x14, 0x46, 0xea, 0x19,
0x2f, 0xe9, 0xb5, 0xa4, 0x68, 0xeb, 0x2d, 0x57, 0x1d, 0x6a, 0xdf, 0x41, 0xef, 0x91, 0x6f, 0xd1,
0x90, 0xa9, 0x52, 0x8d, 0x8f, 0x86, 0xc4, 0xe3, 0x1f, 0x32, 0x4a, 0x88, 0xa7, 0x97, 0xb5, 0x02,
0x75, 0xa8, 0x5d, 0x86, 0xf5, 0x42, 0xe2, 0xfc, 0xdc, 0x9b, 0x6f, 0x41, 0x3d, 0xfe, 0x71, 0x82,
0xcc, 0x43, 0xf5, 0xe1, 0xce, 0x41, 0xe7, 0x0d, 0xfa, 0xf1, 0x68, 0xf7, 0xa0, 0x53, 0xd9, 0xdc,
0x84, 0xc5, 0x4c, 0xff, 0x98, 0x34, 0xa0, 0xa6, 0xef, 0x6d, 0xef, 0x3e, 0x41, 0xb4, 0x05, 0xa8,
0x0f, 0x1e, 0x3c, 0xe4, 0xa3, 0xca, 0xe6, 0x0e, 0xb4, 0xd3, 0x09, 0x00, 0x69, 0xc2, 0xfc, 0x0e,
0xce, 0x3e, 0xdc, 0xdb, 0x45, 0x64, 0x1c, 0xe8, 0x8f, 0x06, 0x83, 0xfd, 0xc1, 0x9d, 0x4e, 0x85,
0x00, 0xcc, 0xed, 0x7d, 0xbb, 0x4f, 0x27, 0x66, 0xe8, 0xc4, 0xa3, 0xc1, 0xdd, 0xc1, 0x83, 0x5f,
0x0c, 0x3a, 0xd5, 0xfe, 0x9f, 0x1a, 0xd0, 0x16, 0x8c, 0x0e, 0xf1, 0x0e, 0x38, 0x58, 0x8b, 0xdf,
0x86, 0xf9, 0xf8, 0xdf, 0x94, 0x24, 0xd5, 0x48, 0xff, 0x48, 0xd3, 0xeb, 0xe6, 0x27, 0x84, 0x5e,
0xdf, 0x20, 0x07, 0x4c, 0x5b, 0x4a, 0xcf, 0xfd, 0xb2, 0x2a, 0xb8, 0x5c, 0x53, 0xbf, 0x77, 0xa5,
0x6c, 0x5a, 0x52, 0x1c, 0x42, 0x3b, 0xfd, 0xf8, 0x49, 0x92, 0x35, 0x85, 0x8f, 0xaa, 0xbd, 0xab,
0xa5, 0xf3, 0x92, 0xe8, 0x13, 0xe8, 0x64, 0x9f, 0x3d, 0x49, 0xd2, 0x2a, 0x2c, 0x79, 0x52, 0xed,
0x5d, 0x3b, 0x03, 0x43, 0x25, 0x9d, 0x7b, 0x20, 0xdc, 0x28, 0x7f, 0xe2, 0xc9, 0x91, 0x2e, 0x7b,
0x37, 0xe2, 0xa2, 0x48, 0xf7, 0xca, 0x89, 0xfa, 0x2c, 0x57, 0xf0, 0x66, 0xa2, 0x88, 0xa2, 0xb8,
0xc9, 0x8e, 0x44, 0x1f, 0x63, 0xee, 0x9a, 0x6e, 0x03, 0x90, 0x64, 0x55, 0x71, 0x53, 0xa3, 0xb7,
0x51, 0x8e, 0x90, 0xd6, 0x9b, 0x5a, 0xe4, 0xa7, 0xf4, 0x56, 0xd0, 0x39, 0x48, 0xe9, 0xad, 0xb0,
0x3b, 0xc0, 0xcc, 0x2b, 0x55, 0xca, 0x2b, 0xe6, 0x55, 0xd4, 0x37, 0xe8, 0x5d, 0x29, 0x9b, 0x56,
0x8f, 0x9f, 0x29, 0xe3, 0x95, 0xe3, 0x17, 0x77, 0x07, 0x7a, 0x1b, 0xe5, 0x08, 0x59, 0x5d, 0x25,
0xe5, 0x49, 0x46, 0x57, 0xb9, 0x6a, 0x38, 0xa3, 0xab, 0x7c, 0x5d, 0x23, 0x74, 0x95, 0xa9, 0x33,
0xae, 0x96, 0xa6, 0x68, 0x79, 0x5d, 0x15, 0x67, 0x7d, 0x48, 0xf7, 0x53, 0x98, 0xa5, 0x99, 0x15,
0x49, 0x72, 0x18, 0x25, 0xa9, 0xeb, 0x5d, 0xca, 0x40, 0xe3, 0x65, 0xd7, 0x2b, 0x37, 0x2a, 0xe4,
0x29, 0x2c, 0x17, 0x78, 0x3c, 0x92, 0x94, 0x92, 0xe5, 0xce, 0xb6, 0xf7, 0xce, 0xd9, 0x48, 0xf1,
0x3e, 0xfd, 0xbf, 0xcd, 0xc0, 0x02, 0x0f, 0x2d, 0xc2, 0x4b, 0xdd, 0x01, 0x48, 0x12, 0x1c, 0xd2,
0x4b, 0x09, 0x2e, 0x95, 0xa5, 0xf5, 0xd6, 0x0b, 0xe7, 0xe4, 0xc1, 0xbf, 0x11, 0x29, 0xa1, 0x10,
0xe6, 0x7a, 0x26, 0x92, 0xa5, 0x04, 0xf9, 0x56, 0xf1, 0xa4, 0xa4, 0xb5, 0x0b, 0x0d, 0x19, 0x40,
0x89, 0x12, 0x77, 0x33, 0xd1, 0xbf, 0xd7, 0x2b, 0x9a, 0x52, 0x39, 0x52, 0x22, 0xa6, 0xc2, 0x51,
0x3e, 0x0e, 0x2b, 0x1c, 0x15, 0x05, 0xd9, 0x37, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xef, 0xae,
0x42, 0x1c, 0x18, 0x29, 0x00, 0x00,
// 3101 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x77, 0xdb, 0xc6,
0x31, 0x24, 0x45, 0x8a, 0x1c, 0x8a, 0x14, 0xbd, 0x92, 0x25, 0x9a, 0x8e, 0x6d, 0x19, 0x49, 0x9a,
0x44, 0x49, 0xfc, 0x12, 0xb6, 0x4d, 0x9a, 0x2f, 0x27, 0x8a, 0xa4, 0xa4, 0x8a, 0x6d, 0x5a, 0x05,
0xed, 0x34, 0x79, 0x39, 0xa0, 0x30, 0x01, 0x4b, 0xb0, 0x49, 0x00, 0x01, 0x40, 0xc5, 0xec, 0xb5,
0x97, 0x1e, 0x7a, 0xe8, 0xb5, 0xb7, 0x1e, 0xfa, 0x5e, 0x0f, 0xbd, 0xf5, 0xbd, 0xbe, 0xd7, 0xff,
0xd0, 0xd7, 0x1f, 0xd2, 0x43, 0xcf, 0xed, 0xb1, 0xb3, 0x1f, 0x58, 0x2c, 0xbe, 0x14, 0xc9, 0x79,
0xaf, 0xf1, 0x0d, 0x3b, 0x3b, 0x3b, 0x33, 0x3b, 0x33, 0x3b, 0x3b, 0x33, 0x0b, 0x68, 0x99, 0xbe,
0x73, 0xc3, 0x0f, 0xbc, 0xc8, 0x23, 0xcb, 0xc1, 0xdc, 0x8d, 0x9c, 0x99, 0xad, 0x6d, 0x43, 0xf7,
0x0b, 0x3b, 0x08, 0x1d, 0xcf, 0xd5, 0xed, 0x6f, 0xe6, 0x76, 0x18, 0x91, 0x3e, 0x2c, 0x9f, 0x70,
0x48, 0xbf, 0xb2, 0x55, 0x79, 0xa5, 0xa5, 0xc7, 0x43, 0xed, 0xcf, 0x15, 0x58, 0x95, 0xc8, 0xa1,
0xef, 0xb9, 0xa1, 0x5d, 0x8e, 0x4d, 0xae, 0xc3, 0x8a, 0x60, 0x62, 0xb8, 0xe6, 0xcc, 0xee, 0x57,
0xd9, 0x74, 0x5b, 0xc0, 0x46, 0x08, 0x22, 0x2f, 0xc3, 0x6a, 0x8c, 0x12, 0x13, 0xa9, 0x31, 0xac,
0xae, 0x00, 0x0b, 0x6e, 0xe4, 0x06, 0xac, 0xc5, 0x88, 0xb8, 0x07, 0x89, 0xbc, 0xc4, 0x90, 0x2f,
0x88, 0xa9, 0x1d, 0xdf, 0x11, 0xf8, 0xda, 0xd7, 0xd0, 0xda, 0x1b, 0x8d, 0x77, 0x3d, 0xf7, 0xa1,
0x73, 0x44, 0x45, 0x0c, 0xed, 0x80, 0xae, 0x41, 0x11, 0x6b, 0x54, 0x44, 0x31, 0x24, 0x03, 0x68,
0x86, 0xb6, 0x19, 0x4c, 0x8e, 0xed, 0x10, 0xc5, 0xa3, 0x53, 0x72, 0x4c, 0x57, 0x79, 0x7e, 0x84,
0xc4, 0x42, 0x94, 0x89, 0xad, 0x12, 0x43, 0xed, 0x0f, 0x15, 0x68, 0x1f, 0x7a, 0x41, 0x74, 0xc7,
0xf4, 0x7d, 0xc7, 0x3d, 0x22, 0x6f, 0x40, 0x93, 0x29, 0x75, 0xe2, 0x4d, 0x99, 0x0e, 0xba, 0xc3,
0x0b, 0x37, 0x84, 0x48, 0x37, 0x0e, 0xc5, 0x84, 0x2e, 0x51, 0xc8, 0x4b, 0xd0, 0x9d, 0x78, 0x6e,
0x64, 0x3a, 0xae, 0x1d, 0x18, 0x3e, 0xd2, 0x61, 0x9a, 0xa9, 0xeb, 0x1d, 0x09, 0xa5, 0xc4, 0xc9,
0x65, 0x68, 0x1d, 0x7b, 0x61, 0xc4, 0x31, 0x6a, 0x0c, 0xa3, 0x49, 0x01, 0x6c, 0x72, 0x13, 0x96,
0xd9, 0xa4, 0xe3, 0x0b, 0x1d, 0x34, 0xe8, 0xf0, 0xc0, 0xd7, 0x7e, 0x5f, 0x81, 0xfa, 0x1d, 0x0f,
0x99, 0x67, 0xd8, 0x98, 0xd1, 0xb1, 0xb0, 0x8f, 0xc2, 0x06, 0x81, 0x09, 0x1b, 0x8a, 0xc1, 0x4d,
0xc4, 0xd9, 0xd0, 0x49, 0xd4, 0x4f, 0x60, 0x9b, 0x96, 0xe7, 0x4e, 0x17, 0x4c, 0x84, 0xa6, 0x2e,
0xc7, 0xd4, 0x76, 0xa1, 0x3d, 0x75, 0xdc, 0xf9, 0x13, 0x23, 0xb0, 0xa7, 0xe6, 0x03, 0x7b, 0xca,
0x44, 0x69, 0xea, 0x5d, 0x01, 0xd6, 0x39, 0x54, 0x7b, 0x04, 0xab, 0xd4, 0xd8, 0xa1, 0x6f, 0x4e,
0xec, 0xbb, 0x4c, 0x85, 0xd4, 0x35, 0x18, 0x53, 0xd7, 0x8e, 0xbe, 0xf5, 0x82, 0xc7, 0x4c, 0xb2,
0xa6, 0xde, 0xa6, 0xb0, 0x11, 0x07, 0x91, 0x4b, 0xd0, 0xe4, 0x72, 0x39, 0x16, 0x13, 0xab, 0xa9,
0xb3, 0x1d, 0x1f, 0x3a, 0x96, 0x9c, 0x72, 0xfc, 0x89, 0x90, 0x6a, 0x99, 0xef, 0x7e, 0xa2, 0xfd,
0xa6, 0x02, 0x17, 0x6f, 0x53, 0xe6, 0x87, 0x9e, 0x35, 0x36, 0x5d, 0xeb, 0x81, 0xf7, 0x44, 0x38,
0xc1, 0x0b, 0xd0, 0x99, 0x1c, 0x05, 0xde, 0xdc, 0xc7, 0x9d, 0x06, 0xb6, 0x1b, 0x09, 0x6d, 0xac,
0x70, 0xe0, 0x21, 0x83, 0x91, 0x7d, 0xb8, 0xe0, 0xc6, 0xa2, 0x1a, 0xb1, 0xf5, 0x29, 0xf7, 0xf6,
0xb0, 0x2f, 0x4d, 0x9a, 0xd9, 0x8c, 0xde, 0x73, 0xd3, 0x80, 0x50, 0x0b, 0x80, 0x24, 0xfc, 0xef,
0xd8, 0x91, 0x69, 0x99, 0x91, 0x49, 0x08, 0x2c, 0xb1, 0x73, 0xc0, 0x19, 0xb3, 0x6f, 0xd2, 0x83,
0xda, 0x5c, 0x6c, 0xb0, 0xa5, 0xd3, 0x4f, 0xf2, 0x3c, 0xb4, 0x24, 0x3d, 0x71, 0x18, 0x12, 0x00,
0x75, 0x4a, 0x33, 0x8a, 0xec, 0x99, 0x1f, 0x31, 0x65, 0x77, 0xf4, 0x78, 0xa8, 0xfd, 0x7d, 0x09,
0x7a, 0xb9, 0x4d, 0xbf, 0x03, 0xcd, 0x99, 0x60, 0xcf, 0xd8, 0xb6, 0x87, 0x97, 0x13, 0xcf, 0xcc,
0x49, 0xa8, 0x4b, 0x64, 0x6a, 0x78, 0xaa, 0x52, 0xe5, 0xdc, 0xca, 0x31, 0xd5, 0xe4, 0xd4, 0x3b,
0x32, 0x2c, 0x27, 0xb0, 0x27, 0x91, 0x17, 0x2c, 0x84, 0x94, 0x2b, 0x08, 0xdc, 0x8b, 0x61, 0xe4,
0x2d, 0x00, 0xcb, 0x0d, 0x8d, 0x09, 0x93, 0x83, 0xc9, 0xda, 0x1e, 0x12, 0xc9, 0x5b, 0x9e, 0x4d,
0xbd, 0x85, 0x58, 0x42, 0xd8, 0x77, 0xa1, 0x43, 0x7d, 0xdd, 0x98, 0xf1, 0x63, 0x15, 0xf6, 0xeb,
0x78, 0xec, 0xda, 0xc3, 0x75, 0x45, 0x62, 0x79, 0xe6, 0xf4, 0x15, 0x3f, 0x19, 0x84, 0xe4, 0x43,
0x68, 0x30, 0x5f, 0x0b, 0xfb, 0x0d, 0xb6, 0xe6, 0xa5, 0x82, 0x5d, 0x72, 0x2e, 0x37, 0x6e, 0x33,
0xbc, 0x7d, 0x37, 0x0a, 0x16, 0xba, 0x58, 0x44, 0x6e, 0x43, 0xdb, 0x74, 0x5d, 0x2f, 0x32, 0xb9,
0xc1, 0x97, 0x19, 0x8d, 0xed, 0x72, 0x1a, 0x3b, 0x09, 0x32, 0x27, 0xa4, 0x2e, 0x27, 0x3f, 0x81,
0x3a, 0xf3, 0xff, 0x7e, 0x93, 0xed, 0xfa, 0xaa, 0xa4, 0x53, 0xe8, 0x98, 0x3a, 0x47, 0x1e, 0xbc,
0x0b, 0x6d, 0x45, 0x34, 0xea, 0x18, 0x8f, 0xed, 0x85, 0xf0, 0x15, 0xfa, 0x49, 0xd6, 0xa1, 0x7e,
0x62, 0x4e, 0xe7, 0xb1, 0x3d, 0xf8, 0xe0, 0xbd, 0xea, 0xcf, 0x2a, 0x83, 0x9b, 0xd0, 0xcb, 0x4a,
0x74, 0x9e, 0xf5, 0xda, 0x01, 0xac, 0xeb, 0x73, 0x37, 0x11, 0x2c, 0xbe, 0x08, 0xde, 0x82, 0x86,
0xb0, 0x1f, 0xf7, 0x9d, 0x4b, 0xa5, 0x1a, 0xd1, 0x05, 0xa2, 0xf6, 0x21, 0x5c, 0xcc, 0x90, 0x12,
0xd7, 0xc4, 0x8b, 0xd0, 0xf5, 0x3d, 0xcb, 0x08, 0x39, 0xd8, 0x40, 0x9f, 0x17, 0xe7, 0xcf, 0x97,
0xb8, 0x07, 0x16, 0x5d, 0x3e, 0x8e, 0x3c, 0x3f, 0x2f, 0xca, 0xd9, 0x96, 0xf7, 0x61, 0x23, 0xbb,
0x9c, 0xb3, 0xd7, 0x3e, 0x82, 0x4d, 0xdd, 0x9e, 0x79, 0x27, 0xf6, 0xd3, 0x92, 0x1e, 0x40, 0x3f,
0x4f, 0x20, 0x21, 0x9e, 0x40, 0xc7, 0x68, 0x86, 0x79, 0x78, 0x3e, 0xe2, 0xaf, 0xaa, 0x04, 0x44,
0x00, 0xe4, 0x74, 0x48, 0x17, 0xaa, 0x18, 0xe3, 0xf9, 0x22, 0xfc, 0xd2, 0xbe, 0x82, 0xd6, 0x48,
0x8d, 0x06, 0x6a, 0x04, 0xc5, 0x2b, 0x4a, 0x0c, 0xc9, 0x30, 0xb9, 0xbc, 0xbe, 0x2b, 0x7c, 0xc9,
0x6b, 0xed, 0x56, 0x2e, 0x74, 0x0a, 0x19, 0x86, 0x00, 0x32, 0x02, 0x85, 0xc2, 0x17, 0x48, 0x9e,
0x9e, 0xae, 0x60, 0x69, 0x7f, 0x4a, 0x85, 0x23, 0x65, 0x33, 0x96, 0xdc, 0x8c, 0x95, 0x0a, 0x4f,
0xd5, 0xf3, 0x84, 0xa7, 0x1b, 0x50, 0x0f, 0x91, 0x24, 0x0f, 0x90, 0x5d, 0x65, 0x73, 0x62, 0xd5,
0x27, 0x9c, 0xa5, 0xad, 0x73, 0x34, 0x72, 0x05, 0x60, 0x82, 0x17, 0x57, 0x64, 0x5b, 0x86, 0xc9,
0x23, 0x67, 0x4d, 0x6f, 0x09, 0xc8, 0x4e, 0x44, 0xde, 0x4b, 0xf4, 0x58, 0x67, 0x62, 0x6c, 0x15,
0x88, 0x91, 0xb2, 0x4b, 0xa2, 0x69, 0x79, 0xda, 0x1b, 0xa7, 0x9f, 0x76, 0xb1, 0x8e, 0x23, 0x2b,
0x01, 0x6b, 0xb9, 0x34, 0x60, 0xf1, 0x15, 0x67, 0x09, 0x58, 0xcd, 0xd2, 0x80, 0x25, 0x68, 0x9c,
0x1a, 0xb0, 0x7e, 0xc8, 0xd0, 0x73, 0x07, 0xfa, 0xf9, 0xa3, 0x23, 0x42, 0x06, 0x86, 0x9f, 0x90,
0x41, 0x4e, 0x09, 0x3f, 0x62, 0x89, 0x40, 0xd4, 0xfe, 0x55, 0x51, 0xbd, 0xee, 0x53, 0x67, 0x1a,
0xd9, 0x41, 0xce, 0xeb, 0xa4, 0xf3, 0x54, 0xcf, 0xe6, 0x3c, 0x63, 0xe8, 0x32, 0xb5, 0x1b, 0x98,
0xd7, 0xb0, 0xdb, 0x8d, 0xe5, 0x83, 0xed, 0xe1, 0xeb, 0x05, 0xf2, 0x70, 0x96, 0xdc, 0x66, 0x63,
0x81, 0xce, 0x35, 0xde, 0x99, 0xaa, 0xb0, 0xc1, 0xc7, 0x40, 0xf2, 0x48, 0xe7, 0x52, 0xdd, 0xe7,
0xf4, 0xb8, 0xd2, 0x74, 0xb0, 0x20, 0x6c, 0x3f, 0x64, 0x62, 0x9c, 0xa2, 0x37, 0x2e, 0xa7, 0x2e,
0x10, 0xb5, 0x3f, 0xd6, 0x00, 0x92, 0xc9, 0x67, 0xf6, 0x9c, 0xbe, 0x23, 0x4f, 0x0d, 0x4f, 0x0d,
0xae, 0x15, 0x48, 0x51, 0x78, 0x5e, 0x3e, 0x4d, 0x9f, 0x17, 0x9e, 0x24, 0xbc, 0x58, 0xb4, 0xfa,
0x99, 0x3d, 0x29, 0xbb, 0xb0, 0x91, 0x35, 0xb7, 0x38, 0x27, 0xaf, 0x42, 0xdd, 0xc1, 0x1c, 0x90,
0x17, 0x37, 0xed, 0xe1, 0x5a, 0xc1, 0xb6, 0x74, 0x8e, 0xa1, 0x5d, 0x87, 0xd6, 0xc1, 0xcc, 0x3c,
0xb2, 0xc7, 0xbe, 0x3d, 0xa1, 0xbc, 0x1c, 0x3a, 0x10, 0xfc, 0xf9, 0x40, 0x1b, 0x42, 0xf3, 0x96,
0xbd, 0xf8, 0x82, 0xf2, 0x3d, 0xab, 0x7c, 0xda, 0x3f, 0x2a, 0xb0, 0xc9, 0xc2, 0xdd, 0x6e, 0x5c,
0x5a, 0xa0, 0x70, 0xde, 0x3c, 0xc0, 0x8b, 0x80, 0x99, 0xd4, 0x9f, 0x1b, 0xbe, 0x1d, 0x38, 0x1e,
0xf7, 0x29, 0x6a, 0x52, 0x7f, 0x7e, 0xc8, 0x00, 0xb4, 0xfc, 0xa0, 0xd3, 0xdf, 0xcc, 0x3d, 0xe1,
0x5b, 0x35, 0xbd, 0x89, 0x80, 0x5f, 0xd0, 0x71, 0xbc, 0x36, 0x3c, 0xc6, 0xec, 0x3c, 0x64, 0x3e,
0xc4, 0xd7, 0x8e, 0x19, 0x00, 0x1d, 0xfd, 0xe2, 0x0c, 0xef, 0xe4, 0x60, 0x61, 0x4c, 0x9d, 0x99,
0x83, 0xf5, 0x80, 0x6b, 0x3c, 0x58, 0x44, 0x88, 0xc9, 0x1d, 0x87, 0xf0, 0xc9, 0xdb, 0x74, 0xee,
0xc0, 0xfd, 0x84, 0xce, 0x10, 0x0d, 0x3a, 0x9e, 0x37, 0x33, 0xc2, 0x89, 0x17, 0x60, 0x25, 0x69,
0x3d, 0x62, 0xf1, 0xbe, 0xa6, 0xb7, 0x11, 0x38, 0xa6, 0xb0, 0x1d, 0xeb, 0x91, 0x66, 0x42, 0x67,
0xbc, 0xcf, 0xb6, 0x23, 0xaa, 0x15, 0x4c, 0xdc, 0xe7, 0xa1, 0x38, 0x4e, 0x98, 0xb8, 0xd3, 0x6f,
0x0a, 0x0b, 0xbc, 0x69, 0xac, 0x07, 0xf6, 0x4d, 0x61, 0xd1, 0xc2, 0x8f, 0xb3, 0x76, 0xf6, 0x4d,
0x15, 0x36, 0xb5, 0x4f, 0x44, 0x6d, 0x84, 0x0a, 0x63, 0x03, 0xcd, 0x02, 0xd8, 0x35, 0x7d, 0xf3,
0x81, 0x33, 0x75, 0xa2, 0x05, 0x1a, 0xb0, 0x67, 0x5a, 0x96, 0x31, 0x89, 0x21, 0x8e, 0x1d, 0x17,
0xaa, 0xab, 0x08, 0xdf, 0x55, 0xc0, 0xe4, 0x35, 0xb8, 0x60, 0x05, 0x9e, 0x9f, 0xc6, 0xe5, 0x95,
0x6b, 0x8f, 0x4e, 0xa8, 0xc8, 0xda, 0x7f, 0x2b, 0xb0, 0x9e, 0x36, 0x8b, 0xc8, 0xb4, 0x6f, 0x42,
0x2b, 0x88, 0x0d, 0x24, 0x82, 0xc4, 0x56, 0xfa, 0xde, 0xca, 0x1b, 0x52, 0x4f, 0x96, 0xe0, 0x39,
0x5c, 0xc9, 0x08, 0x50, 0x49, 0x39, 0x5e, 0xb2, 0x37, 0x3d, 0x85, 0x48, 0x3e, 0x4a, 0x6a, 0xc6,
0xa4, 0xb6, 0xa6, 0x6b, 0x37, 0xe4, 0xda, 0x94, 0xea, 0x65, 0x2d, 0x29, 0x2a, 0x2b, 0xf2, 0x23,
0x61, 0x8a, 0x6c, 0x41, 0xc1, 0xd6, 0xdc, 0xc7, 0x19, 0x6e, 0x1e, 0xed, 0x4b, 0x68, 0x49, 0x50,
0x5c, 0x64, 0x71, 0xdf, 0x63, 0x45, 0x16, 0x42, 0x8e, 0x44, 0xd9, 0x85, 0x10, 0xfc, 0xa4, 0xd5,
0x2c, 0xea, 0xda, 0xa1, 0x5c, 0xcc, 0xa9, 0x81, 0x10, 0x5e, 0xf5, 0xd7, 0xf4, 0x6e, 0x02, 0xfe,
0x0c, 0xa1, 0xda, 0x0e, 0x5c, 0x90, 0xca, 0x39, 0xb5, 0xb4, 0x53, 0x4a, 0xb5, 0x6a, 0xba, 0x54,
0xfb, 0x4f, 0x1d, 0x56, 0xb3, 0x26, 0x79, 0x3b, 0x57, 0xa9, 0x0d, 0x12, 0x75, 0x66, 0xf9, 0x29,
0x11, 0xf6, 0x95, 0xf8, 0x10, 0x57, 0x33, 0x1a, 0x91, 0xe7, 0x5c, 0x1c, 0x6c, 0x2a, 0xcf, 0xc4,
0x9b, 0xcd, 0x30, 0x20, 0xc4, 0xfd, 0x0c, 0x31, 0xa4, 0xd2, 0x9b, 0xc1, 0x11, 0x3d, 0x36, 0x14,
0xcc, 0xbe, 0xc9, 0x35, 0x68, 0xd3, 0xf4, 0x06, 0xab, 0x2b, 0x5a, 0xe8, 0xb1, 0x63, 0xd2, 0xd2,
0x41, 0x80, 0xb0, 0xcc, 0x23, 0x2f, 0xc1, 0x92, 0xed, 0x9e, 0xc4, 0xb1, 0x34, 0x69, 0x78, 0xc4,
0xc1, 0x43, 0x67, 0xd3, 0x68, 0xb0, 0xc6, 0x8c, 0xb6, 0x23, 0xe2, 0x44, 0xa7, 0x2b, 0x11, 0x59,
0x97, 0x42, 0x17, 0xb3, 0xe4, 0x03, 0x19, 0xda, 0x9b, 0x99, 0xe0, 0x9c, 0xd1, 0x54, 0x61, 0x7c,
0xbf, 0x95, 0x8e, 0xef, 0x2d, 0x46, 0xe2, 0xd5, 0x52, 0x12, 0xa7, 0xd7, 0x6f, 0x57, 0x01, 0xfc,
0xc0, 0x39, 0x71, 0xa6, 0xf6, 0x91, 0x6d, 0xf5, 0x81, 0x35, 0x18, 0x14, 0x08, 0x6b, 0x5a, 0x89,
0x26, 0x88, 0x11, 0x78, 0x5e, 0xf4, 0x30, 0xec, 0xb7, 0x79, 0xe3, 0x23, 0x06, 0xeb, 0x0c, 0x4a,
0xfb, 0x14, 0xb4, 0x50, 0x66, 0x9d, 0x95, 0x15, 0x9e, 0x9f, 0xe3, 0x98, 0x35, 0x56, 0xd6, 0xe9,
0xc5, 0x68, 0x39, 0x6e, 0xbf, 0xc3, 0x56, 0xf2, 0x01, 0x8d, 0x77, 0xec, 0xc3, 0xf0, 0x5c, 0x2c,
0xfe, 0xbb, 0x6c, 0xaa, 0xc5, 0x20, 0x77, 0x11, 0x40, 0xbd, 0x36, 0x8a, 0x16, 0xfd, 0x55, 0x06,
0xa7, 0x9f, 0xe4, 0xc7, 0x71, 0xf2, 0xd9, 0x63, 0xd6, 0xbf, 0x52, 0x72, 0x88, 0x9f, 0x99, 0x4a,
0xf3, 0xaf, 0x15, 0xd8, 0xd8, 0x65, 0xd7, 0xb9, 0x12, 0x60, 0xce, 0x51, 0x29, 0x91, 0x37, 0x65,
0x49, 0x9a, 0x2d, 0x6b, 0xb2, 0x9b, 0x15, 0x78, 0xe4, 0x63, 0xe8, 0xc6, 0x34, 0xc5, 0xca, 0xda,
0x77, 0x15, 0xb3, 0x9d, 0x50, 0x1d, 0x6a, 0x1f, 0xc0, 0x66, 0x4e, 0x66, 0x71, 0xf5, 0x5e, 0xc7,
0x40, 0x28, 0x7b, 0x6c, 0x52, 0xe4, 0xb6, 0x84, 0x61, 0x6d, 0xf7, 0x1e, 0x2d, 0x69, 0xcd, 0x20,
0xca, 0x6d, 0xf8, 0x0c, 0x6b, 0x59, 0x3d, 0x9b, 0x5e, 0x2b, 0x4a, 0xce, 0x31, 0xac, 0xd3, 0x4a,
0xf7, 0x29, 0x88, 0xd2, 0x38, 0x40, 0xb7, 0xed, 0xcd, 0x23, 0x11, 0xff, 0xe2, 0xa1, 0xb6, 0xc9,
0xab, 0xef, 0x3c, 0xb7, 0xf7, 0x61, 0x83, 0x17, 0xbf, 0x4f, 0xb3, 0x89, 0x4b, 0x71, 0xe9, 0x9d,
0xa7, 0xfb, 0xbb, 0xaa, 0x12, 0x08, 0x4b, 0xb2, 0xf5, 0x37, 0xd2, 0xd9, 0xfa, 0x66, 0xde, 0xe0,
0xa9, 0x0c, 0x32, 0xef, 0x46, 0xb5, 0x02, 0x37, 0xd2, 0x73, 0x29, 0xfd, 0x12, 0x0b, 0x19, 0xaf,
0xe5, 0xa9, 0xff, 0x1f, 0x33, 0xfa, 0x03, 0x9e, 0xd1, 0x4b, 0xd6, 0xb2, 0x8b, 0xf0, 0x66, 0x26,
0xa3, 0xef, 0x97, 0x89, 0x29, 0x13, 0xfa, 0xdf, 0x2e, 0x41, 0x4b, 0xce, 0xe5, 0x74, 0x9a, 0x57,
0x52, 0xb5, 0x40, 0x49, 0xea, 0x95, 0x54, 0x7b, 0x9a, 0x2b, 0x69, 0xe9, 0xbb, 0xae, 0x24, 0x4c,
0xfe, 0xd8, 0x87, 0x11, 0xd8, 0x0f, 0xc5, 0x15, 0xd3, 0x64, 0x00, 0xdd, 0x7e, 0x98, 0x18, 0xbe,
0x71, 0x26, 0xc3, 0xa7, 0x4b, 0x87, 0xe5, 0x6c, 0xe9, 0xf0, 0x76, 0xe6, 0x7e, 0xb9, 0x9a, 0x27,
0x57, 0x78, 0xb3, 0xec, 0x17, 0xdd, 0x2c, 0x2f, 0x14, 0x2c, 0x7e, 0x66, 0x0b, 0x87, 0xdb, 0xbc,
0x70, 0x50, 0xbd, 0x4a, 0x44, 0xaf, 0x21, 0xaa, 0x4c, 0x42, 0x45, 0xf5, 0x40, 0xf2, 0x5b, 0xd3,
0x15, 0x2c, 0x1a, 0x0a, 0x52, 0xfa, 0x4f, 0x5a, 0x5d, 0x67, 0x08, 0x05, 0x7f, 0x51, 0x13, 0x9f,
0x92, 0x9e, 0xd0, 0xdb, 0xb9, 0x5a, 0xf3, 0x6c, 0x5e, 0xf7, 0x46, 0xba, 0xd4, 0x3c, 0x9f, 0xbb,
0xe4, 0x2a, 0x4d, 0x76, 0x13, 0x63, 0xe4, 0xe5, 0xd3, 0xbc, 0x48, 0x68, 0x09, 0x08, 0x4e, 0x63,
0x76, 0xf4, 0xd0, 0x71, 0x9d, 0xf0, 0x98, 0xcf, 0x37, 0xd8, 0x3c, 0xc4, 0xa0, 0x1d, 0xf6, 0x78,
0x63, 0x3f, 0xc1, 0x92, 0x64, 0xe2, 0x59, 0x36, 0x73, 0xc6, 0xba, 0xde, 0xa4, 0x80, 0x5d, 0x1c,
0x27, 0x07, 0xa4, 0x79, 0xae, 0x03, 0xd2, 0xca, 0x1c, 0x90, 0x0d, 0x68, 0xa0, 0xbc, 0xa1, 0xe7,
0xb2, 0x1c, 0xa5, 0xa5, 0x8b, 0x11, 0x0d, 0xf0, 0x33, 0x3b, 0x0c, 0x29, 0x83, 0x36, 0xcf, 0x3a,
0xc4, 0x50, 0x49, 0xb2, 0x56, 0xca, 0x92, 0xac, 0x53, 0x9a, 0x4e, 0x99, 0x24, 0xab, 0x53, 0x96,
0x64, 0x9d, 0xa5, 0xe7, 0xa4, 0xe4, 0x85, 0xdd, 0xd3, 0xf2, 0xc2, 0x1f, 0xf2, 0xe0, 0xdc, 0xc2,
0x7b, 0x3f, 0xeb, 0xea, 0xe2, 0xe4, 0xbc, 0x99, 0x69, 0x4d, 0xf5, 0xcb, 0xb4, 0x20, 0x3b, 0x53,
0xbf, 0x82, 0xd5, 0xfd, 0x27, 0xf6, 0x64, 0xbc, 0x70, 0x27, 0xe7, 0xb8, 0xab, 0x51, 0xdc, 0xc9,
0xcc, 0x12, 0x05, 0x1e, 0xfd, 0x54, 0x6f, 0xef, 0x5a, 0xfa, 0xf6, 0x36, 0xa0, 0x97, 0x70, 0x10,
0x72, 0x6e, 0x50, 0x39, 0x2d, 0x8a, 0x4c, 0x89, 0xaf, 0xe8, 0x62, 0x24, 0xe0, 0x76, 0x10, 0xb0,
0x5d, 0x73, 0x38, 0x8e, 0xd2, 0x6e, 0x5b, 0x4b, 0xbb, 0xad, 0xf6, 0x08, 0xda, 0x94, 0xc1, 0xf7,
0x12, 0x5f, 0xa4, 0xb0, 0xb5, 0x24, 0x85, 0x95, 0x99, 0xf0, 0x92, 0x92, 0x09, 0x6b, 0x5b, 0xb0,
0xc2, 0x79, 0x89, 0x8d, 0xd0, 0x12, 0x2e, 0x98, 0xc6, 0x76, 0xc3, 0x4f, 0xed, 0xe7, 0xd0, 0xd9,
0x89, 0x22, 0x73, 0x72, 0x7c, 0x0e, 0x79, 0x24, 0xaf, 0xaa, 0xca, 0x4b, 0x83, 0x6e, 0x4c, 0xa9,
0x94, 0xdb, 0x88, 0xbe, 0xe8, 0x05, 0xd1, 0xa7, 0x5e, 0xf0, 0xad, 0x19, 0x58, 0xe7, 0xcb, 0x59,
0xb1, 0xbc, 0x12, 0xaf, 0xbc, 0x35, 0xd4, 0x27, 0xfb, 0xd6, 0x5e, 0x86, 0xb5, 0x14, 0xbd, 0x52,
0xc6, 0xef, 0x40, 0x9b, 0x45, 0x05, 0x91, 0x1d, 0xbd, 0xa2, 0xf6, 0x6c, 0x4e, 0x0b, 0x1d, 0xb4,
0x4e, 0xa5, 0x61, 0x9f, 0xc1, 0x65, 0x8c, 0x7e, 0x3d, 0x93, 0x48, 0xac, 0xa7, 0xd7, 0x67, 0x92,
0x88, 0xc7, 0x50, 0x67, 0xe0, 0x5c, 0x8c, 0xbe, 0x4c, 0xfb, 0x07, 0xbe, 0x67, 0x44, 0xe6, 0x91,
0x7c, 0x37, 0xa7, 0x80, 0x7b, 0x38, 0x66, 0xcf, 0xfe, 0x74, 0xd2, 0x72, 0x90, 0x71, 0x14, 0x3f,
0x9e, 0xb7, 0x29, 0x6c, 0x8f, 0x83, 0xa8, 0x46, 0x42, 0xe7, 0xd7, 0x3c, 0x41, 0x58, 0xd2, 0xd9,
0x37, 0x66, 0xd9, 0x44, 0x95, 0x57, 0x28, 0x04, 0xc3, 0x04, 0xdb, 0x4e, 0x7c, 0x3d, 0x75, 0xd3,
0x02, 0xeb, 0x62, 0x56, 0xbb, 0x09, 0x84, 0x6b, 0x20, 0x75, 0x25, 0x9d, 0x5d, 0x5b, 0xef, 0xc3,
0x5a, 0x6a, 0xbd, 0x7c, 0xb5, 0x4a, 0x11, 0xc8, 0x72, 0x17, 0x8b, 0xff, 0x59, 0x01, 0xd8, 0x99,
0x47, 0xc7, 0xa2, 0x94, 0x1f, 0x40, 0x93, 0xf6, 0x20, 0x94, 0x86, 0x80, 0x1c, 0xd3, 0x39, 0xdf,
0x0c, 0x43, 0xac, 0xa3, 0xe3, 0x9c, 0x4b, 0x8e, 0x59, 0x19, 0x8e, 0x54, 0xe2, 0xf6, 0x11, 0xfd,
0xa6, 0x8f, 0xf8, 0xfc, 0x5f, 0x05, 0xc3, 0xb4, 0xac, 0x00, 0xc3, 0xb8, 0xe8, 0x23, 0x75, 0x38,
0x74, 0x87, 0x03, 0x29, 0x9a, 0x63, 0xd9, 0x28, 0x5a, 0xb4, 0x30, 0x22, 0xef, 0xb1, 0xed, 0x8a,
0x6c, 0xaa, 0x13, 0x43, 0xef, 0x51, 0x20, 0x45, 0x0b, 0xec, 0x23, 0xd4, 0x72, 0x10, 0xa3, 0x35,
0x38, 0x5a, 0x0c, 0x65, 0x68, 0xf4, 0x37, 0x8f, 0xde, 0xe1, 0x7c, 0x3a, 0xe5, 0x9b, 0x3c, 0xaf,
0x2e, 0xb1, 0x3e, 0xe6, 0xfb, 0xc8, 0x76, 0x85, 0x12, 0x15, 0x89, 0xcd, 0x7d, 0xff, 0xd2, 0x6c,
0x0d, 0x2e, 0x28, 0x82, 0x8a, 0xaa, 0x02, 0x7d, 0x81, 0x17, 0x1c, 0x4f, 0x27, 0xbf, 0x76, 0x11,
0xd6, 0x52, 0xeb, 0x05, 0xd9, 0x6d, 0xe8, 0x88, 0x27, 0x20, 0x61, 0x67, 0x2c, 0xef, 0xe9, 0xe9,
0x9f, 0x38, 0x56, 0xdc, 0x1a, 0x5c, 0xc6, 0xf1, 0x2e, 0x0e, 0x31, 0x5c, 0x74, 0x74, 0x4e, 0x5e,
0xe0, 0x7e, 0x08, 0x5d, 0xf1, 0x60, 0x64, 0xa4, 0x9e, 0x54, 0x93, 0xbe, 0x57, 0x8a, 0xb6, 0xde,
0x71, 0xd5, 0xa1, 0xf6, 0x35, 0x0c, 0xee, 0xfb, 0x16, 0x4d, 0x5f, 0x54, 0xaa, 0xf1, 0xd6, 0x90,
0x78, 0xfc, 0x73, 0x4c, 0x09, 0xf1, 0xf4, 0xb2, 0x4e, 0xa0, 0x0e, 0xb5, 0x2b, 0x70, 0xb9, 0x90,
0x38, 0xdf, 0xf7, 0xf6, 0xf3, 0xd0, 0x8c, 0x7f, 0x62, 0x21, 0xcb, 0x50, 0xbb, 0xb7, 0x7b, 0xd8,
0x7b, 0x8e, 0x7e, 0xdc, 0xdf, 0x3b, 0xec, 0x55, 0xb6, 0xb7, 0x61, 0x35, 0xd3, 0xcb, 0x27, 0x2d,
0xa8, 0xeb, 0xfb, 0x3b, 0x7b, 0x5f, 0x21, 0xda, 0x0a, 0x34, 0x47, 0x77, 0xef, 0xf1, 0x51, 0x65,
0x7b, 0x17, 0xba, 0xe9, 0x64, 0x8c, 0xb4, 0x61, 0x79, 0x17, 0x67, 0xef, 0xed, 0xef, 0x21, 0x32,
0x0e, 0xf4, 0xfb, 0xa3, 0xd1, 0xc1, 0xe8, 0xb3, 0x5e, 0x85, 0x00, 0x34, 0xf6, 0xbf, 0x3c, 0xa0,
0x13, 0x55, 0x3a, 0x71, 0x7f, 0x74, 0x6b, 0x74, 0xf7, 0x97, 0xa3, 0x5e, 0x6d, 0xf8, 0x6f, 0x80,
0xae, 0x10, 0x74, 0x8c, 0x67, 0xc0, 0x99, 0xd8, 0xe4, 0x26, 0x2c, 0xc7, 0xff, 0x09, 0x25, 0x69,
0x5f, 0xfa, 0xa7, 0xa6, 0x41, 0x3f, 0x3f, 0x21, 0xec, 0xfa, 0x1c, 0x39, 0x64, 0xd6, 0x52, 0xde,
0x3f, 0xae, 0xa8, 0x8a, 0xcb, 0x3d, 0xb0, 0x0c, 0xae, 0x96, 0x4d, 0x4b, 0x8a, 0x63, 0xe8, 0xa6,
0x1f, 0xa2, 0x49, 0xb2, 0xa6, 0xf0, 0x81, 0x7b, 0x70, 0xad, 0x74, 0x5e, 0x12, 0xfd, 0x0a, 0x7a,
0xd9, 0x27, 0x68, 0x92, 0xb4, 0x6d, 0x4b, 0x9e, 0xb7, 0x07, 0xd7, 0x4f, 0xc1, 0x50, 0x49, 0xe7,
0x1e, 0x6b, 0xb7, 0xca, 0x9f, 0xdb, 0x72, 0xa4, 0xcb, 0xde, 0xf0, 0xb8, 0x2a, 0xd2, 0xef, 0x16,
0x44, 0x7d, 0x22, 0x2d, 0x78, 0xbf, 0x52, 0x54, 0x51, 0xfc, 0xe0, 0x81, 0x44, 0xbf, 0xc0, 0x3a,
0x22, 0xdd, 0x92, 0x21, 0xc9, 0xaa, 0xe2, 0x06, 0xd3, 0x60, 0xab, 0x1c, 0x21, 0x6d, 0x37, 0xb5,
0xe1, 0x92, 0xb2, 0x5b, 0x41, 0x17, 0x27, 0x65, 0xb7, 0xc2, 0x4e, 0x0d, 0x73, 0xaf, 0x54, 0x5b,
0x45, 0x71, 0xaf, 0xa2, 0x1e, 0xce, 0xe0, 0x6a, 0xd9, 0xb4, 0xba, 0xfd, 0x4c, 0x4b, 0x45, 0xd9,
0x7e, 0x71, 0xa7, 0x66, 0xb0, 0x55, 0x8e, 0x90, 0xb5, 0x55, 0x52, 0x2a, 0x66, 0x6c, 0x95, 0xeb,
0x4c, 0x64, 0x6c, 0x95, 0xaf, 0x31, 0x85, 0xad, 0x32, 0x35, 0xdf, 0xb5, 0xd2, 0x74, 0x39, 0x6f,
0xab, 0xe2, 0x0c, 0x1c, 0xe9, 0xee, 0x40, 0x33, 0xce, 0x77, 0x49, 0x72, 0xba, 0x33, 0x49, 0xf6,
0xe0, 0x52, 0xc1, 0x8c, 0x24, 0xf1, 0x53, 0x58, 0xa2, 0x50, 0xb2, 0x9e, 0x42, 0x8a, 0x97, 0x5e,
0xcc, 0x40, 0xe5, 0xb2, 0xf7, 0xa1, 0xc1, 0x13, 0x46, 0x92, 0x44, 0xd8, 0x54, 0x2e, 0x3a, 0xd8,
0xcc, 0xc1, 0xe5, 0xe2, 0xcf, 0xf9, 0xbf, 0x83, 0x22, 0xf3, 0x23, 0x97, 0x53, 0x7f, 0x37, 0xa5,
0xf3, 0xcb, 0xc1, 0xf3, 0xc5, 0x93, 0x92, 0xd6, 0x03, 0x58, 0x2b, 0x88, 0xdc, 0x24, 0x69, 0x4f,
0x94, 0x5f, 0x1a, 0x83, 0x17, 0x4f, 0x47, 0x8a, 0x79, 0x0c, 0xff, 0x56, 0x85, 0x15, 0x7e, 0x45,
0x8a, 0x68, 0xfb, 0x19, 0x40, 0x92, 0xa8, 0x91, 0x41, 0xca, 0x01, 0x52, 0xd9, 0xe6, 0xe0, 0x72,
0xe1, 0x9c, 0xaa, 0x09, 0x25, 0xe7, 0x52, 0x34, 0x91, 0xcf, 0xe4, 0x14, 0x4d, 0x14, 0xa4, 0x69,
0x48, 0x6b, 0x0f, 0x5a, 0x32, 0x11, 0x20, 0x4a, 0xfe, 0x90, 0xc9, 0x62, 0x06, 0x83, 0xa2, 0x29,
0x55, 0x22, 0xe5, 0xe6, 0x57, 0x24, 0xca, 0xe7, 0x13, 0x8a, 0x44, 0x45, 0xc9, 0xc2, 0x73, 0xff,
0x0b, 0x00, 0x00, 0xff, 0xff, 0x27, 0xd9, 0x1b, 0x77, 0x6c, 0x2b, 0x00, 0x00,
}

View File

@ -38,8 +38,14 @@ service RuntimeService {
// ContainerStatus returns status of the container.
rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {}
// Exec executes the command in the container.
rpc Exec(stream ExecRequest) returns (stream ExecResponse) {}
// ExecSync runs a command in a container synchronously.
rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {}
// Exec prepares a streaming endpoint to execute a command in the container.
rpc Exec(ExecRequest) returns (ExecResponse) {}
// Attach prepares a streaming endpoint to attach to a running container.
rpc Attach(AttachRequest) returns (AttachResponse) {}
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
rpc PortForward(PortForwardRequest) returns (PortForwardResponse) {}
// UpdateRuntimeConfig updates the runtime configuration based on request
rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {}
@ -623,6 +629,24 @@ message ContainerStatusResponse {
optional ContainerStatus status = 1;
}
message ExecSyncRequest {
// The id of the container
optional string container_id = 1;
// The cmd to execute
repeated string cmd = 2;
// Timeout in seconds to stop the command. Default: run forever.
optional int64 timeout = 3;
}
message ExecSyncResponse {
// The captured command stdout output.
optional bytes stdout = 1;
// The captured command stderr output.
optional bytes stderr = 2;
// The exit code the command finished with.
optional int32 exit_code = 3;
}
message ExecRequest {
// The id of the container
optional string container_id = 1;
@ -630,15 +654,37 @@ message ExecRequest {
repeated string cmd = 2;
// Whether use tty
optional bool tty = 3;
// Streaming stdin
optional bytes stdin = 4;
// Whether to stream stdin
optional bool stdin = 4;
}
message ExecResponse {
// Streaming stdout
optional bytes stdout = 1;
// Streaming stderr
optional bytes stderr = 2;
// The fully qualified URL of the exec streaming server
optional string url = 1;
}
message AttachRequest {
// The id of the container
optional string container_id = 1;
// Whether to stream stdin
optional bool stdin = 2;
}
message AttachResponse {
// The fully qualified URL of the attach streaming server
optional string url = 1;
}
message PortForwardRequest {
// The id of the container
optional string pod_sandbox_id = 1;
// The port to forward
repeated int32 port = 2;
}
message PortForwardResponse {
// The fully qualified URL of the port-forward streaming server
optional string url = 1;
}
message ImageFilter {