vendor: update buildkit to 93b40706a007

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell
2022-12-13 11:03:53 +00:00
parent 5f4d463780
commit 163712a23b
26 changed files with 934 additions and 471 deletions

View File

@ -4,7 +4,6 @@ import (
"context"
"github.com/moby/buildkit/client/buildid"
"github.com/moby/buildkit/frontend/attestations"
gateway "github.com/moby/buildkit/frontend/gateway/client"
"github.com/moby/buildkit/frontend/gateway/grpcclient"
gatewayapi "github.com/moby/buildkit/frontend/gateway/pb"
@ -24,7 +23,6 @@ func (c *Client) Build(ctx context.Context, opt SolveOpt, product string, buildF
feOpts := opt.FrontendAttrs
opt.Frontend = ""
opt.FrontendAttrs = attestations.Filter(opt.FrontendAttrs)
if product == "" {
product = apicaps.ExportedProduct

View File

@ -192,12 +192,13 @@ func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []
}
meta := &pb.Meta{
Args: args,
Env: env.ToArray(),
Cwd: cwd,
User: user,
Hostname: hostname,
CgroupParent: cgrpParent,
Args: args,
Env: env.ToArray(),
Cwd: cwd,
User: user,
Hostname: hostname,
CgroupParent: cgrpParent,
RemoveMountStubsRecursive: true,
}
extraHosts, err := getExtraHosts(e.base)(ctx, c)

View File

@ -210,11 +210,12 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
})
}
frontendAttrs := map[string]string{}
for k, v := range opt.FrontendAttrs {
frontendAttrs[k] = v
}
for k, v := range cacheOpt.frontendAttrs {
if opt.FrontendAttrs == nil {
opt.FrontendAttrs = map[string]string{}
}
opt.FrontendAttrs[k] = v
frontendAttrs[k] = v
}
solveCtx, cancelSolve := context.WithCancel(ctx)
@ -254,7 +255,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
ExporterAttrs: ex.Attrs,
Session: s.ID(),
Frontend: opt.Frontend,
FrontendAttrs: opt.FrontendAttrs,
FrontendAttrs: frontendAttrs,
FrontendInputs: frontendInputs,
Cache: cacheOpt.options,
Entitlements: opt.AllowedEntitlements,
@ -270,7 +271,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
if runGateway != nil {
eg.Go(func() error {
err := runGateway(ref, s, opt.FrontendAttrs)
err := runGateway(ref, s, frontendAttrs)
if err == nil {
return nil
}

View File

@ -0,0 +1,56 @@
package exptypes
import (
"encoding/json"
"fmt"
"github.com/containerd/containerd/platforms"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)
func ParsePlatforms(meta map[string][]byte) (Platforms, error) {
if platformsBytes, ok := meta[ExporterPlatformsKey]; ok {
var ps Platforms
if len(platformsBytes) > 0 {
if err := json.Unmarshal(platformsBytes, &ps); err != nil {
return Platforms{}, errors.Wrapf(err, "failed to parse platforms passed to provenance processor")
}
}
return ps, nil
}
p := platforms.DefaultSpec()
if imgConfig, ok := meta[ExporterImageConfigKey]; ok {
var img ocispecs.Image
err := json.Unmarshal(imgConfig, &img)
if err != nil {
return Platforms{}, err
}
if img.OS != "" && img.Architecture != "" {
p = ocispecs.Platform{
Architecture: img.Architecture,
OS: img.OS,
OSVersion: img.OSVersion,
OSFeatures: img.OSFeatures,
Variant: img.Variant,
}
}
}
p = platforms.Normalize(p)
pk := platforms.Format(p)
ps := Platforms{
Platforms: []Platform{{ID: pk, Platform: p}},
}
return ps, nil
}
func ParseKey(meta map[string][]byte, key string, p Platform) []byte {
if v, ok := meta[fmt.Sprintf("%s/%s", key, p.ID)]; ok {
return v
} else if v, ok := meta[key]; ok {
return v
}
return nil
}

View File

@ -6,7 +6,7 @@ import (
"github.com/pkg/errors"
)
func AttestationToPB(a *result.Attestation) (*pb.Attestation, error) {
func AttestationToPB[T any](a *result.Attestation[T]) (*pb.Attestation, error) {
if a.ContentFunc != nil {
return nil, errors.Errorf("attestation callback cannot be sent through gateway")
}
@ -22,14 +22,14 @@ func AttestationToPB(a *result.Attestation) (*pb.Attestation, error) {
return &pb.Attestation{
Kind: a.Kind,
Metadata: a.Metadata,
Path: a.Path,
Ref: a.Ref,
InTotoPredicateType: a.InToto.PredicateType,
InTotoSubjects: subjects,
}, nil
}
func AttestationFromPB(a *pb.Attestation) (*result.Attestation, error) {
func AttestationFromPB[T any](a *pb.Attestation) (*result.Attestation[T], error) {
subjects := make([]result.InTotoSubject, len(a.InTotoSubjects))
for i, subject := range a.InTotoSubjects {
subjects[i] = result.InTotoSubject{
@ -39,10 +39,10 @@ func AttestationFromPB(a *pb.Attestation) (*result.Attestation, error) {
}
}
return &result.Attestation{
Kind: a.Kind,
Path: a.Path,
Ref: a.Ref,
return &result.Attestation[T]{
Kind: a.Kind,
Metadata: a.Metadata,
Path: a.Path,
InToto: result.InTotoAttestation{
PredicateType: a.InTotoPredicateType,
Subjects: subjects,

View File

@ -16,6 +16,8 @@ import (
type Result = result.Result[Reference]
type Attestation = result.Attestation[Reference]
type BuildFunc func(context.Context, Client) (*Result, error)
func NewResult() *Result {
@ -73,6 +75,8 @@ type StartRequest struct {
Stdin io.ReadCloser
Stdout, Stderr io.WriteCloser
SecurityMode pb.SecurityMode
RemoveMountStubsRecursive bool
}
// WinSize is same as executor.WinSize, copied here to prevent circular package

View File

@ -161,7 +161,7 @@ func (c *grpcClient) Run(ctx context.Context, f client.BuildFunc) (retError erro
}
}
if res.Attestations != nil && c.caps.Supports(pb.CapAttestations) == nil {
if res.Attestations != nil {
attestations := map[string]*pb.Attestations{}
for k, as := range res.Attestations {
for _, a := range as {
@ -170,6 +170,12 @@ func (c *grpcClient) Run(ctx context.Context, f client.BuildFunc) (retError erro
retError = err
continue
}
pbRef, err := convertRef(a.Ref)
if err != nil {
retError = err
continue
}
pbAtt.Ref = pbRef
if attestations[k] == nil {
attestations[k] = &pb.Attestations{}
}
@ -451,11 +457,18 @@ func (c *grpcClient) Solve(ctx context.Context, creq client.SolveRequest) (res *
if resp.Result.Attestations != nil {
for p, as := range resp.Result.Attestations {
for _, a := range as.Attestation {
att, err := client.AttestationFromPB(a)
att, err := client.AttestationFromPB[client.Reference](a)
if err != nil {
return nil, err
}
res.AddAttestation(p, *att, nil)
if a.Ref.Id != "" {
ref, err := newReference(c, a.Ref)
if err != nil {
return nil, err
}
att.Ref = ref
}
res.AddAttestation(p, *att)
}
}
}
@ -809,6 +822,7 @@ func (ctr *container) Start(ctx context.Context, req client.StartRequest) (clien
Tty: req.Tty,
Security: req.SecurityMode,
}
init.Meta.RemoveMountStubsRecursive = req.RemoveMountStubsRecursive
if req.Stdin != nil {
init.Fds = append(init.Fds, 0)
}

View File

@ -411,14 +411,15 @@ func (m *Attestations) GetAttestation() []*Attestation {
}
type Attestation struct {
Kind AttestationKind `protobuf:"varint,1,opt,name=kind,proto3,enum=moby.buildkit.v1.frontend.AttestationKind" json:"kind,omitempty"`
Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
InTotoPredicateType string `protobuf:"bytes,4,opt,name=inTotoPredicateType,proto3" json:"inTotoPredicateType,omitempty"`
InTotoSubjects []*InTotoSubject `protobuf:"bytes,5,rep,name=inTotoSubjects,proto3" json:"inTotoSubjects,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Kind AttestationKind `protobuf:"varint,1,opt,name=kind,proto3,enum=moby.buildkit.v1.frontend.AttestationKind" json:"kind,omitempty"`
Metadata map[string][]byte `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Ref *Ref `protobuf:"bytes,3,opt,name=ref,proto3" json:"ref,omitempty"`
Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"`
InTotoPredicateType string `protobuf:"bytes,5,opt,name=inTotoPredicateType,proto3" json:"inTotoPredicateType,omitempty"`
InTotoSubjects []*InTotoSubject `protobuf:"bytes,6,rep,name=inTotoSubjects,proto3" json:"inTotoSubjects,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Attestation) Reset() { *m = Attestation{} }
@ -461,11 +462,18 @@ func (m *Attestation) GetKind() AttestationKind {
return AttestationKindInToto
}
func (m *Attestation) GetRef() string {
func (m *Attestation) GetMetadata() map[string][]byte {
if m != nil {
return m.Metadata
}
return nil
}
func (m *Attestation) GetRef() *Ref {
if m != nil {
return m.Ref
}
return ""
return nil
}
func (m *Attestation) GetPath() string {
@ -2556,6 +2564,7 @@ func init() {
proto.RegisterMapType((map[string]*Ref)(nil), "moby.buildkit.v1.frontend.RefMap.RefsEntry")
proto.RegisterType((*Attestations)(nil), "moby.buildkit.v1.frontend.Attestations")
proto.RegisterType((*Attestation)(nil), "moby.buildkit.v1.frontend.Attestation")
proto.RegisterMapType((map[string][]byte)(nil), "moby.buildkit.v1.frontend.Attestation.MetadataEntry")
proto.RegisterType((*InTotoSubject)(nil), "moby.buildkit.v1.frontend.InTotoSubject")
proto.RegisterType((*ReturnRequest)(nil), "moby.buildkit.v1.frontend.ReturnRequest")
proto.RegisterType((*ReturnResponse)(nil), "moby.buildkit.v1.frontend.ReturnResponse")
@ -2600,157 +2609,157 @@ func init() {
func init() { proto.RegisterFile("gateway.proto", fileDescriptor_f1a937782ebbded5) }
var fileDescriptor_f1a937782ebbded5 = []byte{
// 2387 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x19, 0x4d, 0x6f, 0x1b, 0xc7,
0x55, 0x2b, 0x52, 0x1f, 0x7c, 0xa4, 0x28, 0x7a, 0xec, 0xa4, 0xeb, 0x45, 0xe0, 0xd0, 0xeb, 0x44,
0xa1, 0x15, 0x87, 0x4c, 0xe9, 0x04, 0x72, 0xed, 0xd6, 0x89, 0xf5, 0x05, 0x29, 0x96, 0x6c, 0x76,
0xe4, 0xc2, 0x45, 0x90, 0x02, 0x5d, 0x71, 0x87, 0xf4, 0xd6, 0xab, 0xdd, 0xed, 0xee, 0xd0, 0xb2,
0x92, 0x4b, 0x7b, 0x2b, 0x72, 0xea, 0xa9, 0xb7, 0xa0, 0x40, 0xfb, 0x07, 0xda, 0x4b, 0x6f, 0xed,
0x39, 0x40, 0x2f, 0xbd, 0xf4, 0xd2, 0x43, 0x50, 0xf8, 0x47, 0xb4, 0xe8, 0xad, 0x78, 0x33, 0xb3,
0xe4, 0xf0, 0x43, 0x4b, 0x2a, 0x39, 0x71, 0xe6, 0xcd, 0xfb, 0x98, 0xf7, 0xfd, 0x66, 0x09, 0x2b,
0x5d, 0x87, 0xb3, 0x53, 0xe7, 0xac, 0x1e, 0xc5, 0x21, 0x0f, 0xc9, 0xd5, 0x93, 0xf0, 0xf8, 0xac,
0x7e, 0xdc, 0xf3, 0x7c, 0xf7, 0xb9, 0xc7, 0xeb, 0x2f, 0xbe, 0x5f, 0xef, 0xc4, 0x61, 0xc0, 0x59,
0xe0, 0x5a, 0xef, 0x75, 0x3d, 0xfe, 0xac, 0x77, 0x5c, 0x6f, 0x87, 0x27, 0x8d, 0x6e, 0xd8, 0x0d,
0x1b, 0x82, 0xe2, 0xb8, 0xd7, 0x11, 0x3b, 0xb1, 0x11, 0x2b, 0xc9, 0xc9, 0x6a, 0x8e, 0xa2, 0x77,
0xc3, 0xb0, 0xeb, 0x33, 0x27, 0xf2, 0x12, 0xb5, 0x6c, 0xc4, 0x51, 0xbb, 0x91, 0x70, 0x87, 0xf7,
0x12, 0x45, 0x73, 0x4b, 0xa3, 0xc1, 0x8b, 0x34, 0xd2, 0x8b, 0x34, 0x92, 0xd0, 0x7f, 0xc1, 0xe2,
0x46, 0x74, 0xdc, 0x08, 0xa3, 0x14, 0xbb, 0x71, 0x2e, 0xb6, 0x13, 0x79, 0x0d, 0x7e, 0x16, 0xb1,
0xa4, 0x71, 0x1a, 0xc6, 0xcf, 0x59, 0xac, 0x08, 0x6e, 0x9f, 0x4b, 0xd0, 0xe3, 0x9e, 0x8f, 0x54,
0x6d, 0x27, 0x4a, 0x50, 0x08, 0xfe, 0x2a, 0x22, 0x5d, 0x6d, 0x1e, 0x06, 0x5e, 0xc2, 0x3d, 0xaf,
0xeb, 0x35, 0x3a, 0x89, 0xa0, 0x91, 0x52, 0x50, 0x09, 0x89, 0x6e, 0xff, 0x3d, 0x0f, 0x8b, 0x94,
0x25, 0x3d, 0x9f, 0x93, 0x35, 0x58, 0x89, 0x59, 0x67, 0x9b, 0x45, 0x31, 0x6b, 0x3b, 0x9c, 0xb9,
0xa6, 0x51, 0x35, 0x6a, 0x85, 0xbd, 0x39, 0x3a, 0x0c, 0x26, 0x3f, 0x81, 0x72, 0xcc, 0x3a, 0x89,
0x86, 0x38, 0x5f, 0x35, 0x6a, 0xc5, 0xe6, 0xbb, 0xf5, 0x73, 0x9d, 0x51, 0xa7, 0xac, 0x73, 0xe8,
0x44, 0x03, 0x92, 0xbd, 0x39, 0x3a, 0xc2, 0x84, 0x34, 0x21, 0x17, 0xb3, 0x8e, 0x99, 0x13, 0xbc,
0xae, 0x65, 0xf3, 0xda, 0x9b, 0xa3, 0x88, 0x4c, 0x36, 0x20, 0x8f, 0x5c, 0xcc, 0xbc, 0x20, 0xba,
0x3e, 0xf5, 0x02, 0x7b, 0x73, 0x54, 0x10, 0x90, 0x87, 0xb0, 0x7c, 0xc2, 0xb8, 0xe3, 0x3a, 0xdc,
0x31, 0xa1, 0x9a, 0xab, 0x15, 0x9b, 0x8d, 0x4c, 0x62, 0x34, 0x50, 0xfd, 0x50, 0x51, 0xec, 0x04,
0x3c, 0x3e, 0xa3, 0x7d, 0x06, 0xe4, 0x29, 0x94, 0x1c, 0xce, 0x19, 0x5a, 0xd5, 0x0b, 0x83, 0xc4,
0x2c, 0x0a, 0x86, 0xb7, 0xa7, 0x33, 0x7c, 0xa0, 0x51, 0x49, 0xa6, 0x43, 0x8c, 0xac, 0x7b, 0xb0,
0x32, 0x24, 0x93, 0x54, 0x20, 0xf7, 0x9c, 0x9d, 0x49, 0xc7, 0x50, 0x5c, 0x92, 0x2b, 0xb0, 0xf0,
0xc2, 0xf1, 0x7b, 0x4c, 0xf8, 0xa0, 0x44, 0xe5, 0xe6, 0xee, 0xfc, 0x1d, 0xc3, 0x7a, 0x06, 0x97,
0xc6, 0xf8, 0x4f, 0x60, 0xf0, 0x23, 0x9d, 0x41, 0xb1, 0xf9, 0x4e, 0xc6, 0xad, 0x75, 0x76, 0x9a,
0xa4, 0xcd, 0x65, 0x58, 0x8c, 0x85, 0x42, 0xf6, 0xef, 0x0c, 0xa8, 0x8c, 0xba, 0x9a, 0xec, 0x2b,
0x27, 0x19, 0xc2, 0x2c, 0x1f, 0x5e, 0x20, 0x4a, 0x10, 0xa0, 0x0c, 0x23, 0x58, 0x58, 0x1b, 0x50,
0xe8, 0x83, 0xa6, 0x19, 0xa3, 0xa0, 0x5d, 0xd1, 0xde, 0x80, 0x1c, 0x65, 0x1d, 0x52, 0x86, 0x79,
0x4f, 0xc5, 0x35, 0x9d, 0xf7, 0x5c, 0x52, 0x85, 0x9c, 0xcb, 0x3a, 0x4a, 0xf5, 0x72, 0x3d, 0x3a,
0xae, 0x6f, 0xb3, 0x8e, 0x17, 0x78, 0xa8, 0x22, 0xc5, 0x23, 0xfb, 0x0f, 0x06, 0xe6, 0x07, 0x5e,
0x8b, 0x7c, 0x34, 0xa4, 0xc7, 0xf4, 0x68, 0x1f, 0xbb, 0xfd, 0xd3, 0xec, 0xdb, 0x7f, 0x30, 0xec,
0x89, 0x29, 0x29, 0xa0, 0x6b, 0xf7, 0x53, 0x28, 0xe9, 0xbe, 0x21, 0x7b, 0x50, 0xd4, 0xe2, 0x48,
0x5d, 0x78, 0x6d, 0x36, 0xcf, 0x52, 0x9d, 0xd4, 0xfe, 0xaf, 0x01, 0x45, 0xed, 0x90, 0xdc, 0x87,
0xfc, 0x73, 0x2f, 0x90, 0x26, 0x2c, 0x37, 0xd7, 0x67, 0x63, 0xf9, 0xd0, 0x0b, 0x5c, 0x2a, 0xe8,
0x50, 0xeb, 0x58, 0x19, 0xbc, 0x20, 0x53, 0x98, 0x40, 0x3e, 0x72, 0xf8, 0x33, 0x91, 0xf7, 0x05,
0x2a, 0xd6, 0xe4, 0x7d, 0xb8, 0xec, 0x05, 0x4f, 0x42, 0x1e, 0xb6, 0x62, 0xe6, 0x7a, 0x18, 0x0a,
0x4f, 0xce, 0x22, 0x26, 0xb2, 0xbc, 0x40, 0x27, 0x1d, 0x91, 0x16, 0x94, 0x25, 0xf8, 0xa8, 0x77,
0xfc, 0x0b, 0xd6, 0xe6, 0x89, 0xb9, 0x20, 0x94, 0xae, 0x65, 0xdc, 0x70, 0x5f, 0x27, 0xa0, 0x23,
0xf4, 0xf6, 0x9f, 0x0d, 0x58, 0x19, 0xc2, 0x20, 0x1f, 0x0f, 0xe9, 0x7e, 0x6b, 0x56, 0xce, 0x9a,
0xf6, 0x9f, 0xc0, 0xa2, 0xeb, 0x75, 0x59, 0xc2, 0xcd, 0xf9, 0x6a, 0xae, 0x56, 0xd8, 0x6c, 0x7e,
0xfd, 0xcd, 0x9b, 0x73, 0xff, 0xfa, 0xe6, 0xcd, 0x75, 0xad, 0x66, 0x87, 0x11, 0x0b, 0xda, 0x61,
0xc0, 0x1d, 0x2f, 0x60, 0x31, 0xb6, 0x9e, 0xf7, 0x24, 0x49, 0x7d, 0x5b, 0xfc, 0x50, 0xc5, 0x01,
0xed, 0x16, 0x38, 0x27, 0x2c, 0xb5, 0x1b, 0xae, 0x6d, 0x0e, 0x2b, 0x94, 0xf1, 0x5e, 0x1c, 0x50,
0xf6, 0xcb, 0x1e, 0x22, 0xfd, 0x20, 0xcd, 0x4c, 0x71, 0xe9, 0x69, 0x15, 0x12, 0x11, 0xa9, 0x22,
0x20, 0x35, 0x58, 0x60, 0x71, 0x1c, 0xc6, 0x2a, 0x1a, 0x49, 0x5d, 0x36, 0xc1, 0x7a, 0x1c, 0xb5,
0xeb, 0x47, 0xa2, 0x09, 0x52, 0x89, 0x60, 0x57, 0xa0, 0x9c, 0x4a, 0x4d, 0xa2, 0x30, 0x48, 0x98,
0xbd, 0x8a, 0xa6, 0x8b, 0x7a, 0x3c, 0x51, 0xf7, 0xb0, 0xff, 0x66, 0x40, 0x39, 0x85, 0x48, 0x1c,
0xf2, 0x19, 0x14, 0x07, 0xb9, 0x96, 0x26, 0xd5, 0xdd, 0x4c, 0xa3, 0xea, 0xf4, 0x5a, 0xa2, 0xaa,
0x1c, 0xd3, 0xd9, 0x59, 0x8f, 0xa0, 0x32, 0x8a, 0x30, 0x21, 0xe3, 0xde, 0x1a, 0xce, 0xb8, 0xd1,
0x02, 0xa0, 0x65, 0xd8, 0x3f, 0x0d, 0xb8, 0x4a, 0x99, 0xe8, 0xea, 0xfb, 0x27, 0x4e, 0x97, 0x6d,
0x85, 0x41, 0xc7, 0xeb, 0xa6, 0x66, 0xae, 0x88, 0xea, 0x92, 0x72, 0xc6, 0x42, 0x53, 0x83, 0xe5,
0x96, 0xef, 0xf0, 0x4e, 0x18, 0x9f, 0x28, 0xe6, 0x25, 0x64, 0x9e, 0xc2, 0x68, 0xff, 0x94, 0x54,
0xa1, 0xa8, 0x18, 0x1f, 0x86, 0x6e, 0xea, 0x4e, 0x1d, 0x44, 0x4c, 0x58, 0x3a, 0x08, 0xbb, 0x8f,
0xd0, 0xd9, 0x32, 0x03, 0xd2, 0x2d, 0xb1, 0xa1, 0xa4, 0x10, 0x63, 0x91, 0x20, 0x0b, 0x55, 0xa3,
0xb6, 0x40, 0x87, 0x60, 0xe4, 0x0d, 0x28, 0x1c, 0xb1, 0x24, 0xf1, 0xc2, 0x60, 0x7f, 0xdb, 0x5c,
0x14, 0xf4, 0x03, 0x80, 0xfd, 0x2b, 0x03, 0xac, 0x49, 0x7a, 0x29, 0x27, 0x7d, 0x02, 0x8b, 0x32,
0xec, 0xa4, 0x6e, 0xdf, 0x2e, 0x60, 0xe5, 0x2f, 0x79, 0x1d, 0x16, 0x25, 0x77, 0xd5, 0xaa, 0xd4,
0xce, 0xfe, 0xcb, 0x02, 0x94, 0x8e, 0xf0, 0x02, 0xa9, 0x35, 0xeb, 0x00, 0x03, 0x27, 0xa8, 0xc0,
0x1d, 0x75, 0x8d, 0x86, 0x41, 0x2c, 0x58, 0xde, 0x55, 0x41, 0xa2, 0x0a, 0x4b, 0x7f, 0x4f, 0x3e,
0x85, 0x62, 0xba, 0x7e, 0x1c, 0x71, 0x33, 0x27, 0xa2, 0xec, 0x4e, 0x46, 0x94, 0xe9, 0x37, 0xa9,
0x6b, 0xa4, 0x2a, 0xc6, 0x34, 0x08, 0xb9, 0x05, 0x97, 0x1c, 0xdf, 0x0f, 0x4f, 0x55, 0xe2, 0x88,
0x14, 0x10, 0x2e, 0x58, 0xa6, 0xe3, 0x07, 0x58, 0xd3, 0x34, 0xe0, 0x83, 0x38, 0x76, 0xce, 0x30,
0x66, 0x16, 0x05, 0xfe, 0xa4, 0x23, 0xec, 0x66, 0xbb, 0x5e, 0xe0, 0xf8, 0x26, 0x08, 0x1c, 0xb9,
0x41, 0x9f, 0xef, 0xbc, 0x8c, 0xc2, 0x98, 0xb3, 0xf8, 0x01, 0xe7, 0xb1, 0x59, 0x14, 0xc6, 0x1c,
0x82, 0x91, 0x16, 0x94, 0xb6, 0x9c, 0xf6, 0x33, 0xb6, 0x7f, 0x82, 0xc0, 0xc4, 0x2c, 0x09, 0xb5,
0xb3, 0x2a, 0x96, 0x40, 0x7f, 0x1c, 0xe9, 0x93, 0x88, 0xce, 0x81, 0xb4, 0xa1, 0x9c, 0xaa, 0x2e,
0xf3, 0xd0, 0x5c, 0x11, 0x3c, 0xef, 0x5d, 0xd4, 0x94, 0x92, 0x5a, 0x8a, 0x18, 0x61, 0x89, 0x8e,
0xdc, 0xc1, 0x94, 0x73, 0x38, 0x33, 0xcb, 0x42, 0xe7, 0xfe, 0xde, 0xba, 0x0f, 0x95, 0x51, 0x6f,
0x5c, 0x64, 0x00, 0xb0, 0x7e, 0x0c, 0x97, 0x27, 0x5c, 0xe1, 0x3b, 0xd5, 0x84, 0x3f, 0x19, 0x70,
0x69, 0xcc, 0x6e, 0x58, 0x97, 0x45, 0x2e, 0x4a, 0x96, 0x62, 0x4d, 0x0e, 0x61, 0x01, 0xfd, 0x92,
0x88, 0xb2, 0x5f, 0x6c, 0x6e, 0x5c, 0xc4, 0x11, 0x75, 0x41, 0x29, 0x0d, 0x26, 0xb9, 0x58, 0x77,
0x00, 0x06, 0xc0, 0x0b, 0x8d, 0x41, 0x9f, 0xc1, 0x8a, 0xf2, 0x8a, 0x4a, 0x70, 0xd5, 0x8f, 0x8d,
0x41, 0x3f, 0x1e, 0xb4, 0x8c, 0xdc, 0x05, 0x5b, 0x86, 0xfd, 0x05, 0xac, 0x52, 0xe6, 0xb8, 0xbb,
0x9e, 0xcf, 0xce, 0xaf, 0x8c, 0x98, 0xad, 0x9e, 0xcf, 0x5a, 0xd8, 0xf3, 0xd3, 0x6c, 0x55, 0x7b,
0x72, 0x17, 0x16, 0xa8, 0x13, 0x74, 0x99, 0x12, 0xfd, 0x56, 0x86, 0x68, 0x21, 0x04, 0x71, 0xa9,
0x24, 0xb1, 0xef, 0x41, 0xa1, 0x0f, 0xc3, 0x5a, 0xf3, 0xb8, 0xd3, 0x49, 0x98, 0xac, 0x5b, 0x39,
0xaa, 0x76, 0x08, 0x3f, 0x60, 0x41, 0x57, 0x89, 0xce, 0x51, 0xb5, 0xb3, 0xd7, 0x70, 0x6c, 0x4d,
0x6f, 0xae, 0x4c, 0x43, 0x20, 0xbf, 0x8d, 0xcf, 0x03, 0x43, 0x24, 0x98, 0x58, 0xdb, 0x2e, 0xb6,
0x3a, 0xc7, 0xdd, 0xf6, 0xe2, 0xf3, 0x15, 0x34, 0x61, 0x69, 0xdb, 0x8b, 0x35, 0xfd, 0xd2, 0x2d,
0x59, 0xc3, 0x26, 0xd8, 0xf6, 0x7b, 0x2e, 0x6a, 0xcb, 0x59, 0x1c, 0xa8, 0x6a, 0x3f, 0x02, 0xb5,
0x3f, 0x92, 0x76, 0x14, 0x52, 0xd4, 0x65, 0x6e, 0xc1, 0x12, 0x0b, 0x78, 0xec, 0xb1, 0xb4, 0x53,
0x92, 0xba, 0x7c, 0xd1, 0xd5, 0xc5, 0x8b, 0x4e, 0x74, 0x64, 0x9a, 0xa2, 0xd8, 0x1b, 0xb0, 0x8a,
0x80, 0x6c, 0x47, 0x10, 0xc8, 0x6b, 0x97, 0x14, 0x6b, 0xfb, 0x2e, 0x54, 0x06, 0x84, 0x4a, 0xf4,
0x1a, 0xe4, 0x71, 0x8e, 0x53, 0x85, 0x78, 0x92, 0x5c, 0x71, 0x6e, 0xdf, 0x80, 0xd5, 0x34, 0x5b,
0xcf, 0x15, 0x6a, 0x13, 0xa8, 0x0c, 0x90, 0xd4, 0xb4, 0xb0, 0x02, 0xc5, 0x96, 0x17, 0xa4, 0xcd,
0xd4, 0x7e, 0x65, 0x40, 0xa9, 0x15, 0x06, 0x83, 0x26, 0xd4, 0x82, 0xd5, 0x34, 0x75, 0x1f, 0xb4,
0xf6, 0xb7, 0x9c, 0x28, 0xb5, 0x41, 0x75, 0x3c, 0x3e, 0xd4, 0x9b, 0xb8, 0x2e, 0x11, 0x37, 0xf3,
0xd8, 0xaf, 0xe8, 0x28, 0x39, 0xf9, 0x18, 0x96, 0x0e, 0x0e, 0x36, 0x05, 0xa7, 0xf9, 0x0b, 0x71,
0x4a, 0xc9, 0xc8, 0x7d, 0x58, 0x7a, 0x2a, 0x9e, 0xea, 0x89, 0xea, 0x29, 0x13, 0x62, 0x55, 0x5a,
0x48, 0xa2, 0x51, 0xd6, 0x0e, 0x63, 0x97, 0xa6, 0x44, 0xf6, 0x7f, 0x0c, 0x28, 0x3e, 0x75, 0x06,
0x83, 0xda, 0x60, 0x32, 0xfc, 0x0e, 0x8d, 0x56, 0x4d, 0x86, 0x57, 0x60, 0xc1, 0x67, 0x2f, 0x98,
0xaf, 0x62, 0x5c, 0x6e, 0x10, 0x9a, 0x3c, 0x0b, 0x63, 0x99, 0xd6, 0x25, 0x2a, 0x37, 0x98, 0x10,
0x2e, 0xe3, 0x8e, 0xe7, 0x9b, 0xf9, 0x6a, 0x0e, 0x9b, 0xb2, 0xdc, 0xa1, 0xe7, 0x7a, 0xb1, 0x2f,
0xba, 0x59, 0x81, 0xe2, 0x92, 0xd8, 0x90, 0xf7, 0x82, 0x4e, 0x28, 0x1a, 0x96, 0x2a, 0x8b, 0x47,
0x61, 0x2f, 0x6e, 0xb3, 0xfd, 0xa0, 0x13, 0x52, 0x71, 0x46, 0xae, 0xc3, 0x62, 0x8c, 0xf9, 0x97,
0x98, 0x4b, 0xc2, 0x28, 0x05, 0xc4, 0x92, 0x59, 0xaa, 0x0e, 0xec, 0x32, 0x94, 0xa4, 0xde, 0xca,
0xf9, 0xbf, 0x9d, 0x87, 0xcb, 0x8f, 0xd8, 0xe9, 0x56, 0xaa, 0x57, 0x6a, 0x90, 0x2a, 0x14, 0xfb,
0xb0, 0xfd, 0x6d, 0x15, 0x42, 0x3a, 0x08, 0x85, 0x1d, 0x86, 0xbd, 0x80, 0xa7, 0x3e, 0x14, 0xc2,
0x04, 0x84, 0xaa, 0x03, 0xf2, 0x36, 0x2c, 0x3d, 0x62, 0xfc, 0x34, 0x8c, 0x9f, 0x0b, 0xad, 0xcb,
0xcd, 0x22, 0xe2, 0x3c, 0x62, 0x1c, 0xe7, 0x2a, 0x9a, 0x9e, 0xe1, 0xb0, 0x16, 0xa5, 0xc3, 0x5a,
0x7e, 0xd2, 0xb0, 0x96, 0x9e, 0x92, 0x0d, 0x28, 0xb6, 0xc3, 0x20, 0xe1, 0xb1, 0xe3, 0x05, 0xe2,
0x8d, 0x81, 0xc8, 0xaf, 0x21, 0xb2, 0x74, 0xec, 0xd6, 0xe0, 0x90, 0xea, 0x98, 0x64, 0x1d, 0x80,
0xbd, 0xe4, 0xb1, 0xb3, 0x17, 0x26, 0x3c, 0x31, 0x17, 0xc5, 0x85, 0x01, 0xe9, 0x10, 0xb0, 0xdf,
0xa2, 0xda, 0xa9, 0xfd, 0x3a, 0x5c, 0x19, 0xb6, 0x88, 0x32, 0xd5, 0x3d, 0xf8, 0x1e, 0x65, 0x3e,
0x73, 0x12, 0x76, 0x71, 0x6b, 0xd9, 0x16, 0x98, 0xe3, 0xc4, 0x8a, 0xf1, 0xff, 0x72, 0x50, 0xdc,
0x79, 0xc9, 0xda, 0x87, 0x2c, 0x49, 0x9c, 0xae, 0x18, 0x19, 0x5b, 0x71, 0xd8, 0x66, 0x49, 0xd2,
0xe7, 0x35, 0x00, 0x90, 0x1f, 0x42, 0x7e, 0x3f, 0xf0, 0xb8, 0xea, 0x8f, 0x6b, 0x99, 0x13, 0xbb,
0xc7, 0x15, 0xcf, 0xbd, 0x39, 0x2a, 0xa8, 0xc8, 0x5d, 0xc8, 0x63, 0x75, 0x99, 0xa5, 0xc2, 0xbb,
0x1a, 0x2d, 0xd2, 0x90, 0x4d, 0xf1, 0xa9, 0xca, 0xfb, 0x9c, 0x29, 0x2f, 0xd5, 0xb2, 0x5b, 0x93,
0xf7, 0x39, 0x1b, 0x70, 0x50, 0x94, 0x64, 0x07, 0x96, 0x8e, 0xb8, 0x13, 0x73, 0xe6, 0x2a, 0xef,
0xdd, 0xcc, 0x9a, 0x60, 0x24, 0xe6, 0x80, 0x4b, 0x4a, 0x8b, 0x46, 0xd8, 0x79, 0xe9, 0x71, 0x95,
0x0d, 0x59, 0x46, 0x40, 0x34, 0x4d, 0x11, 0xdc, 0x22, 0xf5, 0x76, 0x18, 0x30, 0x73, 0x69, 0x2a,
0x35, 0xa2, 0x69, 0xd4, 0xb8, 0x45, 0x33, 0x1c, 0x79, 0x5d, 0x1c, 0x0c, 0x97, 0xa7, 0x9a, 0x41,
0x22, 0x6a, 0x66, 0x90, 0x80, 0xcd, 0x25, 0x58, 0x10, 0x63, 0x90, 0xfd, 0x7b, 0x03, 0x8a, 0x9a,
0x9f, 0x66, 0xc8, 0xbb, 0x37, 0x20, 0x7f, 0xc8, 0xb8, 0xa3, 0xfc, 0xbf, 0x2c, 0xb2, 0x8e, 0x71,
0x87, 0x0a, 0x28, 0x16, 0x8e, 0x5d, 0x57, 0x16, 0xc5, 0x15, 0x8a, 0x4b, 0x84, 0x3c, 0xe1, 0x67,
0xc2, 0x65, 0xcb, 0x14, 0x97, 0xe4, 0x16, 0x2c, 0x1f, 0xb1, 0x76, 0x2f, 0xf6, 0xf8, 0x99, 0x70,
0x42, 0xb9, 0x59, 0x11, 0xe5, 0x44, 0xc1, 0x44, 0x72, 0xf6, 0x31, 0xec, 0x87, 0x18, 0x9c, 0x83,
0x0b, 0x12, 0xc8, 0x6f, 0xe1, 0x43, 0x09, 0x6f, 0xb6, 0x42, 0xc5, 0x1a, 0xdf, 0xaa, 0x3b, 0xd3,
0xde, 0xaa, 0x3b, 0xe9, 0x5b, 0x75, 0xd8, 0xa9, 0xd8, 0x7d, 0x34, 0x23, 0xdb, 0x0f, 0xa0, 0xd0,
0x0f, 0x3c, 0x52, 0x86, 0xf9, 0x5d, 0x57, 0x49, 0x9a, 0xdf, 0x15, 0x5f, 0x2f, 0x76, 0x1e, 0xef,
0x0a, 0x29, 0xcb, 0x14, 0x97, 0xfd, 0x21, 0x21, 0xa7, 0x0d, 0x09, 0x1b, 0xf8, 0x0a, 0xd7, 0xa2,
0x0f, 0x91, 0x68, 0x78, 0x9a, 0xa4, 0x57, 0xc6, 0xb5, 0x54, 0xc3, 0x4f, 0x04, 0x2f, 0xa1, 0x86,
0x9f, 0xd8, 0x37, 0x60, 0x65, 0xc8, 0x5f, 0x88, 0x24, 0x9e, 0x7d, 0x6a, 0x96, 0xc4, 0xf5, 0x3a,
0x83, 0xd5, 0x91, 0x4f, 0x2b, 0xe4, 0x6d, 0x58, 0x94, 0x5f, 0x1c, 0x2a, 0x73, 0xd6, 0xd5, 0x2f,
0xbf, 0xaa, 0xbe, 0x36, 0x82, 0x20, 0x0f, 0x11, 0x6d, 0xb3, 0x17, 0xb8, 0x3e, 0xab, 0x18, 0x13,
0xd1, 0xe4, 0xa1, 0x95, 0xff, 0xcd, 0x1f, 0xaf, 0xcd, 0xad, 0x3b, 0x70, 0x69, 0xec, 0x2b, 0x06,
0xb9, 0x01, 0xf9, 0x23, 0xe6, 0x77, 0x52, 0x31, 0x63, 0x08, 0x78, 0x48, 0xae, 0x43, 0x8e, 0x3a,
0xa7, 0x15, 0xc3, 0x32, 0xbf, 0xfc, 0xaa, 0x7a, 0x65, 0xfc, 0x53, 0x88, 0x73, 0x2a, 0x45, 0x34,
0xff, 0x0a, 0x50, 0x38, 0x38, 0xd8, 0xdc, 0x8c, 0x3d, 0xb7, 0xcb, 0xc8, 0xaf, 0x0d, 0x20, 0xe3,
0x2f, 0x51, 0xf2, 0x41, 0x76, 0x8e, 0x4f, 0x7e, 0x90, 0x5b, 0x1f, 0x5e, 0x90, 0x4a, 0x4d, 0x1a,
0x9f, 0xc2, 0x82, 0x18, 0x8f, 0xc9, 0x3b, 0x33, 0x3e, 0x6b, 0xac, 0xda, 0x74, 0x44, 0xc5, 0xbb,
0x0d, 0xcb, 0xe9, 0x88, 0x49, 0xd6, 0x33, 0xaf, 0x37, 0x34, 0x41, 0x5b, 0xef, 0xce, 0x84, 0xab,
0x84, 0xfc, 0x1c, 0x96, 0xd4, 0xe4, 0x48, 0x6e, 0x4e, 0xa1, 0x1b, 0xcc, 0xb0, 0xd6, 0xfa, 0x2c,
0xa8, 0x03, 0x35, 0xd2, 0x09, 0x31, 0x53, 0x8d, 0x91, 0xf9, 0x33, 0x53, 0x8d, 0xb1, 0x91, 0xb3,
0x3d, 0x78, 0x08, 0x66, 0x0a, 0x19, 0x99, 0x37, 0x33, 0x85, 0x8c, 0x8e, 0x9d, 0xe4, 0x29, 0xe4,
0x71, 0xec, 0x24, 0x59, 0xe5, 0x57, 0x9b, 0x4b, 0xad, 0xac, 0x98, 0x18, 0x9a, 0x57, 0x7f, 0x86,
0x6d, 0x4a, 0xbc, 0xf9, 0xb3, 0x1b, 0x94, 0xf6, 0xa1, 0xce, 0xba, 0x39, 0x03, 0xe6, 0x80, 0xbd,
0x7a, 0x2f, 0xd7, 0x66, 0xf8, 0x5a, 0x36, 0x9d, 0xfd, 0xc8, 0x77, 0xb9, 0x10, 0x4a, 0xfa, 0xf4,
0x41, 0xea, 0x19, 0xa4, 0x13, 0x06, 0x37, 0xab, 0x31, 0x33, 0xbe, 0x12, 0xf8, 0x05, 0xbe, 0xbd,
0x86, 0x27, 0x13, 0xd2, 0xcc, 0x34, 0xc7, 0xc4, 0x19, 0xc8, 0xba, 0x7d, 0x21, 0x1a, 0x25, 0xdc,
0x91, 0x93, 0x8f, 0x9a, 0x6e, 0x48, 0x76, 0x23, 0xef, 0x4f, 0x48, 0xd6, 0x8c, 0x78, 0x35, 0xe3,
0x7d, 0x03, 0xe3, 0x0c, 0x27, 0xde, 0x4c, 0xde, 0xda, 0x53, 0x20, 0x33, 0xce, 0xf4, 0xd1, 0x79,
0xb3, 0xf4, 0xf5, 0xab, 0x6b, 0xc6, 0x3f, 0x5e, 0x5d, 0x33, 0xfe, 0xfd, 0xea, 0x9a, 0x71, 0xbc,
0x28, 0xfe, 0xcf, 0xbb, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x22, 0xd0, 0xf5, 0x61, 0x21,
0x1d, 0x00, 0x00,
// 2395 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x39, 0xcd, 0x6f, 0x1b, 0xc7,
0xf5, 0x5a, 0x91, 0x12, 0xc9, 0xc7, 0x0f, 0xd1, 0x13, 0x27, 0x3f, 0x66, 0x11, 0x38, 0xf2, 0x3a,
0x51, 0x64, 0xc5, 0x21, 0xfd, 0xa3, 0x1d, 0xc8, 0xb5, 0x5b, 0x27, 0xd6, 0x17, 0xa4, 0x58, 0xb2,
0xd9, 0x91, 0x0b, 0x17, 0x41, 0x0a, 0x74, 0xc5, 0x1d, 0xd2, 0x5b, 0xaf, 0x76, 0xb7, 0xbb, 0x43,
0xcb, 0x4a, 0x2e, 0xed, 0xad, 0xc8, 0xa9, 0xa7, 0xde, 0x82, 0x02, 0x2d, 0xd0, 0x73, 0x7b, 0xe9,
0xad, 0x3d, 0x07, 0xe8, 0xa5, 0x97, 0x5e, 0x7a, 0x08, 0x0a, 0xff, 0x11, 0x05, 0x7a, 0x2b, 0xde,
0xcc, 0x2c, 0x39, 0xfc, 0xd0, 0x92, 0xac, 0x4f, 0x9c, 0x79, 0xf3, 0x3e, 0xe6, 0x7d, 0xbf, 0x59,
0x42, 0xb9, 0x6b, 0x73, 0x76, 0x66, 0x9f, 0xd7, 0xc3, 0x28, 0xe0, 0x01, 0x79, 0xfb, 0x34, 0x38,
0x39, 0xaf, 0x9f, 0xf4, 0x5c, 0xcf, 0x79, 0xee, 0xf2, 0xfa, 0x8b, 0xff, 0xaf, 0x77, 0xa2, 0xc0,
0xe7, 0xcc, 0x77, 0xcc, 0x8f, 0xba, 0x2e, 0x7f, 0xd6, 0x3b, 0xa9, 0xb7, 0x83, 0xd3, 0x46, 0x37,
0xe8, 0x06, 0x0d, 0x41, 0x71, 0xd2, 0xeb, 0x88, 0x9d, 0xd8, 0x88, 0x95, 0xe4, 0x64, 0x36, 0x47,
0xd1, 0xbb, 0x41, 0xd0, 0xf5, 0x98, 0x1d, 0xba, 0xb1, 0x5a, 0x36, 0xa2, 0xb0, 0xdd, 0x88, 0xb9,
0xcd, 0x7b, 0xb1, 0xa2, 0xb9, 0xa1, 0xd1, 0xe0, 0x45, 0x1a, 0xc9, 0x45, 0x1a, 0x71, 0xe0, 0xbd,
0x60, 0x51, 0x23, 0x3c, 0x69, 0x04, 0x61, 0x82, 0xdd, 0xb8, 0x10, 0xdb, 0x0e, 0xdd, 0x06, 0x3f,
0x0f, 0x59, 0xdc, 0x38, 0x0b, 0xa2, 0xe7, 0x2c, 0x52, 0x04, 0xb7, 0x2e, 0x24, 0xe8, 0x71, 0xd7,
0x43, 0xaa, 0xb6, 0x1d, 0xc6, 0x28, 0x04, 0x7f, 0x15, 0x91, 0xae, 0x36, 0x0f, 0x7c, 0x37, 0xe6,
0xae, 0xdb, 0x75, 0x1b, 0x9d, 0x58, 0xd0, 0x48, 0x29, 0xa8, 0x84, 0x44, 0xb7, 0xfe, 0x96, 0x85,
0x65, 0xca, 0xe2, 0x9e, 0xc7, 0xc9, 0x1a, 0x94, 0x23, 0xd6, 0xd9, 0x61, 0x61, 0xc4, 0xda, 0x36,
0x67, 0x4e, 0xcd, 0x58, 0x35, 0xd6, 0x0b, 0xfb, 0x0b, 0x74, 0x18, 0x4c, 0x7e, 0x04, 0x95, 0x88,
0x75, 0x62, 0x0d, 0x71, 0x71, 0xd5, 0x58, 0x2f, 0x36, 0x3f, 0xac, 0x5f, 0xe8, 0x8c, 0x3a, 0x65,
0x9d, 0x23, 0x3b, 0x1c, 0x90, 0xec, 0x2f, 0xd0, 0x11, 0x26, 0xa4, 0x09, 0x99, 0x88, 0x75, 0x6a,
0x19, 0xc1, 0xeb, 0x4a, 0x3a, 0xaf, 0xfd, 0x05, 0x8a, 0xc8, 0x64, 0x13, 0xb2, 0xc8, 0xa5, 0x96,
0x15, 0x44, 0x57, 0xa7, 0x5e, 0x60, 0x7f, 0x81, 0x0a, 0x02, 0xf2, 0x10, 0xf2, 0xa7, 0x8c, 0xdb,
0x8e, 0xcd, 0xed, 0x1a, 0xac, 0x66, 0xd6, 0x8b, 0xcd, 0x46, 0x2a, 0x31, 0x1a, 0xa8, 0x7e, 0xa4,
0x28, 0x76, 0x7d, 0x1e, 0x9d, 0xd3, 0x3e, 0x03, 0xf2, 0x14, 0x4a, 0x36, 0xe7, 0x0c, 0xad, 0xea,
0x06, 0x7e, 0x5c, 0x2b, 0x0a, 0x86, 0xb7, 0xa6, 0x33, 0x7c, 0xa0, 0x51, 0x49, 0xa6, 0x43, 0x8c,
0xcc, 0x7b, 0x50, 0x1e, 0x92, 0x49, 0xaa, 0x90, 0x79, 0xce, 0xce, 0xa5, 0x63, 0x28, 0x2e, 0xc9,
0x65, 0x58, 0x7a, 0x61, 0x7b, 0x3d, 0x26, 0x7c, 0x50, 0xa2, 0x72, 0x73, 0x77, 0xf1, 0x8e, 0x61,
0x3e, 0x83, 0x4b, 0x63, 0xfc, 0x27, 0x30, 0xf8, 0x81, 0xce, 0xa0, 0xd8, 0xfc, 0x20, 0xe5, 0xd6,
0x3a, 0x3b, 0x4d, 0xd2, 0x56, 0x1e, 0x96, 0x23, 0xa1, 0x90, 0xf5, 0x1b, 0x03, 0xaa, 0xa3, 0xae,
0x26, 0x07, 0xca, 0x49, 0x86, 0x30, 0xcb, 0xc7, 0x73, 0x44, 0x09, 0x02, 0x94, 0x61, 0x04, 0x0b,
0x73, 0x13, 0x0a, 0x7d, 0xd0, 0x34, 0x63, 0x14, 0xb4, 0x2b, 0x5a, 0x9b, 0x90, 0xa1, 0xac, 0x43,
0x2a, 0xb0, 0xe8, 0xaa, 0xb8, 0xa6, 0x8b, 0xae, 0x43, 0x56, 0x21, 0xe3, 0xb0, 0x8e, 0x52, 0xbd,
0x52, 0x0f, 0x4f, 0xea, 0x3b, 0xac, 0xe3, 0xfa, 0x2e, 0xaa, 0x48, 0xf1, 0xc8, 0xfa, 0x9d, 0x81,
0xf9, 0x81, 0xd7, 0x22, 0x9f, 0x0c, 0xe9, 0x31, 0x3d, 0xda, 0xc7, 0x6e, 0xff, 0x34, 0xfd, 0xf6,
0xb7, 0x87, 0x3d, 0x31, 0x25, 0x05, 0x74, 0xed, 0x7e, 0x0c, 0x25, 0xdd, 0x37, 0x64, 0x1f, 0x8a,
0x5a, 0x1c, 0xa9, 0x0b, 0xaf, 0xcd, 0xe6, 0x59, 0xaa, 0x93, 0x5a, 0x7f, 0xc8, 0x40, 0x51, 0x3b,
0x24, 0xf7, 0x21, 0xfb, 0xdc, 0xf5, 0xa5, 0x09, 0x2b, 0xcd, 0x8d, 0xd9, 0x58, 0x3e, 0x74, 0x7d,
0x87, 0x0a, 0x3a, 0xd2, 0xd2, 0xf2, 0x6e, 0x51, 0x5c, 0xeb, 0xf6, 0x6c, 0x3c, 0x2e, 0x4c, 0xbe,
0x9b, 0x73, 0x94, 0x0d, 0x59, 0x34, 0x08, 0x64, 0x43, 0x9b, 0x3f, 0x13, 0x45, 0xa3, 0x40, 0xc5,
0x9a, 0xdc, 0x84, 0x37, 0x5c, 0xff, 0x49, 0xc0, 0x83, 0x56, 0xc4, 0x1c, 0x17, 0x83, 0xef, 0xc9,
0x79, 0xc8, 0x6a, 0x4b, 0x02, 0x65, 0xd2, 0x11, 0x69, 0x41, 0x45, 0x82, 0x8f, 0x7b, 0x27, 0x3f,
0x63, 0x6d, 0x1e, 0xd7, 0x96, 0x85, 0x3e, 0xeb, 0x29, 0x57, 0x38, 0xd0, 0x09, 0xe8, 0x08, 0xfd,
0x6b, 0x65, 0xbb, 0xf5, 0x27, 0x03, 0xca, 0x43, 0xec, 0xc9, 0xa7, 0x43, 0xae, 0xba, 0x31, 0xeb,
0xb5, 0x34, 0x67, 0x7d, 0x06, 0xcb, 0x8e, 0xdb, 0x65, 0x31, 0x17, 0xae, 0x2a, 0x6c, 0x35, 0xbf,
0xfd, 0xee, 0xdd, 0x85, 0x7f, 0x7e, 0xf7, 0xee, 0x86, 0xd6, 0x62, 0x82, 0x90, 0xf9, 0xed, 0xc0,
0xe7, 0xb6, 0xeb, 0xb3, 0x08, 0x3b, 0xe5, 0x47, 0x92, 0xa4, 0xbe, 0x23, 0x7e, 0xa8, 0xe2, 0x80,
0x46, 0xf7, 0xed, 0x53, 0x26, 0xfc, 0x54, 0xa0, 0x62, 0x6d, 0x71, 0x28, 0x53, 0xc6, 0x7b, 0x91,
0x4f, 0xd9, 0xcf, 0x7b, 0x88, 0xf4, 0xbd, 0xa4, 0x90, 0x88, 0x4b, 0x4f, 0x2b, 0xe8, 0x88, 0x48,
0x15, 0x01, 0x59, 0x87, 0x25, 0x16, 0x45, 0x41, 0xa4, 0x92, 0x87, 0xd4, 0x65, 0xcf, 0xae, 0x47,
0x61, 0xbb, 0x7e, 0x2c, 0x7a, 0x36, 0x95, 0x08, 0x56, 0x15, 0x2a, 0x89, 0xd4, 0x38, 0x0c, 0xfc,
0x98, 0x59, 0x2b, 0x68, 0xba, 0xb0, 0xc7, 0x63, 0x75, 0x0f, 0xeb, 0xaf, 0x06, 0x54, 0x12, 0x88,
0xc4, 0x21, 0x5f, 0x40, 0x71, 0x50, 0x1a, 0x92, 0x1a, 0x70, 0x37, 0xd5, 0xa8, 0x3a, 0xbd, 0x56,
0x57, 0x54, 0x49, 0xd0, 0xd9, 0x99, 0x8f, 0xa0, 0x3a, 0x8a, 0x30, 0xc1, 0xfb, 0xef, 0x0d, 0x17,
0x88, 0xd1, 0x7a, 0xa5, 0x45, 0xc3, 0x3f, 0x0c, 0x78, 0x9b, 0x32, 0x31, 0x84, 0x1c, 0x9c, 0xda,
0x5d, 0xb6, 0x1d, 0xf8, 0x1d, 0xb7, 0x9b, 0x98, 0xb9, 0x2a, 0x8a, 0x61, 0xc2, 0x19, 0xeb, 0xe2,
0x3a, 0xe4, 0x5b, 0x9e, 0xcd, 0x3b, 0x41, 0x74, 0xaa, 0x98, 0x97, 0x90, 0x79, 0x02, 0xa3, 0xfd,
0x53, 0xb2, 0x0a, 0x45, 0xc5, 0xf8, 0x28, 0x70, 0x12, 0x77, 0xea, 0x20, 0x52, 0x83, 0xdc, 0x61,
0xd0, 0x7d, 0x84, 0xce, 0x96, 0x19, 0x96, 0x6c, 0x89, 0x05, 0x25, 0x85, 0x18, 0xf5, 0xb3, 0x6b,
0x89, 0x0e, 0xc1, 0xc8, 0x3b, 0x50, 0x38, 0x66, 0x71, 0xec, 0x06, 0xfe, 0xc1, 0x4e, 0x6d, 0x59,
0xd0, 0x0f, 0x00, 0xd6, 0x2f, 0x0c, 0x30, 0x27, 0xe9, 0xa5, 0x9c, 0xf4, 0x19, 0x2c, 0xcb, 0xb0,
0x93, 0xba, 0xfd, 0x6f, 0x01, 0x2b, 0x7f, 0xc9, 0x5b, 0xb0, 0x2c, 0xb9, 0xab, 0x5c, 0x53, 0x3b,
0xeb, 0xcf, 0x4b, 0x50, 0x3a, 0xc6, 0x0b, 0x24, 0xd6, 0xac, 0x03, 0x0c, 0x9c, 0xa0, 0x02, 0x77,
0xd4, 0x35, 0x1a, 0x06, 0x31, 0x21, 0xbf, 0xa7, 0x82, 0x44, 0xf5, 0xa9, 0xfe, 0x9e, 0x7c, 0x0e,
0xc5, 0x64, 0xfd, 0x38, 0xe4, 0xb5, 0x8c, 0x88, 0xb2, 0x3b, 0x29, 0x51, 0xa6, 0xdf, 0xa4, 0xae,
0x91, 0xaa, 0x18, 0xd3, 0x20, 0xe4, 0x06, 0x5c, 0xb2, 0x3d, 0x2f, 0x38, 0x53, 0x89, 0x23, 0x52,
0x40, 0xb8, 0x20, 0x4f, 0xc7, 0x0f, 0xb0, 0x20, 0x6a, 0xc0, 0x07, 0x51, 0x64, 0x9f, 0x63, 0xcc,
0x2c, 0x0b, 0xfc, 0x49, 0x47, 0x58, 0x9b, 0xf6, 0x5c, 0xdf, 0xf6, 0x6a, 0x20, 0x70, 0xe4, 0x06,
0x7d, 0xbe, 0xfb, 0x32, 0x0c, 0x22, 0xce, 0xa2, 0x07, 0x9c, 0x47, 0xb5, 0xa2, 0x30, 0xe6, 0x10,
0x8c, 0xb4, 0xa0, 0xb4, 0x6d, 0xb7, 0x9f, 0xb1, 0x83, 0x53, 0x04, 0xc6, 0xb5, 0x92, 0x50, 0x3b,
0xad, 0x62, 0x09, 0xf4, 0xc7, 0xa1, 0x3e, 0x38, 0xe9, 0x1c, 0x48, 0x1b, 0x2a, 0x89, 0xea, 0x32,
0x0f, 0x6b, 0x65, 0xc1, 0xf3, 0xde, 0xbc, 0xa6, 0x94, 0xd4, 0x52, 0xc4, 0x08, 0x4b, 0x74, 0xe4,
0x2e, 0xa6, 0x9c, 0xcd, 0x59, 0xad, 0x22, 0x74, 0xee, 0xef, 0xcd, 0xfb, 0x50, 0x1d, 0xf5, 0xc6,
0x3c, 0xf3, 0x8a, 0xf9, 0x43, 0x78, 0x63, 0xc2, 0x15, 0x5e, 0xab, 0x26, 0xfc, 0xd1, 0x80, 0x4b,
0x63, 0x76, 0xc3, 0xba, 0x2c, 0x72, 0x51, 0xb2, 0x14, 0x6b, 0x72, 0x04, 0x4b, 0xe8, 0x97, 0x58,
0x75, 0xe8, 0xcd, 0x79, 0x1c, 0x51, 0x17, 0x94, 0xd2, 0x60, 0x92, 0x8b, 0x79, 0x07, 0x60, 0x00,
0x9c, 0x6b, 0x6a, 0xfb, 0x02, 0xca, 0xca, 0x2b, 0x2a, 0xc1, 0xab, 0xb2, 0xd9, 0x2b, 0x62, 0x6c,
0xe6, 0x83, 0x96, 0x91, 0x99, 0xb3, 0x65, 0x58, 0x5f, 0xc1, 0x0a, 0x65, 0xb6, 0xb3, 0xe7, 0x7a,
0xec, 0xe2, 0xca, 0x88, 0xd9, 0xea, 0x7a, 0xac, 0x85, 0x03, 0x43, 0x92, 0xad, 0x6a, 0x4f, 0xee,
0xc2, 0x12, 0xb5, 0xfd, 0x2e, 0x53, 0xa2, 0xdf, 0x4b, 0x11, 0x2d, 0x84, 0x20, 0x2e, 0x95, 0x24,
0xd6, 0x3d, 0x28, 0xf4, 0x61, 0x58, 0x6b, 0x1e, 0x77, 0x3a, 0x31, 0x93, 0x75, 0x2b, 0x43, 0xd5,
0x0e, 0xe1, 0x87, 0xcc, 0xef, 0x2a, 0xd1, 0x19, 0xaa, 0x76, 0xd6, 0x1a, 0x4e, 0xd9, 0xc9, 0xcd,
0x95, 0x69, 0x08, 0x64, 0x77, 0x70, 0xaa, 0x32, 0x44, 0x82, 0x89, 0xb5, 0xe5, 0x60, 0xab, 0xb3,
0x9d, 0x1d, 0x37, 0xba, 0x58, 0xc1, 0x1a, 0xe4, 0x76, 0xdc, 0x48, 0xd3, 0x2f, 0xd9, 0x92, 0x35,
0x6c, 0x82, 0x6d, 0xaf, 0xe7, 0xa0, 0xb6, 0x9c, 0x45, 0xbe, 0xaa, 0xf6, 0x23, 0x50, 0xeb, 0x13,
0x69, 0x47, 0x21, 0x45, 0x5d, 0xe6, 0x06, 0xe4, 0x98, 0xcf, 0x23, 0x97, 0x25, 0x9d, 0x92, 0xd4,
0xe5, 0x03, 0xb4, 0x2e, 0x1e, 0xa0, 0xa2, 0x23, 0xd3, 0x04, 0xc5, 0xda, 0x84, 0x15, 0x04, 0xa4,
0x3b, 0x82, 0x40, 0x56, 0xbb, 0xa4, 0x58, 0x5b, 0x77, 0xa1, 0x3a, 0x20, 0x54, 0xa2, 0xd7, 0x20,
0x8b, 0x23, 0xa3, 0x2a, 0xc4, 0x93, 0xe4, 0x8a, 0x73, 0xeb, 0x1a, 0xac, 0x24, 0xd9, 0x7a, 0xa1,
0x50, 0x8b, 0x40, 0x75, 0x80, 0xa4, 0xa6, 0x85, 0x32, 0x14, 0x5b, 0xae, 0x9f, 0x34, 0x53, 0xeb,
0x95, 0x01, 0xa5, 0x56, 0xe0, 0x0f, 0x9a, 0x50, 0x0b, 0x56, 0x92, 0xd4, 0x7d, 0xd0, 0x3a, 0xd8,
0xb6, 0xc3, 0xc4, 0x06, 0xab, 0xe3, 0xf1, 0xa1, 0x9e, 0xf0, 0x75, 0x89, 0xb8, 0x95, 0xc5, 0x7e,
0x45, 0x47, 0xc9, 0xc9, 0xa7, 0x90, 0x3b, 0x3c, 0xdc, 0x12, 0x9c, 0x16, 0xe7, 0xe2, 0x94, 0x90,
0x91, 0xfb, 0x90, 0x7b, 0x2a, 0xbe, 0x2c, 0xc4, 0xaa, 0xa7, 0x4c, 0x88, 0x55, 0x69, 0x21, 0x89,
0x46, 0x59, 0x3b, 0x88, 0x1c, 0x9a, 0x10, 0x59, 0xff, 0x36, 0xa0, 0xf8, 0xd4, 0x1e, 0x0c, 0x6a,
0x83, 0xc9, 0xf0, 0x35, 0x1a, 0xad, 0x9a, 0x0c, 0x2f, 0xc3, 0x92, 0xc7, 0x5e, 0x30, 0x4f, 0xc5,
0xb8, 0xdc, 0x20, 0x34, 0x7e, 0x16, 0x44, 0x32, 0xad, 0x4b, 0x54, 0x6e, 0x30, 0x21, 0x1c, 0xc6,
0x6d, 0xd7, 0xab, 0x65, 0x57, 0x33, 0xd8, 0x94, 0xe5, 0x0e, 0x3d, 0xd7, 0x8b, 0x3c, 0x35, 0xae,
0xe3, 0x92, 0x58, 0x90, 0x75, 0xfd, 0x4e, 0x20, 0x1a, 0x96, 0x2a, 0x8b, 0xc7, 0x41, 0x2f, 0x6a,
0xb3, 0x03, 0xbf, 0x13, 0x50, 0x71, 0x46, 0xae, 0xc2, 0x72, 0x84, 0xf9, 0x17, 0xd7, 0x72, 0xc2,
0x28, 0x05, 0xc4, 0x92, 0x59, 0xaa, 0x0e, 0xac, 0x0a, 0x94, 0xa4, 0xde, 0xca, 0xf9, 0xbf, 0x5e,
0x84, 0x37, 0x1e, 0xb1, 0xb3, 0xed, 0x44, 0xaf, 0xc4, 0x20, 0xab, 0x50, 0xec, 0xc3, 0x0e, 0x76,
0x54, 0x08, 0xe9, 0x20, 0x14, 0x76, 0x14, 0xf4, 0x7c, 0x9e, 0xf8, 0x50, 0x08, 0x13, 0x10, 0xaa,
0x0e, 0xc8, 0xfb, 0x90, 0x7b, 0xc4, 0xf8, 0x59, 0x10, 0x3d, 0x17, 0x5a, 0x57, 0x9a, 0x45, 0xc4,
0x79, 0xc4, 0x38, 0xce, 0x55, 0x34, 0x39, 0xc3, 0x61, 0x2d, 0x4c, 0x86, 0xb5, 0xec, 0xa4, 0x61,
0x2d, 0x39, 0x25, 0x9b, 0x50, 0x6c, 0x07, 0x7e, 0xcc, 0x23, 0xdb, 0x45, 0xc1, 0x4b, 0x02, 0xf9,
0x4d, 0x44, 0x96, 0x8e, 0xdd, 0x1e, 0x1c, 0x52, 0x1d, 0x93, 0x6c, 0x00, 0xb0, 0x97, 0x3c, 0xb2,
0xf7, 0x83, 0xb8, 0xff, 0xb0, 0x01, 0xa4, 0x43, 0xc0, 0x41, 0x8b, 0x6a, 0xa7, 0xd6, 0x5b, 0x70,
0x79, 0xd8, 0x22, 0xca, 0x54, 0xf7, 0xe0, 0xff, 0x28, 0xf3, 0x98, 0x1d, 0xb3, 0xf9, 0xad, 0x65,
0x99, 0x50, 0x1b, 0x27, 0x56, 0x8c, 0xff, 0x93, 0x81, 0xe2, 0xee, 0x4b, 0xd6, 0x3e, 0x62, 0x71,
0x6c, 0x77, 0xc5, 0xc8, 0xd8, 0x8a, 0x82, 0x36, 0x8b, 0xe3, 0x3e, 0xaf, 0x01, 0x80, 0x7c, 0x1f,
0xb2, 0x07, 0xbe, 0xcb, 0x55, 0x7f, 0x5c, 0x4b, 0x9d, 0xd8, 0x5d, 0xae, 0x78, 0xee, 0x2f, 0x50,
0x41, 0x45, 0xee, 0x42, 0x16, 0xab, 0xcb, 0x2c, 0x15, 0xde, 0xd1, 0x68, 0x91, 0x86, 0x6c, 0x89,
0x2f, 0x6b, 0xee, 0x97, 0x4c, 0x79, 0x69, 0x3d, 0xbd, 0x35, 0xb9, 0x5f, 0xb2, 0x01, 0x07, 0x45,
0x49, 0x76, 0x21, 0x77, 0xcc, 0xed, 0x88, 0x33, 0x47, 0x79, 0xef, 0x7a, 0xda, 0x04, 0x23, 0x31,
0x07, 0x5c, 0x12, 0x5a, 0x34, 0xc2, 0xee, 0x4b, 0x97, 0xab, 0x6c, 0x48, 0x33, 0x02, 0xa2, 0x69,
0x8a, 0xe0, 0x16, 0xa9, 0x77, 0x02, 0x9f, 0xd5, 0x72, 0x53, 0xa9, 0x11, 0x4d, 0xa3, 0xc6, 0x2d,
0x9a, 0xe1, 0xd8, 0xed, 0xe2, 0x60, 0x98, 0x9f, 0x6a, 0x06, 0x89, 0xa8, 0x99, 0x41, 0x02, 0xb6,
0x72, 0xb0, 0x24, 0xc6, 0x20, 0xeb, 0xb7, 0x06, 0x14, 0x35, 0x3f, 0xcd, 0x90, 0x77, 0xef, 0x40,
0x16, 0x5f, 0xd5, 0xca, 0xff, 0x79, 0x91, 0x75, 0x8c, 0xdb, 0x54, 0x40, 0xb1, 0x70, 0xec, 0x39,
0xb2, 0x28, 0x96, 0x29, 0x2e, 0x11, 0xf2, 0x84, 0x9f, 0x0b, 0x97, 0xe5, 0x29, 0x2e, 0xc9, 0x0d,
0xc8, 0x1f, 0xb3, 0x76, 0x2f, 0x72, 0xf9, 0xb9, 0x70, 0x42, 0xa5, 0x59, 0x15, 0xe5, 0x44, 0xc1,
0x44, 0x72, 0xf6, 0x31, 0xac, 0x87, 0x18, 0x9c, 0x83, 0x0b, 0x12, 0xc8, 0x6e, 0xe3, 0x43, 0x09,
0x6f, 0x56, 0xa6, 0x62, 0x8d, 0x6f, 0xd5, 0xdd, 0x69, 0x6f, 0xd5, 0xdd, 0xe4, 0xad, 0x3a, 0xec,
0x54, 0xec, 0x3e, 0x9a, 0x91, 0xad, 0x07, 0x50, 0xe8, 0x07, 0x1e, 0xa9, 0xc0, 0xe2, 0x9e, 0xa3,
0x24, 0x2d, 0xee, 0x39, 0xa8, 0xca, 0xee, 0xe3, 0x3d, 0x21, 0x25, 0x4f, 0x71, 0xd9, 0x1f, 0x12,
0x32, 0xda, 0x90, 0xb0, 0x89, 0xaf, 0x70, 0x2d, 0xfa, 0x10, 0x89, 0x06, 0x67, 0x71, 0x72, 0x65,
0x5c, 0x4b, 0x35, 0xbc, 0x58, 0xf0, 0x12, 0x6a, 0x78, 0xb1, 0x75, 0x0d, 0xca, 0x43, 0xfe, 0x42,
0x24, 0xf1, 0xec, 0x53, 0xb3, 0x24, 0xae, 0x37, 0x18, 0xac, 0x8c, 0x7c, 0x09, 0x22, 0xef, 0xc3,
0xb2, 0xfc, 0xe2, 0x50, 0x5d, 0x30, 0xdf, 0xfe, 0xfa, 0x9b, 0xd5, 0x37, 0x47, 0x10, 0xe4, 0x21,
0xa2, 0x6d, 0xf5, 0x7c, 0xc7, 0x63, 0x55, 0x63, 0x22, 0x9a, 0x3c, 0x34, 0xb3, 0xbf, 0xfa, 0xfd,
0x95, 0x85, 0x0d, 0x1b, 0x2e, 0x8d, 0x7d, 0xc5, 0x20, 0xd7, 0x20, 0x7b, 0xcc, 0xbc, 0x4e, 0x22,
0x66, 0x0c, 0x01, 0x0f, 0xc9, 0x55, 0xc8, 0x50, 0xfb, 0xac, 0x6a, 0x98, 0xb5, 0xaf, 0xbf, 0x59,
0xbd, 0x3c, 0xfe, 0x29, 0xc4, 0x3e, 0x93, 0x22, 0x9a, 0x7f, 0x01, 0x28, 0x1c, 0x1e, 0x6e, 0x6d,
0x45, 0xae, 0xd3, 0x65, 0xe4, 0x97, 0x06, 0x90, 0xf1, 0x97, 0x28, 0xb9, 0x9d, 0x9e, 0xe3, 0x93,
0x1f, 0xe4, 0xe6, 0xc7, 0x73, 0x52, 0xa9, 0x49, 0xe3, 0x73, 0x58, 0x12, 0xe3, 0x31, 0xf9, 0x60,
0xc6, 0x67, 0x8d, 0xb9, 0x3e, 0x1d, 0x51, 0xf1, 0x6e, 0x43, 0x3e, 0x19, 0x31, 0xc9, 0x46, 0xea,
0xf5, 0x86, 0x26, 0x68, 0xf3, 0xc3, 0x99, 0x70, 0x95, 0x90, 0x9f, 0x42, 0x4e, 0x4d, 0x8e, 0xe4,
0xfa, 0x14, 0xba, 0xc1, 0x0c, 0x6b, 0x6e, 0xcc, 0x82, 0x3a, 0x50, 0x23, 0x99, 0x10, 0x53, 0xd5,
0x18, 0x99, 0x3f, 0x53, 0xd5, 0x18, 0x1b, 0x39, 0xdb, 0x83, 0x87, 0x60, 0xaa, 0x90, 0x91, 0x79,
0x33, 0x55, 0xc8, 0xe8, 0xd8, 0x49, 0x9e, 0x42, 0x16, 0xc7, 0x4e, 0x92, 0x56, 0x7e, 0xb5, 0xb9,
0xd4, 0x4c, 0x8b, 0x89, 0xa1, 0x79, 0xf5, 0x27, 0xd8, 0xa6, 0xc4, 0x9b, 0x3f, 0xbd, 0x41, 0x69,
0x1f, 0xea, 0xcc, 0xeb, 0x33, 0x60, 0x0e, 0xd8, 0xab, 0xf7, 0xf2, 0xfa, 0x0c, 0x5f, 0xcb, 0xa6,
0xb3, 0x1f, 0xf9, 0x2e, 0x17, 0x40, 0x49, 0x9f, 0x3e, 0x48, 0x3d, 0x85, 0x74, 0xc2, 0xe0, 0x66,
0x36, 0x66, 0xc6, 0x57, 0x02, 0xbf, 0xc2, 0xb7, 0xd7, 0xf0, 0x64, 0x42, 0x9a, 0xa9, 0xe6, 0x98,
0x38, 0x03, 0x99, 0xb7, 0xe6, 0xa2, 0x51, 0xc2, 0x6d, 0x39, 0xf9, 0xa8, 0xe9, 0x86, 0xa4, 0x37,
0xf2, 0xfe, 0x84, 0x64, 0xce, 0x88, 0xb7, 0x6e, 0xdc, 0x34, 0x30, 0xce, 0x70, 0xe2, 0x4d, 0xe5,
0xad, 0x3d, 0x05, 0x52, 0xe3, 0x4c, 0x1f, 0x9d, 0xb7, 0x4a, 0xdf, 0xbe, 0xba, 0x62, 0xfc, 0xfd,
0xd5, 0x15, 0xe3, 0x5f, 0xaf, 0xae, 0x18, 0x27, 0xcb, 0xe2, 0xef, 0xc7, 0x5b, 0xff, 0x0d, 0x00,
0x00, 0xff, 0xff, 0x76, 0x21, 0x31, 0x33, 0xd0, 0x1d, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3695,7 +3704,7 @@ func (m *Attestation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i = encodeVarintGateway(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2a
dAtA[i] = 0x32
}
}
if len(m.InTotoPredicateType) > 0 {
@ -3703,21 +3712,47 @@ func (m *Attestation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
copy(dAtA[i:], m.InTotoPredicateType)
i = encodeVarintGateway(dAtA, i, uint64(len(m.InTotoPredicateType)))
i--
dAtA[i] = 0x22
dAtA[i] = 0x2a
}
if len(m.Path) > 0 {
i -= len(m.Path)
copy(dAtA[i:], m.Path)
i = encodeVarintGateway(dAtA, i, uint64(len(m.Path)))
i--
dAtA[i] = 0x22
}
if m.Ref != nil {
{
size, err := m.Ref.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGateway(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x1a
}
if len(m.Ref) > 0 {
i -= len(m.Ref)
copy(dAtA[i:], m.Ref)
i = encodeVarintGateway(dAtA, i, uint64(len(m.Ref)))
i--
dAtA[i] = 0x12
if len(m.Metadata) > 0 {
for k := range m.Metadata {
v := m.Metadata[k]
baseI := i
if len(v) > 0 {
i -= len(v)
copy(dAtA[i:], v)
i = encodeVarintGateway(dAtA, i, uint64(len(v)))
i--
dAtA[i] = 0x12
}
i -= len(k)
copy(dAtA[i:], k)
i = encodeVarintGateway(dAtA, i, uint64(len(k)))
i--
dAtA[i] = 0xa
i = encodeVarintGateway(dAtA, i, uint64(baseI-i))
i--
dAtA[i] = 0x12
}
}
if m.Kind != 0 {
i = encodeVarintGateway(dAtA, i, uint64(m.Kind))
@ -5271,20 +5306,20 @@ func (m *InitMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0x20
}
if len(m.Fds) > 0 {
dAtA27 := make([]byte, len(m.Fds)*10)
var j26 int
dAtA28 := make([]byte, len(m.Fds)*10)
var j27 int
for _, num := range m.Fds {
for num >= 1<<7 {
dAtA27[j26] = uint8(uint64(num)&0x7f | 0x80)
dAtA28[j27] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j26++
j27++
}
dAtA27[j26] = uint8(num)
j26++
dAtA28[j27] = uint8(num)
j27++
}
i -= j26
copy(dAtA[i:], dAtA27[:j26])
i = encodeVarintGateway(dAtA, i, uint64(j26))
i -= j27
copy(dAtA[i:], dAtA28[:j27])
i = encodeVarintGateway(dAtA, i, uint64(j27))
i--
dAtA[i] = 0x1a
}
@ -5717,8 +5752,20 @@ func (m *Attestation) Size() (n int) {
if m.Kind != 0 {
n += 1 + sovGateway(uint64(m.Kind))
}
l = len(m.Ref)
if l > 0 {
if len(m.Metadata) > 0 {
for k, v := range m.Metadata {
_ = k
_ = v
l = 0
if len(v) > 0 {
l = 1 + len(v) + sovGateway(uint64(len(v)))
}
mapEntrySize := 1 + len(k) + sovGateway(uint64(len(k))) + l
n += mapEntrySize + 1 + sovGateway(uint64(mapEntrySize))
}
}
if m.Ref != nil {
l = m.Ref.Size()
n += 1 + l + sovGateway(uint64(l))
}
l = len(m.Path)
@ -7635,9 +7682,9 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
}
var stringLen uint64
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
@ -7647,25 +7694,157 @@ func (m *Attestation) 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 ErrInvalidLengthGateway
}
postIndex := iNdEx + intStringLen
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGateway
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Ref = string(dAtA[iNdEx:postIndex])
if m.Metadata == nil {
m.Metadata = make(map[string][]byte)
}
var mapkey string
mapvalue := []byte{}
for iNdEx < postIndex {
entryPreIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
if fieldNum == 1 {
var stringLenmapkey uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapkey |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapkey := int(stringLenmapkey)
if intStringLenmapkey < 0 {
return ErrInvalidLengthGateway
}
postStringIndexmapkey := iNdEx + intStringLenmapkey
if postStringIndexmapkey < 0 {
return ErrInvalidLengthGateway
}
if postStringIndexmapkey > l {
return io.ErrUnexpectedEOF
}
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
} else if fieldNum == 2 {
var mapbyteLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
mapbyteLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intMapbyteLen := int(mapbyteLen)
if intMapbyteLen < 0 {
return ErrInvalidLengthGateway
}
postbytesIndex := iNdEx + intMapbyteLen
if postbytesIndex < 0 {
return ErrInvalidLengthGateway
}
if postbytesIndex > l {
return io.ErrUnexpectedEOF
}
mapvalue = make([]byte, mapbyteLen)
copy(mapvalue, dAtA[iNdEx:postbytesIndex])
iNdEx = postbytesIndex
} else {
iNdEx = entryPreIndex
skippy, err := skipGateway(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGateway
}
if (iNdEx + skippy) > postIndex {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
m.Metadata[mapkey] = mapvalue
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGateway
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGateway
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Ref == nil {
m.Ref = &Ref{}
}
if err := m.Ref.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
}
@ -7697,7 +7876,7 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
m.Path = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 4:
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InTotoPredicateType", wireType)
}
@ -7729,7 +7908,7 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
m.InTotoPredicateType = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 5:
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InTotoSubjects", wireType)
}

View File

@ -72,11 +72,12 @@ message Attestations {
message Attestation {
AttestationKind kind = 1;
map<string, bytes> metadata = 2;
string ref = 2;
string path = 3;
string inTotoPredicateType = 4;
repeated InTotoSubject inTotoSubjects = 5;
Ref ref = 3;
string path = 4;
string inTotoPredicateType = 5;
repeated InTotoSubject inTotoSubjects = 6;
}
enum AttestationKind {

View File

@ -1,10 +1,10 @@
package sshforward
import (
io "io"
"context"
"io"
"github.com/pkg/errors"
context "golang.org/x/net/context"
"golang.org/x/sync/errgroup"
)

View File

@ -1,13 +1,13 @@
package sshforward
import (
"context"
"net"
"os"
"path/filepath"
"github.com/moby/buildkit/session"
"github.com/pkg/errors"
context "golang.org/x/net/context"
"golang.org/x/sync/errgroup"
"google.golang.org/grpc/metadata"
)

View File

@ -49,6 +49,7 @@ const (
CapExecMetaSecurityDeviceWhitelistV1 apicaps.CapID = "exec.meta.security.devices.v1"
CapExecMetaSetsDefaultPath apicaps.CapID = "exec.meta.setsdefaultpath"
CapExecMetaUlimit apicaps.CapID = "exec.meta.ulimit"
CapExecMetaRemoveMountStubsRecursive apicaps.CapID = "exec.meta.removemountstubs.recursive"
CapExecMountBind apicaps.CapID = "exec.mount.bind"
CapExecMountBindReadWriteNoOuput apicaps.CapID = "exec.mount.bind.readwrite-nooutput"
CapExecMountCache apicaps.CapID = "exec.mount.cache"

View File

@ -496,15 +496,16 @@ func (m *ExecOp) GetSecretenv() []*SecretEnv {
// Meta is unrelated to LLB metadata.
// FIXME: rename (ExecContext? ExecArgs?)
type Meta struct {
Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
Env []string `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"`
Cwd string `protobuf:"bytes,3,opt,name=cwd,proto3" json:"cwd,omitempty"`
User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
ProxyEnv *ProxyEnv `protobuf:"bytes,5,opt,name=proxy_env,json=proxyEnv,proto3" json:"proxy_env,omitempty"`
ExtraHosts []*HostIP `protobuf:"bytes,6,rep,name=extraHosts,proto3" json:"extraHosts,omitempty"`
Hostname string `protobuf:"bytes,7,opt,name=hostname,proto3" json:"hostname,omitempty"`
Ulimit []*Ulimit `protobuf:"bytes,9,rep,name=ulimit,proto3" json:"ulimit,omitempty"`
CgroupParent string `protobuf:"bytes,10,opt,name=cgroupParent,proto3" json:"cgroupParent,omitempty"`
Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
Env []string `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"`
Cwd string `protobuf:"bytes,3,opt,name=cwd,proto3" json:"cwd,omitempty"`
User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
ProxyEnv *ProxyEnv `protobuf:"bytes,5,opt,name=proxy_env,json=proxyEnv,proto3" json:"proxy_env,omitempty"`
ExtraHosts []*HostIP `protobuf:"bytes,6,rep,name=extraHosts,proto3" json:"extraHosts,omitempty"`
Hostname string `protobuf:"bytes,7,opt,name=hostname,proto3" json:"hostname,omitempty"`
Ulimit []*Ulimit `protobuf:"bytes,9,rep,name=ulimit,proto3" json:"ulimit,omitempty"`
CgroupParent string `protobuf:"bytes,10,opt,name=cgroupParent,proto3" json:"cgroupParent,omitempty"`
RemoveMountStubsRecursive bool `protobuf:"varint,11,opt,name=removeMountStubsRecursive,proto3" json:"removeMountStubsRecursive,omitempty"`
}
func (m *Meta) Reset() { *m = Meta{} }
@ -599,6 +600,13 @@ func (m *Meta) GetCgroupParent() string {
return ""
}
func (m *Meta) GetRemoveMountStubsRecursive() bool {
if m != nil {
return m.RemoveMountStubsRecursive
}
return false
}
type HostIP struct {
Host string `protobuf:"bytes,1,opt,name=Host,proto3" json:"Host,omitempty"`
IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"`
@ -2834,166 +2842,168 @@ func init() {
func init() { proto.RegisterFile("ops.proto", fileDescriptor_8de16154b2733812) }
var fileDescriptor_8de16154b2733812 = []byte{
// 2535 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4f, 0x6f, 0x5b, 0xc7,
0x11, 0x17, 0xff, 0x93, 0x43, 0x89, 0x66, 0xd6, 0x4e, 0xc2, 0xa8, 0xae, 0xac, 0xbc, 0xa4, 0x81,
0x2c, 0xdb, 0x12, 0xaa, 0x00, 0x71, 0x60, 0x14, 0x45, 0x25, 0x91, 0x8e, 0x18, 0xc7, 0xa2, 0xb0,
0xb4, 0x9d, 0x1e, 0x0a, 0x18, 0x4f, 0x8f, 0x4b, 0xe9, 0x41, 0x8f, 0x6f, 0x1f, 0xf6, 0x2d, 0x23,
0xb1, 0x87, 0x1e, 0x7a, 0x2f, 0x10, 0xa0, 0x40, 0xd1, 0x4b, 0xd1, 0x2f, 0xd1, 0x63, 0x7b, 0x0f,
0xd0, 0x4b, 0x0e, 0x3d, 0x04, 0x3d, 0xa4, 0x85, 0x73, 0xe9, 0x87, 0x68, 0x81, 0x62, 0x66, 0xf7,
0xfd, 0x21, 0xa5, 0xc0, 0x71, 0x5b, 0xf4, 0xc4, 0x79, 0x33, 0xbf, 0x9d, 0x99, 0xdd, 0x9d, 0xd9,
0x99, 0x5d, 0x42, 0x43, 0x46, 0xf1, 0x56, 0xa4, 0xa4, 0x96, 0xac, 0x18, 0x1d, 0xaf, 0xde, 0x3b,
0xf1, 0xf5, 0xe9, 0xf4, 0x78, 0xcb, 0x93, 0x93, 0xed, 0x13, 0x79, 0x22, 0xb7, 0x49, 0x74, 0x3c,
0x1d, 0xd3, 0x17, 0x7d, 0x10, 0x65, 0x86, 0x38, 0xff, 0x28, 0x42, 0x71, 0x10, 0xb1, 0xb7, 0xa1,
0xea, 0x87, 0xd1, 0x54, 0xc7, 0x9d, 0xc2, 0x7a, 0x69, 0xa3, 0xb9, 0xd3, 0xd8, 0x8a, 0x8e, 0xb7,
0xfa, 0xc8, 0xe1, 0x56, 0xc0, 0xd6, 0xa1, 0x2c, 0x2e, 0x84, 0xd7, 0x29, 0xae, 0x17, 0x36, 0x9a,
0x3b, 0x80, 0x80, 0xde, 0x85, 0xf0, 0x06, 0xd1, 0xc1, 0x12, 0x27, 0x09, 0x7b, 0x0f, 0xaa, 0xb1,
0x9c, 0x2a, 0x4f, 0x74, 0x4a, 0x84, 0x59, 0x46, 0xcc, 0x90, 0x38, 0x84, 0xb2, 0x52, 0xd4, 0x34,
0xf6, 0x03, 0xd1, 0x29, 0x67, 0x9a, 0x1e, 0xfa, 0x81, 0xc1, 0x90, 0x84, 0xbd, 0x03, 0x95, 0xe3,
0xa9, 0x1f, 0x8c, 0x3a, 0x15, 0x82, 0x34, 0x11, 0xb2, 0x87, 0x0c, 0xc2, 0x18, 0x19, 0x82, 0x26,
0x42, 0x9d, 0x88, 0x4e, 0x35, 0x03, 0x3d, 0x46, 0x86, 0x01, 0x91, 0x0c, 0x6d, 0x8d, 0xfc, 0xf1,
0xb8, 0x53, 0xcb, 0x6c, 0x75, 0xfd, 0xf1, 0xd8, 0xd8, 0x42, 0x09, 0xdb, 0x80, 0x7a, 0x14, 0xb8,
0x7a, 0x2c, 0xd5, 0xa4, 0x03, 0x99, 0xdf, 0x47, 0x96, 0xc7, 0x53, 0x29, 0xbb, 0x0f, 0x4d, 0x4f,
0x86, 0xb1, 0x56, 0xae, 0x1f, 0xea, 0xb8, 0xd3, 0x24, 0xf0, 0xeb, 0x08, 0xfe, 0x54, 0xaa, 0x33,
0xa1, 0xf6, 0x33, 0x21, 0xcf, 0x23, 0xf7, 0xca, 0x50, 0x94, 0x91, 0xf3, 0x9b, 0x02, 0xd4, 0x13,
0xad, 0xcc, 0x81, 0xe5, 0x5d, 0xe5, 0x9d, 0xfa, 0x5a, 0x78, 0x7a, 0xaa, 0x44, 0xa7, 0xb0, 0x5e,
0xd8, 0x68, 0xf0, 0x39, 0x1e, 0x6b, 0x41, 0x71, 0x30, 0xa4, 0xf5, 0x6e, 0xf0, 0xe2, 0x60, 0xc8,
0x3a, 0x50, 0x7b, 0xe6, 0x2a, 0xdf, 0x0d, 0x35, 0x2d, 0x70, 0x83, 0x27, 0x9f, 0xec, 0x26, 0x34,
0x06, 0xc3, 0x67, 0x42, 0xc5, 0xbe, 0x0c, 0x69, 0x59, 0x1b, 0x3c, 0x63, 0xb0, 0x35, 0x80, 0xc1,
0xf0, 0xa1, 0x70, 0x51, 0x69, 0xdc, 0xa9, 0xac, 0x97, 0x36, 0x1a, 0x3c, 0xc7, 0x71, 0x7e, 0x01,
0x15, 0xda, 0x6a, 0xf6, 0x31, 0x54, 0x47, 0xfe, 0x89, 0x88, 0xb5, 0x71, 0x67, 0x6f, 0xe7, 0x8b,
0xaf, 0x6f, 0x2d, 0xfd, 0xf5, 0xeb, 0x5b, 0x9b, 0xb9, 0x98, 0x92, 0x91, 0x08, 0x3d, 0x19, 0x6a,
0xd7, 0x0f, 0x85, 0x8a, 0xb7, 0x4f, 0xe4, 0x3d, 0x33, 0x64, 0xab, 0x4b, 0x3f, 0xdc, 0x6a, 0x60,
0xb7, 0xa1, 0xe2, 0x87, 0x23, 0x71, 0x41, 0xfe, 0x97, 0xf6, 0xae, 0x5b, 0x55, 0xcd, 0xc1, 0x54,
0x47, 0x53, 0xdd, 0x47, 0x11, 0x37, 0x08, 0xe7, 0xcf, 0x05, 0xa8, 0x9a, 0x50, 0x62, 0x37, 0xa1,
0x3c, 0x11, 0xda, 0x25, 0xfb, 0xcd, 0x9d, 0xba, 0xd9, 0x52, 0xed, 0x72, 0xe2, 0x62, 0x94, 0x4e,
0xe4, 0x14, 0xd7, 0xbe, 0x98, 0x45, 0xe9, 0x63, 0xe4, 0x70, 0x2b, 0x60, 0x3f, 0x80, 0x5a, 0x28,
0xf4, 0xb9, 0x54, 0x67, 0xb4, 0x46, 0x2d, 0x13, 0x16, 0x87, 0x42, 0x3f, 0x96, 0x23, 0xc1, 0x13,
0x19, 0xbb, 0x0b, 0xf5, 0x58, 0x78, 0x53, 0xe5, 0xeb, 0x19, 0xad, 0x57, 0x6b, 0xa7, 0x4d, 0xc1,
0x6a, 0x79, 0x04, 0x4e, 0x11, 0xec, 0x0e, 0x34, 0x62, 0xe1, 0x29, 0xa1, 0x45, 0xf8, 0x19, 0xad,
0x5f, 0x73, 0x67, 0xc5, 0xc2, 0x95, 0xd0, 0xbd, 0xf0, 0x33, 0x9e, 0xc9, 0x9d, 0x5f, 0x15, 0xa1,
0x8c, 0x3e, 0x33, 0x06, 0x65, 0x57, 0x9d, 0x98, 0x8c, 0x6a, 0x70, 0xa2, 0x59, 0x1b, 0x4a, 0xa8,
0xa3, 0x48, 0x2c, 0x24, 0x91, 0xe3, 0x9d, 0x8f, 0xec, 0x86, 0x22, 0x89, 0xe3, 0xa6, 0xb1, 0x50,
0x76, 0x1f, 0x89, 0x66, 0xb7, 0xa1, 0x11, 0x29, 0x79, 0x31, 0x7b, 0x6e, 0x3c, 0xc8, 0xa2, 0x14,
0x99, 0xe8, 0x40, 0x3d, 0xb2, 0x14, 0xdb, 0x04, 0x10, 0x17, 0x5a, 0xb9, 0x07, 0x32, 0xd6, 0x71,
0xa7, 0x4a, 0xde, 0x52, 0xdc, 0x23, 0xa3, 0x7f, 0xc4, 0x73, 0x52, 0xb6, 0x0a, 0xf5, 0x53, 0x19,
0xeb, 0xd0, 0x9d, 0x08, 0xca, 0x90, 0x06, 0x4f, 0xbf, 0x99, 0x03, 0xd5, 0x69, 0xe0, 0x4f, 0x7c,
0xdd, 0x69, 0x64, 0x3a, 0x9e, 0x12, 0x87, 0x5b, 0x09, 0x46, 0xb1, 0x77, 0xa2, 0xe4, 0x34, 0x3a,
0x72, 0x95, 0x08, 0x35, 0xe5, 0x4f, 0x83, 0xcf, 0xf1, 0x9c, 0xbb, 0x50, 0x35, 0x96, 0x71, 0x62,
0x48, 0xd9, 0x58, 0x27, 0x1a, 0x63, 0xbc, 0x7f, 0x94, 0xc4, 0x78, 0xff, 0xc8, 0xe9, 0x42, 0xd5,
0xd8, 0x40, 0xf4, 0x21, 0xfa, 0x65, 0xd1, 0x48, 0x23, 0x6f, 0x28, 0xc7, 0xda, 0xc4, 0x14, 0x27,
0x9a, 0xb4, 0xba, 0xca, 0xac, 0x60, 0x89, 0x13, 0xed, 0x3c, 0x82, 0x46, 0xba, 0x37, 0x64, 0xa2,
0x6b, 0xd5, 0x14, 0xfb, 0x5d, 0x1c, 0x40, 0x13, 0x36, 0x46, 0x89, 0xc6, 0x85, 0x90, 0x91, 0xf6,
0x65, 0xe8, 0x06, 0xa4, 0xa8, 0xce, 0xd3, 0x6f, 0xe7, 0xb7, 0x25, 0xa8, 0x50, 0x90, 0xb1, 0x0d,
0x8c, 0xe9, 0x68, 0x6a, 0x66, 0x50, 0xda, 0x63, 0x36, 0xa6, 0x81, 0xb2, 0x27, 0x0d, 0x69, 0xcc,
0xa4, 0x55, 0x8c, 0xaf, 0x40, 0x78, 0x5a, 0x2a, 0x6b, 0x27, 0xfd, 0x46, 0xfb, 0x23, 0xcc, 0x31,
0xb3, 0xe5, 0x44, 0xb3, 0x3b, 0x50, 0x95, 0x94, 0x18, 0xb4, 0xeb, 0xdf, 0x92, 0x2e, 0x16, 0x82,
0xca, 0x95, 0x70, 0x47, 0x32, 0x0c, 0x66, 0x14, 0x0b, 0x75, 0x9e, 0x7e, 0x63, 0xa8, 0x52, 0x26,
0x3c, 0x99, 0x45, 0xe6, 0x60, 0x6c, 0x99, 0x50, 0x7d, 0x9c, 0x30, 0x79, 0x26, 0xc7, 0xa3, 0xef,
0xc9, 0x24, 0x1a, 0xc7, 0x83, 0x48, 0x77, 0xae, 0x67, 0x41, 0x95, 0xf0, 0x78, 0x2a, 0x45, 0xa4,
0xe7, 0x7a, 0xa7, 0x02, 0x91, 0x37, 0x32, 0xe4, 0xbe, 0xe5, 0xf1, 0x54, 0x9a, 0xe5, 0x0a, 0x42,
0x5f, 0x27, 0x68, 0x2e, 0x57, 0x10, 0x9b, 0xc9, 0x31, 0xc6, 0x86, 0xc3, 0x03, 0x44, 0xbe, 0x91,
0x9d, 0xcf, 0x86, 0xc3, 0xad, 0xc4, 0xcc, 0x36, 0x9e, 0x06, 0xba, 0xdf, 0xed, 0xbc, 0x69, 0x96,
0x32, 0xf9, 0x76, 0xd6, 0xb2, 0x09, 0xe0, 0xb2, 0xc6, 0xfe, 0xcf, 0x4d, 0xbc, 0x94, 0x38, 0xd1,
0x4e, 0x1f, 0xea, 0x89, 0x8b, 0x97, 0xc2, 0xe0, 0x1e, 0xd4, 0xe2, 0x53, 0x57, 0xf9, 0xe1, 0x09,
0xed, 0x50, 0x6b, 0xe7, 0x7a, 0x3a, 0xa3, 0xa1, 0xe1, 0xa3, 0x17, 0x09, 0xc6, 0x91, 0x49, 0x48,
0x5d, 0xa5, 0xab, 0x0d, 0xa5, 0xa9, 0x3f, 0x22, 0x3d, 0x2b, 0x1c, 0x49, 0xe4, 0x9c, 0xf8, 0x26,
0x28, 0x57, 0x38, 0x92, 0xe8, 0xdf, 0x44, 0x8e, 0x4c, 0xd5, 0x5b, 0xe1, 0x44, 0xcf, 0x85, 0x5d,
0x65, 0x21, 0xec, 0x82, 0x64, 0x6d, 0xfe, 0x2f, 0xd6, 0x7e, 0x5d, 0x80, 0x7a, 0x52, 0xaa, 0xb1,
0x60, 0xf8, 0x23, 0x11, 0x6a, 0x7f, 0xec, 0x0b, 0x65, 0x0d, 0xe7, 0x38, 0xec, 0x1e, 0x54, 0x5c,
0xad, 0x55, 0x72, 0x0c, 0xbf, 0x99, 0xaf, 0xf3, 0x5b, 0xbb, 0x28, 0xe9, 0x85, 0x5a, 0xcd, 0xb8,
0x41, 0xad, 0x7e, 0x08, 0x90, 0x31, 0xd1, 0xd7, 0x33, 0x31, 0xb3, 0x5a, 0x91, 0x64, 0x37, 0xa0,
0xf2, 0x99, 0x1b, 0x4c, 0x93, 0x8c, 0x34, 0x1f, 0x0f, 0x8a, 0x1f, 0x16, 0x9c, 0x3f, 0x15, 0xa1,
0x66, 0xeb, 0x3e, 0xbb, 0x0b, 0x35, 0xaa, 0xfb, 0xd6, 0xa3, 0xab, 0xd3, 0x2f, 0x81, 0xb0, 0xed,
0xb4, 0xa1, 0xc9, 0xf9, 0x68, 0x55, 0x99, 0xc6, 0xc6, 0xfa, 0x98, 0xb5, 0x37, 0xa5, 0x91, 0x18,
0xdb, 0xce, 0xa5, 0x45, 0x7d, 0x82, 0x18, 0xfb, 0xa1, 0x8f, 0xeb, 0xc3, 0x51, 0xc4, 0xee, 0x26,
0xb3, 0x2e, 0x93, 0xc6, 0x37, 0xf2, 0x1a, 0x2f, 0x4f, 0xba, 0x0f, 0xcd, 0x9c, 0x99, 0x2b, 0x66,
0xfd, 0x6e, 0x7e, 0xd6, 0xd6, 0x24, 0xa9, 0x33, 0x6d, 0x57, 0xb6, 0x0a, 0xff, 0xc5, 0xfa, 0x7d,
0x00, 0x90, 0xa9, 0xfc, 0xee, 0xc7, 0x97, 0xf3, 0xc7, 0x12, 0xc0, 0x20, 0xc2, 0x2a, 0x36, 0x72,
0xa9, 0xee, 0x2e, 0xfb, 0x27, 0xa1, 0x54, 0xe2, 0x39, 0xa5, 0x39, 0x8d, 0xaf, 0xf3, 0xa6, 0xe1,
0x51, 0xc6, 0xb0, 0x5d, 0x68, 0x8e, 0x44, 0xec, 0x29, 0x9f, 0x02, 0xca, 0x2e, 0xfa, 0x2d, 0x9c,
0x53, 0xa6, 0x67, 0xab, 0x9b, 0x21, 0xcc, 0x5a, 0xe5, 0xc7, 0xb0, 0x1d, 0x58, 0x16, 0x17, 0x91,
0x54, 0xda, 0x5a, 0x31, 0xed, 0xe1, 0x35, 0xd3, 0x68, 0x22, 0x9f, 0x2c, 0xf1, 0xa6, 0xc8, 0x3e,
0x98, 0x0b, 0x65, 0xcf, 0x8d, 0x62, 0x5b, 0x94, 0x3b, 0x0b, 0xf6, 0xf6, 0xdd, 0xc8, 0x2c, 0xda,
0xde, 0xfb, 0x38, 0xd7, 0x5f, 0xfe, 0xed, 0xd6, 0x9d, 0x5c, 0x27, 0x33, 0x91, 0xc7, 0xb3, 0x6d,
0x8a, 0x97, 0x33, 0x5f, 0x6f, 0x4f, 0xb5, 0x1f, 0x6c, 0xbb, 0x91, 0x8f, 0xea, 0x70, 0x60, 0xbf,
0xcb, 0x49, 0x35, 0xfb, 0x10, 0x5a, 0x91, 0x92, 0x27, 0x4a, 0xc4, 0xf1, 0x73, 0xaa, 0x6b, 0xb6,
0xdf, 0x7c, 0xcd, 0xd6, 0x5f, 0x92, 0x7c, 0x84, 0x02, 0xbe, 0x12, 0xe5, 0x3f, 0x57, 0x7f, 0x0c,
0xed, 0xc5, 0x19, 0xbf, 0xca, 0xee, 0xad, 0xde, 0x87, 0x46, 0x3a, 0x83, 0x97, 0x0d, 0xac, 0xe7,
0xb7, 0xfd, 0x0f, 0x05, 0xa8, 0x9a, 0x7c, 0x64, 0xf7, 0xa1, 0x11, 0x48, 0xcf, 0x45, 0x07, 0x92,
0xde, 0xfe, 0xad, 0x2c, 0x5d, 0xb7, 0x3e, 0x49, 0x64, 0x66, 0x3f, 0x32, 0x2c, 0x86, 0xa7, 0x1f,
0x8e, 0x65, 0x92, 0x3f, 0xad, 0x6c, 0x50, 0x3f, 0x1c, 0x4b, 0x6e, 0x84, 0xab, 0x8f, 0xa0, 0x35,
0xaf, 0xe2, 0x0a, 0x3f, 0xdf, 0x99, 0x0f, 0x74, 0xaa, 0x06, 0xe9, 0xa0, 0xbc, 0xdb, 0xf7, 0xa1,
0x91, 0xf2, 0xd9, 0xe6, 0x65, 0xc7, 0x97, 0xf3, 0x23, 0x73, 0xbe, 0x3a, 0x01, 0x40, 0xe6, 0x1a,
0x1e, 0x73, 0x78, 0x89, 0x08, 0xb3, 0xe6, 0x21, 0xfd, 0xa6, 0xda, 0xeb, 0x6a, 0x97, 0x5c, 0x59,
0xe6, 0x44, 0xb3, 0x2d, 0x80, 0x51, 0x9a, 0xea, 0xdf, 0x72, 0x00, 0xe4, 0x10, 0xce, 0x00, 0xea,
0x89, 0x13, 0x6c, 0x1d, 0x9a, 0xb1, 0xb5, 0x8c, 0xbd, 0x2e, 0x9a, 0xab, 0xf0, 0x3c, 0x0b, 0x7b,
0x56, 0xe5, 0x86, 0x27, 0x62, 0xae, 0x67, 0xe5, 0xc8, 0xe1, 0x56, 0xe0, 0x7c, 0x0a, 0x15, 0x62,
0x60, 0x82, 0xc6, 0xda, 0x55, 0xda, 0xb6, 0xbf, 0xa6, 0xc3, 0x93, 0x31, 0x99, 0xdd, 0x2b, 0x63,
0x08, 0x73, 0x03, 0x60, 0xef, 0x62, 0x1f, 0x39, 0xb2, 0x2b, 0x7a, 0x15, 0x0e, 0xc5, 0xce, 0x8f,
0xa0, 0x9e, 0xb0, 0x71, 0xe6, 0x81, 0x1f, 0x0a, 0xeb, 0x22, 0xd1, 0x78, 0x6d, 0xf0, 0x4e, 0x5d,
0xe5, 0x7a, 0x5a, 0x98, 0x36, 0xa5, 0xc2, 0x33, 0x86, 0xf3, 0x0e, 0x34, 0x73, 0x79, 0x87, 0xe1,
0xf6, 0x8c, 0xb6, 0xd1, 0x64, 0xbf, 0xf9, 0x70, 0x3e, 0x82, 0x95, 0xb9, 0x1c, 0xc0, 0x62, 0xe5,
0x8f, 0x92, 0x62, 0x65, 0x0a, 0xd1, 0xa5, 0x6e, 0x8b, 0x41, 0xf9, 0x5c, 0xb8, 0x67, 0xb6, 0xd3,
0x22, 0xda, 0xf9, 0x3d, 0xde, 0x8e, 0x92, 0x1e, 0xf6, 0xfb, 0x00, 0xa7, 0x5a, 0x47, 0xcf, 0xa9,
0xa9, 0xb5, 0xca, 0x1a, 0xc8, 0x21, 0x04, 0xbb, 0x05, 0x4d, 0xfc, 0x88, 0xad, 0xdc, 0xa8, 0xa6,
0x11, 0xb1, 0x01, 0x7c, 0x0f, 0x1a, 0xe3, 0x74, 0x78, 0xc9, 0xc6, 0x40, 0x32, 0xfa, 0x2d, 0xa8,
0x87, 0xd2, 0xca, 0x4c, 0x8f, 0x5d, 0x0b, 0x65, 0x3a, 0xce, 0x0d, 0x02, 0x2b, 0xab, 0x98, 0x71,
0x6e, 0x10, 0x90, 0xd0, 0xb9, 0x03, 0xaf, 0x5d, 0xba, 0xe7, 0xb1, 0x37, 0xa0, 0x3a, 0xf6, 0x03,
0x4d, 0x45, 0x09, 0x7b, 0x7a, 0xfb, 0xe5, 0xfc, 0xab, 0x00, 0x90, 0xc5, 0x0f, 0x66, 0x05, 0x56,
0x17, 0xc4, 0x2c, 0x9b, 0x6a, 0x12, 0x40, 0x7d, 0x62, 0xcf, 0x29, 0x1b, 0x19, 0x37, 0xe7, 0x63,
0x6e, 0x2b, 0x39, 0xc6, 0xcc, 0x09, 0xb6, 0x63, 0x4f, 0xb0, 0x57, 0xb9, 0x8b, 0xa5, 0x16, 0xa8,
0xd1, 0xca, 0x5f, 0xcd, 0x21, 0x4b, 0x67, 0x6e, 0x25, 0xab, 0x8f, 0x60, 0x65, 0xce, 0xe4, 0x77,
0xac, 0x59, 0xd9, 0x79, 0x9b, 0xcf, 0xe5, 0x1d, 0xa8, 0x9a, 0x3b, 0x3d, 0xdb, 0x80, 0x9a, 0xeb,
0x99, 0x34, 0xce, 0x1d, 0x25, 0x28, 0xdc, 0x25, 0x36, 0x4f, 0xc4, 0xce, 0x5f, 0x8a, 0x00, 0x19,
0xff, 0x15, 0xba, 0xed, 0x07, 0xd0, 0x8a, 0x85, 0x27, 0xc3, 0x91, 0xab, 0x66, 0x24, 0xb5, 0x97,
0xce, 0xab, 0x86, 0x2c, 0x20, 0x73, 0x9d, 0x77, 0xe9, 0xe5, 0x9d, 0xf7, 0x06, 0x94, 0x3d, 0x19,
0xcd, 0x6c, 0x69, 0x62, 0xf3, 0x13, 0xd9, 0x97, 0xd1, 0xec, 0x60, 0x89, 0x13, 0x82, 0x6d, 0x41,
0x75, 0x72, 0x46, 0xaf, 0x1c, 0xe6, 0xb6, 0x76, 0x63, 0x1e, 0xfb, 0xf8, 0x0c, 0xe9, 0x83, 0x25,
0x6e, 0x51, 0xec, 0x0e, 0x54, 0x26, 0x67, 0x23, 0x5f, 0xd9, 0xe2, 0x72, 0x7d, 0x11, 0xde, 0xf5,
0x15, 0x3d, 0x6a, 0x20, 0x86, 0x39, 0x50, 0x54, 0x13, 0xfb, 0xa4, 0xd1, 0x5e, 0x58, 0xcd, 0xc9,
0xc1, 0x12, 0x2f, 0xaa, 0xc9, 0x5e, 0x1d, 0xaa, 0x66, 0x5d, 0x9d, 0x7f, 0x96, 0xa0, 0x35, 0xef,
0x25, 0xee, 0x6c, 0xac, 0xbc, 0x64, 0x67, 0x63, 0xe5, 0xa5, 0x97, 0x92, 0x62, 0xee, 0x52, 0xe2,
0x40, 0x45, 0x9e, 0x87, 0x42, 0xe5, 0x9f, 0x73, 0xf6, 0x4f, 0xe5, 0x79, 0x88, 0x8d, 0xb1, 0x11,
0xcd, 0xf5, 0x99, 0x15, 0xdb, 0x67, 0xbe, 0x0b, 0x2b, 0x63, 0x19, 0x04, 0xf2, 0x7c, 0x38, 0x9b,
0x04, 0x7e, 0x78, 0x66, 0x9b, 0xcd, 0x79, 0x26, 0xdb, 0x80, 0x6b, 0x23, 0x5f, 0xa1, 0x3b, 0xfb,
0x32, 0xd4, 0x22, 0xa4, 0xcb, 0x2a, 0xe2, 0x16, 0xd9, 0xec, 0x63, 0x58, 0x77, 0xb5, 0x16, 0x93,
0x48, 0x3f, 0x0d, 0x23, 0xd7, 0x3b, 0xeb, 0x4a, 0x8f, 0xb2, 0x70, 0x12, 0xb9, 0xda, 0x3f, 0xf6,
0x03, 0xbc, 0xc4, 0xd7, 0x68, 0xe8, 0x4b, 0x71, 0xec, 0x3d, 0x68, 0x79, 0x4a, 0xb8, 0x5a, 0x74,
0x45, 0xac, 0x8f, 0x5c, 0x7d, 0xda, 0xa9, 0xd3, 0xc8, 0x05, 0x2e, 0xce, 0xc1, 0x45, 0x6f, 0x3f,
0xf5, 0x83, 0x91, 0x87, 0xd7, 0xcb, 0x86, 0x99, 0xc3, 0x1c, 0x93, 0x6d, 0x01, 0x23, 0x46, 0x6f,
0x12, 0xe9, 0x59, 0x0a, 0x05, 0x82, 0x5e, 0x21, 0xc1, 0x03, 0x57, 0xfb, 0x13, 0x11, 0x6b, 0x77,
0x12, 0xd1, 0xfb, 0x51, 0x89, 0x67, 0x0c, 0x76, 0x1b, 0xda, 0x7e, 0xe8, 0x05, 0xd3, 0x91, 0x78,
0x1e, 0xe1, 0x44, 0x54, 0x18, 0x77, 0x96, 0xe9, 0x54, 0xb9, 0x66, 0xf9, 0x47, 0x96, 0x8d, 0x50,
0x71, 0xb1, 0x00, 0x5d, 0x31, 0x50, 0xcb, 0x4f, 0xa0, 0xce, 0xe7, 0x05, 0x68, 0x2f, 0x06, 0x1e,
0x6e, 0x5b, 0x84, 0x93, 0xb7, 0x97, 0x6b, 0xa4, 0xd3, 0xad, 0x2c, 0xe6, 0xb6, 0x32, 0xa9, 0x97,
0xa5, 0x5c, 0xbd, 0x4c, 0xc3, 0xa2, 0xfc, 0xed, 0x61, 0x31, 0x37, 0xd1, 0xca, 0xc2, 0x44, 0x9d,
0xdf, 0x15, 0xe0, 0xda, 0x42, 0x70, 0x7f, 0x67, 0x8f, 0xd6, 0xa1, 0x39, 0x71, 0xcf, 0x84, 0x79,
0x5c, 0x88, 0x6d, 0x09, 0xc9, 0xb3, 0xfe, 0x07, 0xfe, 0x85, 0xb0, 0x9c, 0xcf, 0xa8, 0x2b, 0x7d,
0x4b, 0x02, 0xe4, 0x50, 0xea, 0x87, 0x72, 0x6a, 0x6b, 0x71, 0x12, 0x20, 0x09, 0xf3, 0x72, 0x18,
0x95, 0xae, 0x08, 0x23, 0xe7, 0x10, 0xea, 0x89, 0x83, 0xec, 0x96, 0x7d, 0xfd, 0x29, 0x64, 0x8f,
0x9a, 0x4f, 0x63, 0xa1, 0xd0, 0x77, 0xf3, 0x14, 0xf4, 0x36, 0x54, 0x4c, 0x1b, 0x5a, 0xbc, 0x8c,
0x30, 0x12, 0x67, 0x08, 0x35, 0xcb, 0x61, 0x9b, 0x50, 0x3d, 0x9e, 0xa5, 0xef, 0x28, 0xf6, 0xb8,
0xc0, 0xef, 0x91, 0x45, 0xe0, 0x19, 0x64, 0x10, 0xec, 0x06, 0x94, 0x8f, 0x67, 0xfd, 0xae, 0xb9,
0x58, 0xe2, 0x49, 0x86, 0x5f, 0x7b, 0x55, 0xe3, 0x90, 0xf3, 0x09, 0x2c, 0xe7, 0xc7, 0xa5, 0x85,
0xbd, 0x90, 0x2b, 0xec, 0xe9, 0x91, 0x5d, 0x7c, 0xd9, 0x0d, 0xe3, 0x03, 0x00, 0x7a, 0xab, 0x7d,
0xd5, 0x9b, 0xc9, 0x0f, 0xa1, 0x66, 0xdf, 0x78, 0xd9, 0x7b, 0x0b, 0x6f, 0xd6, 0xad, 0xf4, 0x01,
0x78, 0xee, 0xe1, 0xda, 0x79, 0x80, 0x3d, 0xea, 0xb9, 0x50, 0x5d, 0x7f, 0x3c, 0x7e, 0x55, 0x73,
0x0f, 0xa0, 0xf5, 0x34, 0x8a, 0xfe, 0xb3, 0xb1, 0x3f, 0x83, 0xaa, 0x79, 0x6a, 0xc6, 0x31, 0x01,
0x7a, 0x60, 0xf7, 0x80, 0x99, 0x3e, 0x36, 0xef, 0x12, 0x37, 0x00, 0x44, 0x4e, 0xd1, 0x9e, 0xdd,
0x5c, 0x42, 0xce, 0x3b, 0xc0, 0x0d, 0x60, 0x73, 0x03, 0x6a, 0xf6, 0x55, 0x93, 0x35, 0xa0, 0xf2,
0xf4, 0x70, 0xd8, 0x7b, 0xd2, 0x5e, 0x62, 0x75, 0x28, 0x1f, 0x0c, 0x86, 0x4f, 0xda, 0x05, 0xa4,
0x0e, 0x07, 0x87, 0xbd, 0x76, 0x71, 0xf3, 0x36, 0x2c, 0xe7, 0xdf, 0x35, 0x59, 0x13, 0x6a, 0xc3,
0xdd, 0xc3, 0xee, 0xde, 0xe0, 0xa7, 0xed, 0x25, 0xb6, 0x0c, 0xf5, 0xfe, 0xe1, 0xb0, 0xb7, 0xff,
0x94, 0xf7, 0xda, 0x85, 0xcd, 0x9f, 0x40, 0x23, 0x7d, 0x28, 0x42, 0x0d, 0x7b, 0xfd, 0xc3, 0x6e,
0x7b, 0x89, 0x01, 0x54, 0x87, 0xbd, 0x7d, 0xde, 0x43, 0xbd, 0x35, 0x28, 0x0d, 0x87, 0x07, 0xed,
0x22, 0x5a, 0xdd, 0xdf, 0xdd, 0x3f, 0xe8, 0xb5, 0x4b, 0x48, 0x3e, 0x79, 0x7c, 0xf4, 0x70, 0xd8,
0x2e, 0x6f, 0x7e, 0x00, 0xd7, 0x16, 0x9e, 0x50, 0x68, 0xf4, 0xc1, 0x2e, 0xef, 0xa1, 0xa6, 0x26,
0xd4, 0x8e, 0x78, 0xff, 0xd9, 0xee, 0x93, 0x5e, 0xbb, 0x80, 0x82, 0x4f, 0x06, 0xfb, 0x8f, 0x7a,
0xdd, 0x76, 0x71, 0xef, 0xe6, 0x17, 0x2f, 0xd6, 0x0a, 0x5f, 0xbe, 0x58, 0x2b, 0x7c, 0xf5, 0x62,
0xad, 0xf0, 0xf7, 0x17, 0x6b, 0x85, 0xcf, 0xbf, 0x59, 0x5b, 0xfa, 0xf2, 0x9b, 0xb5, 0xa5, 0xaf,
0xbe, 0x59, 0x5b, 0x3a, 0xae, 0xd2, 0x9f, 0x15, 0xef, 0xff, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd1,
0x92, 0xe3, 0x09, 0xec, 0x18, 0x00, 0x00,
// 2564 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcf, 0x6f, 0x5b, 0xc7,
0xf1, 0x17, 0x7f, 0x93, 0x43, 0x89, 0x66, 0xd6, 0x4e, 0xc2, 0xe8, 0xeb, 0xaf, 0xac, 0xbc, 0xa4,
0x81, 0x2c, 0xdb, 0x32, 0xaa, 0x00, 0x71, 0x60, 0x04, 0x45, 0x25, 0x91, 0x8e, 0x18, 0xc7, 0xa2,
0xb0, 0xb4, 0x9d, 0x1e, 0x0a, 0x18, 0x4f, 0x8f, 0x4b, 0xe9, 0x41, 0x8f, 0x6f, 0x1f, 0xf6, 0x2d,
0x2d, 0xb1, 0x87, 0x1e, 0xfa, 0x17, 0x04, 0x28, 0x50, 0xf4, 0x52, 0xf4, 0x9f, 0xe8, 0xb1, 0xbd,
0x07, 0xc8, 0x25, 0x87, 0x1e, 0x82, 0x1e, 0xd2, 0xc2, 0xb9, 0xf4, 0x8f, 0x68, 0x81, 0x62, 0x66,
0xf7, 0xfd, 0x20, 0x25, 0xc3, 0x71, 0x5b, 0xf4, 0xc4, 0x79, 0x33, 0x9f, 0x9d, 0x9d, 0x9d, 0x9d,
0xd9, 0x99, 0x5d, 0x42, 0x43, 0x46, 0xf1, 0x56, 0xa4, 0xa4, 0x96, 0xac, 0x18, 0x1d, 0xad, 0xde,
0x39, 0xf6, 0xf5, 0xc9, 0xf4, 0x68, 0xcb, 0x93, 0x93, 0xbb, 0xc7, 0xf2, 0x58, 0xde, 0x25, 0xd1,
0xd1, 0x74, 0x4c, 0x5f, 0xf4, 0x41, 0x94, 0x19, 0xe2, 0xfc, 0xbd, 0x08, 0xc5, 0x41, 0xc4, 0xde,
0x85, 0xaa, 0x1f, 0x46, 0x53, 0x1d, 0x77, 0x0a, 0xeb, 0xa5, 0x8d, 0xe6, 0x76, 0x63, 0x2b, 0x3a,
0xda, 0xea, 0x23, 0x87, 0x5b, 0x01, 0x5b, 0x87, 0xb2, 0x38, 0x17, 0x5e, 0xa7, 0xb8, 0x5e, 0xd8,
0x68, 0x6e, 0x03, 0x02, 0x7a, 0xe7, 0xc2, 0x1b, 0x44, 0xfb, 0x4b, 0x9c, 0x24, 0xec, 0x03, 0xa8,
0xc6, 0x72, 0xaa, 0x3c, 0xd1, 0x29, 0x11, 0x66, 0x19, 0x31, 0x43, 0xe2, 0x10, 0xca, 0x4a, 0x51,
0xd3, 0xd8, 0x0f, 0x44, 0xa7, 0x9c, 0x69, 0x7a, 0xe0, 0x07, 0x06, 0x43, 0x12, 0xf6, 0x1e, 0x54,
0x8e, 0xa6, 0x7e, 0x30, 0xea, 0x54, 0x08, 0xd2, 0x44, 0xc8, 0x2e, 0x32, 0x08, 0x63, 0x64, 0x08,
0x9a, 0x08, 0x75, 0x2c, 0x3a, 0xd5, 0x0c, 0xf4, 0x08, 0x19, 0x06, 0x44, 0x32, 0x9c, 0x6b, 0xe4,
0x8f, 0xc7, 0x9d, 0x5a, 0x36, 0x57, 0xd7, 0x1f, 0x8f, 0xcd, 0x5c, 0x28, 0x61, 0x1b, 0x50, 0x8f,
0x02, 0x57, 0x8f, 0xa5, 0x9a, 0x74, 0x20, 0xb3, 0xfb, 0xd0, 0xf2, 0x78, 0x2a, 0x65, 0xf7, 0xa0,
0xe9, 0xc9, 0x30, 0xd6, 0xca, 0xf5, 0x43, 0x1d, 0x77, 0x9a, 0x04, 0x7e, 0x13, 0xc1, 0x5f, 0x48,
0x75, 0x2a, 0xd4, 0x5e, 0x26, 0xe4, 0x79, 0xe4, 0x6e, 0x19, 0x8a, 0x32, 0x72, 0x7e, 0x53, 0x80,
0x7a, 0xa2, 0x95, 0x39, 0xb0, 0xbc, 0xa3, 0xbc, 0x13, 0x5f, 0x0b, 0x4f, 0x4f, 0x95, 0xe8, 0x14,
0xd6, 0x0b, 0x1b, 0x0d, 0x3e, 0xc7, 0x63, 0x2d, 0x28, 0x0e, 0x86, 0xe4, 0xef, 0x06, 0x2f, 0x0e,
0x86, 0xac, 0x03, 0xb5, 0xa7, 0xae, 0xf2, 0xdd, 0x50, 0x93, 0x83, 0x1b, 0x3c, 0xf9, 0x64, 0xd7,
0xa1, 0x31, 0x18, 0x3e, 0x15, 0x2a, 0xf6, 0x65, 0x48, 0x6e, 0x6d, 0xf0, 0x8c, 0xc1, 0xd6, 0x00,
0x06, 0xc3, 0x07, 0xc2, 0x45, 0xa5, 0x71, 0xa7, 0xb2, 0x5e, 0xda, 0x68, 0xf0, 0x1c, 0xc7, 0xf9,
0x25, 0x54, 0x68, 0xab, 0xd9, 0x67, 0x50, 0x1d, 0xf9, 0xc7, 0x22, 0xd6, 0xc6, 0x9c, 0xdd, 0xed,
0xaf, 0xbe, 0xbb, 0xb1, 0xf4, 0x97, 0xef, 0x6e, 0x6c, 0xe6, 0x62, 0x4a, 0x46, 0x22, 0xf4, 0x64,
0xa8, 0x5d, 0x3f, 0x14, 0x2a, 0xbe, 0x7b, 0x2c, 0xef, 0x98, 0x21, 0x5b, 0x5d, 0xfa, 0xe1, 0x56,
0x03, 0xbb, 0x09, 0x15, 0x3f, 0x1c, 0x89, 0x73, 0xb2, 0xbf, 0xb4, 0x7b, 0xd5, 0xaa, 0x6a, 0x0e,
0xa6, 0x3a, 0x9a, 0xea, 0x3e, 0x8a, 0xb8, 0x41, 0x38, 0x5f, 0x17, 0xa0, 0x6a, 0x42, 0x89, 0x5d,
0x87, 0xf2, 0x44, 0x68, 0x97, 0xe6, 0x6f, 0x6e, 0xd7, 0xcd, 0x96, 0x6a, 0x97, 0x13, 0x17, 0xa3,
0x74, 0x22, 0xa7, 0xe8, 0xfb, 0x62, 0x16, 0xa5, 0x8f, 0x90, 0xc3, 0xad, 0x80, 0xfd, 0x08, 0x6a,
0xa1, 0xd0, 0x67, 0x52, 0x9d, 0x92, 0x8f, 0x5a, 0x26, 0x2c, 0x0e, 0x84, 0x7e, 0x24, 0x47, 0x82,
0x27, 0x32, 0x76, 0x1b, 0xea, 0xb1, 0xf0, 0xa6, 0xca, 0xd7, 0x33, 0xf2, 0x57, 0x6b, 0xbb, 0x4d,
0xc1, 0x6a, 0x79, 0x04, 0x4e, 0x11, 0xec, 0x16, 0x34, 0x62, 0xe1, 0x29, 0xa1, 0x45, 0xf8, 0x9c,
0xfc, 0xd7, 0xdc, 0x5e, 0xb1, 0x70, 0x25, 0x74, 0x2f, 0x7c, 0xce, 0x33, 0xb9, 0xf3, 0x75, 0x11,
0xca, 0x68, 0x33, 0x63, 0x50, 0x76, 0xd5, 0xb1, 0xc9, 0xa8, 0x06, 0x27, 0x9a, 0xb5, 0xa1, 0x84,
0x3a, 0x8a, 0xc4, 0x42, 0x12, 0x39, 0xde, 0xd9, 0xc8, 0x6e, 0x28, 0x92, 0x38, 0x6e, 0x1a, 0x0b,
0x65, 0xf7, 0x91, 0x68, 0x76, 0x13, 0x1a, 0x91, 0x92, 0xe7, 0xb3, 0x67, 0xc6, 0x82, 0x2c, 0x4a,
0x91, 0x89, 0x06, 0xd4, 0x23, 0x4b, 0xb1, 0x4d, 0x00, 0x71, 0xae, 0x95, 0xbb, 0x2f, 0x63, 0x1d,
0x77, 0xaa, 0x64, 0x2d, 0xc5, 0x3d, 0x32, 0xfa, 0x87, 0x3c, 0x27, 0x65, 0xab, 0x50, 0x3f, 0x91,
0xb1, 0x0e, 0xdd, 0x89, 0xa0, 0x0c, 0x69, 0xf0, 0xf4, 0x9b, 0x39, 0x50, 0x9d, 0x06, 0xfe, 0xc4,
0xd7, 0x9d, 0x46, 0xa6, 0xe3, 0x09, 0x71, 0xb8, 0x95, 0x60, 0x14, 0x7b, 0xc7, 0x4a, 0x4e, 0xa3,
0x43, 0x57, 0x89, 0x50, 0x53, 0xfe, 0x34, 0xf8, 0x1c, 0x8f, 0x7d, 0x02, 0xef, 0x28, 0x31, 0x91,
0xcf, 0x05, 0x6d, 0xd4, 0x50, 0x4f, 0x8f, 0x62, 0x8e, 0x8e, 0x8d, 0xfd, 0xe7, 0x82, 0x72, 0xa8,
0xce, 0x5f, 0x0e, 0x70, 0x6e, 0x43, 0xd5, 0xd8, 0x8d, 0x6e, 0x41, 0xca, 0x66, 0x0a, 0xd1, 0x98,
0x21, 0xfd, 0xc3, 0x24, 0x43, 0xfa, 0x87, 0x4e, 0x17, 0xaa, 0xc6, 0x42, 0x44, 0x1f, 0xe0, 0xaa,
0x2c, 0x1a, 0x69, 0xe4, 0x0d, 0xe5, 0x58, 0x9b, 0x88, 0xe4, 0x44, 0x93, 0x56, 0x57, 0x19, 0xff,
0x97, 0x38, 0xd1, 0xce, 0x43, 0x68, 0xa4, 0x3b, 0x4b, 0x53, 0x74, 0xad, 0x9a, 0x62, 0xbf, 0x8b,
0x03, 0xc8, 0x5d, 0x66, 0x52, 0xa2, 0xd1, 0x8d, 0x32, 0xd2, 0xbe, 0x0c, 0xdd, 0x80, 0x14, 0xd5,
0x79, 0xfa, 0xed, 0xfc, 0xb6, 0x04, 0x15, 0x5a, 0x18, 0xdb, 0xc0, 0x8c, 0x88, 0xa6, 0x66, 0x05,
0xa5, 0x5d, 0x66, 0x33, 0x02, 0x28, 0xf7, 0xd2, 0x84, 0xc0, 0x3c, 0x5c, 0xc5, 0xe8, 0x0c, 0x84,
0xa7, 0xa5, 0xb2, 0xf3, 0xa4, 0xdf, 0x38, 0xff, 0x08, 0x33, 0xd4, 0x04, 0x0c, 0xd1, 0xec, 0x16,
0x54, 0x25, 0xa5, 0x15, 0xc5, 0xcc, 0x4b, 0x92, 0xcd, 0x42, 0x50, 0xb9, 0x12, 0xee, 0x48, 0x86,
0xc1, 0x8c, 0x22, 0xa9, 0xce, 0xd3, 0x6f, 0x0c, 0x74, 0xca, 0xa3, 0xc7, 0xb3, 0xc8, 0x1c, 0xab,
0x2d, 0x13, 0xe8, 0x8f, 0x12, 0x26, 0xcf, 0xe4, 0x78, 0x70, 0x3e, 0x9e, 0x44, 0xe3, 0x78, 0x10,
0xe9, 0xce, 0xd5, 0x2c, 0x24, 0x13, 0x1e, 0x4f, 0xa5, 0x88, 0xf4, 0x5c, 0xef, 0x44, 0x20, 0xf2,
0x5a, 0x86, 0xdc, 0xb3, 0x3c, 0x9e, 0x4a, 0xb3, 0x4c, 0x43, 0xe8, 0x9b, 0x04, 0xcd, 0x65, 0x1a,
0x62, 0x33, 0x39, 0x46, 0xe8, 0x70, 0xb8, 0x8f, 0xc8, 0xb7, 0xb2, 0xd3, 0xdd, 0x70, 0xb8, 0x95,
0x98, 0xd5, 0xc6, 0xd3, 0x40, 0xf7, 0xbb, 0x9d, 0xb7, 0x8d, 0x2b, 0x93, 0x6f, 0x67, 0x2d, 0x5b,
0x00, 0xba, 0x35, 0xf6, 0x7f, 0x61, 0xe2, 0xa5, 0xc4, 0x89, 0x76, 0xfa, 0x50, 0x4f, 0x4c, 0xbc,
0x10, 0x06, 0x77, 0xa0, 0x16, 0x9f, 0xb8, 0xca, 0x0f, 0x8f, 0x69, 0x87, 0x5a, 0xdb, 0x57, 0xd3,
0x15, 0x0d, 0x0d, 0x1f, 0xad, 0x48, 0x30, 0x8e, 0x4c, 0x42, 0xea, 0x32, 0x5d, 0x6d, 0x28, 0x4d,
0xfd, 0x11, 0xe9, 0x59, 0xe1, 0x48, 0x22, 0xe7, 0xd8, 0x37, 0x41, 0xb9, 0xc2, 0x91, 0x44, 0xfb,
0x26, 0x72, 0x64, 0x6a, 0xe6, 0x0a, 0x27, 0x7a, 0x2e, 0xec, 0x2a, 0x0b, 0x61, 0x17, 0x24, 0xbe,
0xf9, 0x9f, 0xcc, 0xf6, 0xeb, 0x02, 0xd4, 0x93, 0x42, 0x8f, 0xe5, 0xc6, 0x1f, 0x89, 0x50, 0xfb,
0x63, 0x5f, 0x28, 0x3b, 0x71, 0x8e, 0xc3, 0xee, 0x40, 0xc5, 0xd5, 0x5a, 0x25, 0x87, 0xf8, 0xdb,
0xf9, 0x2e, 0x61, 0x6b, 0x07, 0x25, 0xbd, 0x50, 0xab, 0x19, 0x37, 0xa8, 0xd5, 0x8f, 0x01, 0x32,
0x26, 0xda, 0x7a, 0x2a, 0x66, 0x56, 0x2b, 0x92, 0xec, 0x1a, 0x54, 0x9e, 0xbb, 0xc1, 0x34, 0xc9,
0x48, 0xf3, 0x71, 0xbf, 0xf8, 0x71, 0xc1, 0xf9, 0x53, 0x11, 0x6a, 0xb6, 0x6b, 0x60, 0xb7, 0xa1,
0x46, 0x5d, 0x83, 0xb5, 0xe8, 0xf2, 0xf4, 0x4b, 0x20, 0xec, 0x6e, 0xda, 0x0e, 0xe5, 0x6c, 0xb4,
0xaa, 0x4c, 0x5b, 0x64, 0x6d, 0xcc, 0x9a, 0xa3, 0xd2, 0x48, 0x8c, 0x6d, 0xdf, 0xd3, 0xa2, 0x2e,
0x43, 0x8c, 0xfd, 0xd0, 0x47, 0xff, 0x70, 0x14, 0xb1, 0xdb, 0xc9, 0xaa, 0xcb, 0xa4, 0xf1, 0xad,
0xbc, 0xc6, 0x8b, 0x8b, 0xee, 0x43, 0x33, 0x37, 0xcd, 0x25, 0xab, 0x7e, 0x3f, 0xbf, 0x6a, 0x3b,
0x25, 0xa9, 0x33, 0x4d, 0x5b, 0xe6, 0x85, 0xff, 0xc0, 0x7f, 0x1f, 0x01, 0x64, 0x2a, 0x7f, 0xf8,
0xf1, 0xe5, 0xfc, 0xb1, 0x04, 0x30, 0x88, 0xb0, 0x06, 0x8e, 0x5c, 0xaa, 0xda, 0xcb, 0xfe, 0x71,
0x28, 0x95, 0x78, 0x46, 0x69, 0x4e, 0xe3, 0xeb, 0xbc, 0x69, 0x78, 0x94, 0x31, 0x6c, 0x07, 0x9a,
0x23, 0x11, 0x7b, 0xca, 0xa7, 0x80, 0xb2, 0x4e, 0xbf, 0x81, 0x6b, 0xca, 0xf4, 0x6c, 0x75, 0x33,
0x84, 0xf1, 0x55, 0x7e, 0x0c, 0xdb, 0x86, 0x65, 0x71, 0x1e, 0x49, 0xa5, 0xed, 0x2c, 0xa6, 0xb9,
0xbc, 0x62, 0xda, 0x54, 0xe4, 0xd3, 0x4c, 0xbc, 0x29, 0xb2, 0x0f, 0xe6, 0x42, 0xd9, 0x73, 0xa3,
0xd8, 0x96, 0xf4, 0xce, 0xc2, 0x7c, 0x7b, 0x6e, 0x64, 0x9c, 0xb6, 0xfb, 0x21, 0xae, 0xf5, 0x57,
0x7f, 0xbd, 0x71, 0x2b, 0xd7, 0x07, 0x4d, 0xe4, 0xd1, 0xec, 0x2e, 0xc5, 0xcb, 0xa9, 0xaf, 0xef,
0x4e, 0xb5, 0x1f, 0xdc, 0x75, 0x23, 0x1f, 0xd5, 0xe1, 0xc0, 0x7e, 0x97, 0x93, 0x6a, 0xf6, 0x31,
0xb4, 0x22, 0x25, 0x8f, 0x95, 0x88, 0xe3, 0x67, 0x54, 0x15, 0x6d, 0xb7, 0xfa, 0x86, 0xad, 0xde,
0x24, 0xf9, 0x14, 0x05, 0x7c, 0x25, 0xca, 0x7f, 0xae, 0xfe, 0x04, 0xda, 0x8b, 0x2b, 0x7e, 0x9d,
0xdd, 0x5b, 0xbd, 0x07, 0x8d, 0x74, 0x05, 0xaf, 0x1a, 0x58, 0xcf, 0x6f, 0xfb, 0x1f, 0x0a, 0x50,
0x35, 0xf9, 0xc8, 0xee, 0x41, 0x23, 0x90, 0x9e, 0x8b, 0x06, 0x24, 0x37, 0x83, 0x77, 0xb2, 0x74,
0xdd, 0xfa, 0x3c, 0x91, 0x99, 0xfd, 0xc8, 0xb0, 0x18, 0x9e, 0x7e, 0x38, 0x96, 0x49, 0xfe, 0xb4,
0xb2, 0x41, 0xfd, 0x70, 0x2c, 0xb9, 0x11, 0xae, 0x3e, 0x84, 0xd6, 0xbc, 0x8a, 0x4b, 0xec, 0x7c,
0x6f, 0x3e, 0xd0, 0xa9, 0x1a, 0xa4, 0x83, 0xf2, 0x66, 0xdf, 0x83, 0x46, 0xca, 0x67, 0x9b, 0x17,
0x0d, 0x5f, 0xce, 0x8f, 0xcc, 0xd9, 0xea, 0x04, 0x00, 0x99, 0x69, 0x78, 0xcc, 0xe1, 0x15, 0x24,
0xcc, 0x9a, 0x87, 0xf4, 0x9b, 0x6a, 0xaf, 0xab, 0x5d, 0x32, 0x65, 0x99, 0x13, 0xcd, 0xb6, 0x00,
0x46, 0x69, 0xaa, 0xbf, 0xe4, 0x00, 0xc8, 0x21, 0x9c, 0x01, 0xd4, 0x13, 0x23, 0xd8, 0x3a, 0x34,
0x63, 0x3b, 0x33, 0x76, 0xca, 0x38, 0x5d, 0x85, 0xe7, 0x59, 0xd8, 0xf1, 0x2a, 0x37, 0x3c, 0x16,
0x73, 0x1d, 0x2f, 0x47, 0x0e, 0xb7, 0x02, 0xe7, 0x0b, 0xa8, 0x10, 0x03, 0x13, 0x34, 0xd6, 0xae,
0xd2, 0xb6, 0x79, 0x36, 0xfd, 0xa1, 0x8c, 0x69, 0xda, 0xdd, 0x32, 0x86, 0x30, 0x37, 0x00, 0xf6,
0x3e, 0x76, 0xa1, 0x23, 0xeb, 0xd1, 0xcb, 0x70, 0x28, 0x76, 0x3e, 0x81, 0x7a, 0xc2, 0xc6, 0x95,
0x07, 0x7e, 0x28, 0xac, 0x89, 0x44, 0xe3, 0xa5, 0xc3, 0x3b, 0x71, 0x95, 0xeb, 0x69, 0x61, 0xda,
0x94, 0x0a, 0xcf, 0x18, 0xce, 0x7b, 0xd0, 0xcc, 0xe5, 0x1d, 0x86, 0xdb, 0x53, 0xda, 0x46, 0x93,
0xfd, 0xe6, 0xc3, 0xf9, 0x14, 0x56, 0xe6, 0x72, 0x00, 0x8b, 0x95, 0x3f, 0x4a, 0x8a, 0x95, 0x29,
0x44, 0x17, 0xba, 0x2d, 0x06, 0xe5, 0x33, 0xe1, 0x9e, 0xda, 0x4e, 0x8b, 0x68, 0xe7, 0xf7, 0x78,
0xb7, 0x4a, 0x3a, 0xe0, 0xff, 0x07, 0x38, 0xd1, 0x3a, 0x7a, 0x46, 0x2d, 0xb1, 0x55, 0xd6, 0x40,
0x0e, 0x21, 0xd8, 0x0d, 0x68, 0xe2, 0x47, 0x6c, 0xe5, 0x46, 0x35, 0x8d, 0x88, 0x0d, 0xe0, 0xff,
0xa0, 0x31, 0x4e, 0x87, 0x97, 0x6c, 0x0c, 0x24, 0xa3, 0xdf, 0x81, 0x7a, 0x28, 0xad, 0xcc, 0x74,
0xe8, 0xb5, 0x50, 0xa6, 0xe3, 0xdc, 0x20, 0xb0, 0xb2, 0x8a, 0x19, 0xe7, 0x06, 0x01, 0x09, 0x9d,
0x5b, 0xf0, 0xc6, 0x85, 0x5b, 0x22, 0x7b, 0x0b, 0xaa, 0x63, 0x3f, 0xd0, 0x54, 0x94, 0xf0, 0x46,
0x60, 0xbf, 0x9c, 0x7f, 0x16, 0x00, 0xb2, 0xf8, 0xc1, 0xac, 0xc0, 0xea, 0x82, 0x98, 0x65, 0x53,
0x4d, 0x02, 0xa8, 0x4f, 0xec, 0x39, 0x65, 0x23, 0xe3, 0xfa, 0x7c, 0xcc, 0x6d, 0x25, 0xc7, 0x98,
0x39, 0xc1, 0xb6, 0xed, 0x09, 0xf6, 0x3a, 0x37, 0xb9, 0x74, 0x06, 0x6a, 0xb4, 0xf2, 0x17, 0x7b,
0xc8, 0xd2, 0x99, 0x5b, 0xc9, 0xea, 0x43, 0x58, 0x99, 0x9b, 0xf2, 0x07, 0xd6, 0xac, 0xec, 0xbc,
0xcd, 0xe7, 0xf2, 0x36, 0x54, 0xcd, 0x8b, 0x00, 0xdb, 0x80, 0x9a, 0xeb, 0x99, 0x34, 0xce, 0x1d,
0x25, 0x28, 0xdc, 0x21, 0x36, 0x4f, 0xc4, 0xce, 0x9f, 0x8b, 0x00, 0x19, 0xff, 0x35, 0xba, 0xed,
0xfb, 0xd0, 0x8a, 0x85, 0x27, 0xc3, 0x91, 0xab, 0x66, 0x24, 0xb5, 0x57, 0xd6, 0xcb, 0x86, 0x2c,
0x20, 0x73, 0x9d, 0x77, 0xe9, 0xd5, 0x9d, 0xf7, 0x06, 0x94, 0x3d, 0x19, 0xcd, 0x6c, 0x69, 0x62,
0xf3, 0x0b, 0xd9, 0x93, 0xd1, 0x6c, 0x7f, 0x89, 0x13, 0x82, 0x6d, 0x41, 0x75, 0x72, 0x4a, 0x6f,
0x24, 0xe6, 0xae, 0x77, 0x6d, 0x1e, 0xfb, 0xe8, 0x14, 0xe9, 0xfd, 0x25, 0x6e, 0x51, 0xec, 0x16,
0x54, 0x26, 0xa7, 0x23, 0x5f, 0xd9, 0xe2, 0x72, 0x75, 0x11, 0xde, 0xf5, 0x15, 0x3d, 0x89, 0x20,
0x86, 0x39, 0x50, 0x54, 0x13, 0xfb, 0x20, 0xd2, 0x5e, 0xf0, 0xe6, 0x64, 0x7f, 0x89, 0x17, 0xd5,
0x64, 0xb7, 0x0e, 0x55, 0xe3, 0x57, 0xe7, 0x1f, 0x25, 0x68, 0xcd, 0x5b, 0x89, 0x3b, 0x1b, 0x2b,
0x2f, 0xd9, 0xd9, 0x58, 0x79, 0xe9, 0xa5, 0xa4, 0x98, 0xbb, 0x94, 0x38, 0x50, 0x91, 0x67, 0xa1,
0x50, 0xf9, 0xc7, 0xa0, 0xbd, 0x13, 0x79, 0x16, 0x62, 0x63, 0x6c, 0x44, 0x73, 0x7d, 0x66, 0xc5,
0xf6, 0x99, 0xef, 0xc3, 0xca, 0x58, 0x06, 0x81, 0x3c, 0x1b, 0xce, 0x26, 0x81, 0x1f, 0x9e, 0xda,
0x66, 0x73, 0x9e, 0xc9, 0x36, 0xe0, 0xca, 0xc8, 0x57, 0x68, 0xce, 0x9e, 0x0c, 0xb5, 0x08, 0xe9,
0xaa, 0x8b, 0xb8, 0x45, 0x36, 0xfb, 0x0c, 0xd6, 0x5d, 0xad, 0xc5, 0x24, 0xd2, 0x4f, 0xc2, 0xc8,
0xf5, 0x4e, 0xbb, 0xd2, 0xa3, 0x2c, 0x9c, 0x44, 0xae, 0xf6, 0x8f, 0xfc, 0xc0, 0xd7, 0x33, 0x72,
0x46, 0x9d, 0xbf, 0x12, 0xc7, 0x3e, 0x80, 0x96, 0xa7, 0x84, 0xab, 0x45, 0x57, 0xc4, 0xfa, 0xd0,
0xd5, 0x27, 0x9d, 0x3a, 0x8d, 0x5c, 0xe0, 0xe2, 0x1a, 0x5c, 0xb4, 0xf6, 0x0b, 0x3f, 0x18, 0x79,
0x78, 0xbd, 0x6c, 0x98, 0x35, 0xcc, 0x31, 0xd9, 0x16, 0x30, 0x62, 0xf4, 0x26, 0x91, 0x9e, 0xa5,
0x50, 0x20, 0xe8, 0x25, 0x12, 0x3c, 0x70, 0xb5, 0x3f, 0x11, 0xb1, 0x76, 0x27, 0x11, 0xdd, 0x9c,
0x4b, 0x3c, 0x63, 0xb0, 0x9b, 0xd0, 0xf6, 0x43, 0x2f, 0x98, 0x8e, 0xc4, 0xb3, 0x08, 0x17, 0xa2,
0xc2, 0xb8, 0xb3, 0x4c, 0xa7, 0xca, 0x15, 0xcb, 0x3f, 0xb4, 0x6c, 0x84, 0x8a, 0xf3, 0x05, 0xe8,
0x8a, 0x81, 0x5a, 0x7e, 0x02, 0x75, 0xbe, 0x2c, 0x40, 0x7b, 0x31, 0xf0, 0x70, 0xdb, 0x22, 0x5c,
0xbc, 0xbd, 0x5c, 0x23, 0x9d, 0x6e, 0x65, 0x31, 0xb7, 0x95, 0x49, 0xbd, 0x2c, 0xe5, 0xea, 0x65,
0x1a, 0x16, 0xe5, 0x97, 0x87, 0xc5, 0xdc, 0x42, 0x2b, 0x0b, 0x0b, 0x75, 0x7e, 0x57, 0x80, 0x2b,
0x0b, 0xc1, 0xfd, 0x83, 0x2d, 0x5a, 0x87, 0xe6, 0xc4, 0x3d, 0x15, 0xe6, 0x69, 0x22, 0xb6, 0x25,
0x24, 0xcf, 0xfa, 0x2f, 0xd8, 0x17, 0xc2, 0x72, 0x3e, 0xa3, 0x2e, 0xb5, 0x2d, 0x09, 0x90, 0x03,
0xa9, 0x1f, 0xc8, 0xa9, 0xad, 0xc5, 0x49, 0x80, 0x24, 0xcc, 0x8b, 0x61, 0x54, 0xba, 0x24, 0x8c,
0x9c, 0x03, 0xa8, 0x27, 0x06, 0xb2, 0x1b, 0xf6, 0xed, 0xa8, 0x90, 0x3d, 0x89, 0x3e, 0x89, 0x85,
0x42, 0xdb, 0xcd, 0x43, 0xd2, 0xbb, 0x50, 0x31, 0x6d, 0x68, 0xf1, 0x22, 0xc2, 0x48, 0x9c, 0x21,
0xd4, 0x2c, 0x87, 0x6d, 0x42, 0xf5, 0x68, 0x96, 0xbe, 0xa3, 0xd8, 0xe3, 0x02, 0xbf, 0x47, 0x16,
0x81, 0x67, 0x90, 0x41, 0xb0, 0x6b, 0x50, 0x3e, 0x9a, 0xf5, 0xbb, 0xe6, 0x62, 0x89, 0x27, 0x19,
0x7e, 0xed, 0x56, 0x8d, 0x41, 0xce, 0xe7, 0xb0, 0x9c, 0x1f, 0x97, 0x16, 0xf6, 0x42, 0xae, 0xb0,
0xa7, 0x47, 0x76, 0xf1, 0x55, 0x37, 0x8c, 0x8f, 0x00, 0xe8, 0xa5, 0xf7, 0x75, 0x6f, 0x26, 0x3f,
0x86, 0x9a, 0x7d, 0x21, 0x66, 0x1f, 0x2c, 0xbc, 0x78, 0xb7, 0xd2, 0xe7, 0xe3, 0xb9, 0x67, 0x6f,
0xe7, 0x3e, 0xf6, 0xa8, 0x67, 0x42, 0x75, 0xfd, 0xf1, 0xf8, 0x75, 0xa7, 0xbb, 0x0f, 0xad, 0x27,
0x51, 0xf4, 0xef, 0x8d, 0xfd, 0x39, 0x54, 0xcd, 0x43, 0x35, 0x8e, 0x09, 0xd0, 0x02, 0xbb, 0x07,
0xcc, 0xf4, 0xb1, 0x79, 0x93, 0xb8, 0x01, 0x20, 0x72, 0x8a, 0xf3, 0xd9, 0xcd, 0x25, 0xe4, 0xbc,
0x01, 0xdc, 0x00, 0x36, 0x37, 0xa0, 0x66, 0xdf, 0x44, 0x59, 0x03, 0x2a, 0x4f, 0x0e, 0x86, 0xbd,
0xc7, 0xed, 0x25, 0x56, 0x87, 0xf2, 0xfe, 0x60, 0xf8, 0xb8, 0x5d, 0x40, 0xea, 0x60, 0x70, 0xd0,
0x6b, 0x17, 0x37, 0x6f, 0xc2, 0x72, 0xfe, 0x55, 0x94, 0x35, 0xa1, 0x36, 0xdc, 0x39, 0xe8, 0xee,
0x0e, 0x7e, 0xd6, 0x5e, 0x62, 0xcb, 0x50, 0xef, 0x1f, 0x0c, 0x7b, 0x7b, 0x4f, 0x78, 0xaf, 0x5d,
0xd8, 0xfc, 0x29, 0x34, 0xd2, 0x87, 0x22, 0xd4, 0xb0, 0xdb, 0x3f, 0xe8, 0xb6, 0x97, 0x18, 0x40,
0x75, 0xd8, 0xdb, 0xe3, 0x3d, 0xd4, 0x5b, 0x83, 0xd2, 0x70, 0xb8, 0xdf, 0x2e, 0xe2, 0xac, 0x7b,
0x3b, 0x7b, 0xfb, 0xbd, 0x76, 0x09, 0xc9, 0xc7, 0x8f, 0x0e, 0x1f, 0x0c, 0xdb, 0xe5, 0xcd, 0x8f,
0xe0, 0xca, 0xc2, 0x13, 0x0a, 0x8d, 0xde, 0xdf, 0xe1, 0x3d, 0xd4, 0xd4, 0x84, 0xda, 0x21, 0xef,
0x3f, 0xdd, 0x79, 0xdc, 0x6b, 0x17, 0x50, 0xf0, 0xf9, 0x60, 0xef, 0x61, 0xaf, 0xdb, 0x2e, 0xee,
0x5e, 0xff, 0xea, 0xc5, 0x5a, 0xe1, 0x9b, 0x17, 0x6b, 0x85, 0x6f, 0x5f, 0xac, 0x15, 0xfe, 0xf6,
0x62, 0xad, 0xf0, 0xe5, 0xf7, 0x6b, 0x4b, 0xdf, 0x7c, 0xbf, 0xb6, 0xf4, 0xed, 0xf7, 0x6b, 0x4b,
0x47, 0x55, 0xfa, 0xab, 0xe3, 0xc3, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x4f, 0x06, 0xaa,
0x2a, 0x19, 0x00, 0x00,
}
func (m *Op) Marshal() (dAtA []byte, err error) {
@ -3380,6 +3390,16 @@ func (m *Meta) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.RemoveMountStubsRecursive {
i--
if m.RemoveMountStubsRecursive {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x58
}
if len(m.CgroupParent) > 0 {
i -= len(m.CgroupParent)
copy(dAtA[i:], m.CgroupParent)
@ -5721,6 +5741,9 @@ func (m *Meta) Size() (n int) {
if l > 0 {
n += 1 + l + sovOps(uint64(l))
}
if m.RemoveMountStubsRecursive {
n += 2
}
return n
}
@ -7774,6 +7797,26 @@ func (m *Meta) Unmarshal(dAtA []byte) error {
}
m.CgroupParent = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 11:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RemoveMountStubsRecursive", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.RemoveMountStubsRecursive = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := skipOps(dAtA[iNdEx:])

View File

@ -63,6 +63,7 @@ message Meta {
string hostname = 7;
repeated Ulimit ulimit = 9;
string cgroupParent = 10;
bool removeMountStubsRecursive = 11;
}
message HostIP {

View File

@ -1,6 +1,8 @@
package result
import (
"reflect"
pb "github.com/moby/buildkit/frontend/gateway/pb"
digest "github.com/opencontainers/go-digest"
)
@ -15,12 +17,12 @@ var (
AttestationReasonProvenance = []byte("provenance")
)
type Attestation struct {
type Attestation[T any] struct {
Kind pb.AttestationKind
Metadata map[string][]byte
Ref string
Ref T
Path string
ContentFunc func() ([]byte, error)
@ -54,3 +56,23 @@ func FromDigestMap(m map[string]string) []digest.Digest {
}
return ds
}
func ConvertAttestation[U any, V any](a *Attestation[U], fn func(U) (V, error)) (*Attestation[V], error) {
var ref V
if reflect.ValueOf(a.Ref).IsValid() {
var err error
ref, err = fn(a.Ref)
if err != nil {
return nil, err
}
}
return &Attestation[V]{
Kind: a.Kind,
Metadata: a.Metadata,
Ref: ref,
Path: a.Path,
ContentFunc: a.ContentFunc,
InToto: a.InToto,
}, nil
}

View File

@ -2,23 +2,17 @@ package result
import (
"reflect"
"strings"
"sync"
"github.com/moby/buildkit/identity"
"github.com/pkg/errors"
)
const (
attestationRefPrefix = "attestation:"
)
type Result[T any] struct {
mu sync.Mutex
Ref T
Refs map[string]T
Metadata map[string][]byte
Attestations map[string][]Attestation
Attestations map[string][]Attestation[T]
}
func (r *Result[T]) AddMeta(k string, v []byte) {
@ -39,19 +33,10 @@ func (r *Result[T]) AddRef(k string, ref T) {
r.mu.Unlock()
}
func (r *Result[T]) AddAttestation(k string, v Attestation, ref T) {
func (r *Result[T]) AddAttestation(k string, v Attestation[T]) {
r.mu.Lock()
if reflect.ValueOf(ref).IsValid() {
if r.Refs == nil {
r.Refs = map[string]T{}
}
if !strings.HasPrefix(v.Ref, attestationRefPrefix) {
v.Ref = attestationRefPrefix + identity.NewID()
r.Refs[v.Ref] = ref
}
}
if r.Attestations == nil {
r.Attestations = map[string][]Attestation{}
r.Attestations = map[string][]Attestation[T]{}
}
r.Attestations[k] = append(r.Attestations[k], v)
r.mu.Unlock()
@ -72,6 +57,25 @@ func (r *Result[T]) SingleRef() (T, error) {
return r.Ref, nil
}
func (r *Result[T]) FindRef(key string) (T, bool) {
r.mu.Lock()
defer r.mu.Unlock()
if r.Refs != nil {
if ref, ok := r.Refs[key]; ok {
return ref, true
}
if len(r.Refs) == 1 {
for _, ref := range r.Refs {
return ref, true
}
}
var t T
return t, false
}
return r.Ref, true
}
func (r *Result[T]) EachRef(fn func(T) error) (err error) {
if reflect.ValueOf(r.Ref).IsValid() {
err = fn(r.Ref)
@ -83,6 +87,15 @@ func (r *Result[T]) EachRef(fn func(T) error) (err error) {
}
}
}
for _, as := range r.Attestations {
for _, a := range as {
if reflect.ValueOf(a.Ref).IsValid() {
if err1 := fn(a.Ref); err1 != nil && err == nil {
err = err1
}
}
}
}
return err
}
@ -94,12 +107,33 @@ func EachRef[U any, V any](a *Result[U], b *Result[V], fn func(U, V) error) (err
err = fn(a.Ref, b.Ref)
}
for k, r := range a.Refs {
if reflect.ValueOf(r).IsValid() && reflect.ValueOf(b.Refs[k]).IsValid() {
if err1 := fn(r, b.Refs[k]); err1 != nil && err == nil {
r2, ok := b.Refs[k]
if !ok {
continue
}
if reflect.ValueOf(r).IsValid() && reflect.ValueOf(r2).IsValid() {
if err1 := fn(r, r2); err1 != nil && err == nil {
err = err1
}
}
}
for k, atts := range a.Attestations {
atts2, ok := b.Attestations[k]
if !ok {
continue
}
for i, att := range atts {
if i >= len(atts2) {
break
}
att2 := atts2[i]
if reflect.ValueOf(att.Ref).IsValid() && reflect.ValueOf(att2.Ref).IsValid() {
if err1 := fn(att.Ref, att2.Ref); err1 != nil && err == nil {
err = err1
}
}
}
}
return err
}
@ -118,15 +152,28 @@ func ConvertResult[U any, V any](r *Result[U], fn func(U) (V, error)) (*Result[V
r2.Refs = map[string]V{}
}
for k, r := range r.Refs {
if reflect.ValueOf(r).IsValid() {
r2.Refs[k], err = fn(r)
if err != nil {
return nil, err
}
if !reflect.ValueOf(r).IsValid() {
continue
}
r2.Refs[k], err = fn(r)
if err != nil {
return nil, err
}
}
if r.Attestations != nil {
r2.Attestations = map[string][]Attestation[V]{}
}
for k, as := range r.Attestations {
for _, a := range as {
a2, err := ConvertAttestation(&a, fn)
if err != nil {
return nil, err
}
r2.Attestations[k] = append(r2.Attestations[k], *a2)
}
}
r2.Attestations = r.Attestations
r2.Metadata = r.Metadata
return r2, nil