| // Code generated by protoc-gen-go. |
| // source: project_config.proto |
| // DO NOT EDIT! |
| |
| /* |
| Package buildbucket is a generated protocol buffer package. |
| |
| It is generated from these files: |
| project_config.proto |
| |
| It has these top-level messages: |
| Acl |
| Swarming |
| Bucket |
| BuildbucketCfg |
| */ |
| package buildbucket |
| |
| import proto "github.com/golang/protobuf/proto" |
| import fmt "fmt" |
| import math "math" |
| |
| // Reference imports to suppress errors if they are not otherwise used. |
| var _ = proto.Marshal |
| var _ = fmt.Errorf |
| var _ = math.Inf |
| |
| // This is a compile-time assertion to ensure that this generated file |
| // is compatible with the proto package it is being compiled against. |
| // A compilation error at this line likely means your copy of the |
| // proto package needs to be updated. |
| const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package |
| |
| type Acl_Role int32 |
| |
| const ( |
| // Can do read-only operations, such as search for builds. |
| Acl_READER Acl_Role = 0 |
| // Same as READER + can schedule and cancel builds. |
| Acl_SCHEDULER Acl_Role = 1 |
| // Can do all write operations. |
| Acl_WRITER Acl_Role = 2 |
| ) |
| |
| var Acl_Role_name = map[int32]string{ |
| 0: "READER", |
| 1: "SCHEDULER", |
| 2: "WRITER", |
| } |
| var Acl_Role_value = map[string]int32{ |
| "READER": 0, |
| "SCHEDULER": 1, |
| "WRITER": 2, |
| } |
| |
| func (x Acl_Role) Enum() *Acl_Role { |
| p := new(Acl_Role) |
| *p = x |
| return p |
| } |
| func (x Acl_Role) String() string { |
| return proto.EnumName(Acl_Role_name, int32(x)) |
| } |
| func (x *Acl_Role) UnmarshalJSON(data []byte) error { |
| value, err := proto.UnmarshalJSONEnum(Acl_Role_value, data, "Acl_Role") |
| if err != nil { |
| return err |
| } |
| *x = Acl_Role(value) |
| return nil |
| } |
| func (Acl_Role) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } |
| |
| // A single access control rule. |
| type Acl struct { |
| // Role denotes a list of actions that an identity can perform. |
| Role *Acl_Role `protobuf:"varint,1,opt,name=role,enum=buildbucket.Acl_Role" json:"role,omitempty"` |
| // Name of the group defined in the auth service. |
| Group *string `protobuf:"bytes,2,opt,name=group" json:"group,omitempty"` |
| // An email address or a full identity string "kind:name". See auth service |
| // on kinds of identities. Anonymous users are "anonymous:anonymous". |
| // Either identity or group must be present, not both. |
| Identity *string `protobuf:"bytes,3,opt,name=identity" json:"identity,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *Acl) Reset() { *m = Acl{} } |
| func (m *Acl) String() string { return proto.CompactTextString(m) } |
| func (*Acl) ProtoMessage() {} |
| func (*Acl) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } |
| |
| func (m *Acl) GetRole() Acl_Role { |
| if m != nil && m.Role != nil { |
| return *m.Role |
| } |
| return Acl_READER |
| } |
| |
| func (m *Acl) GetGroup() string { |
| if m != nil && m.Group != nil { |
| return *m.Group |
| } |
| return "" |
| } |
| |
| func (m *Acl) GetIdentity() string { |
| if m != nil && m.Identity != nil { |
| return *m.Identity |
| } |
| return "" |
| } |
| |
| // Configuration of buildbucket-swarming integration for one bucket. |
| type Swarming struct { |
| // Hostname of the swarming instance, e.g. "chromium-swarm.appspot.com". |
| Hostname *string `protobuf:"bytes,1,opt,name=hostname" json:"hostname,omitempty"` |
| // Used to generate a URL for Build, may contain parameters |
| // {swarming_hostname}, {task_id}, {bucket} and {builder}. Defaults to: |
| // https://{swarming_hostname}/user/task/{task_id} |
| UrlFormat *string `protobuf:"bytes,2,opt,name=url_format,json=urlFormat" json:"url_format,omitempty"` |
| // Defines default values for builders. |
| BuilderDefaults *Swarming_Builder `protobuf:"bytes,9,opt,name=builder_defaults,json=builderDefaults" json:"builder_defaults,omitempty"` |
| // DEPRECATED: use builder_defaults. |
| // Will be put to all swarming tasks. |
| CommonSwarmingTags []string `protobuf:"bytes,3,rep,name=common_swarming_tags,json=commonSwarmingTags" json:"common_swarming_tags,omitempty"` |
| // DEPRECATED: use builder_defaults. |
| // Colon-delimited key-value pair of common task dimensions. |
| // |
| // If value is not specified ("<key>:"), then it excludes a value for the |
| // same key specified in swarming task template. |
| CommonDimensions []string `protobuf:"bytes,4,rep,name=common_dimensions,json=commonDimensions" json:"common_dimensions,omitempty"` |
| // Configuration for each builder. |
| // Swarming tasks are created only for builds for builders that are not |
| // explicitly specified. |
| Builders []*Swarming_Builder `protobuf:"bytes,5,rep,name=builders" json:"builders,omitempty"` |
| // DEPRECATED: use builder_defaults. |
| // Defines a default recipe for all builders in this bucket. |
| // A builder may override it or parts of it with something else. |
| CommonRecipe *Swarming_Recipe `protobuf:"bytes,6,opt,name=common_recipe,json=commonRecipe" json:"common_recipe,omitempty"` |
| // DEPRECATED: use builder_defaults. |
| // Maximum build execution time. Not to be confused with pending time. |
| // If not set, defaults to server defaults. |
| CommonExecutionTimeoutSecs *uint32 `protobuf:"varint,7,opt,name=common_execution_timeout_secs,json=commonExecutionTimeoutSecs" json:"common_execution_timeout_secs,omitempty"` |
| // Percentage of builds that should use a canary swarming task template. |
| // A value from 0 to 100. |
| TaskTemplateCanaryPercentage *uint32 `protobuf:"varint,8,opt,name=task_template_canary_percentage,json=taskTemplateCanaryPercentage" json:"task_template_canary_percentage,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *Swarming) Reset() { *m = Swarming{} } |
| func (m *Swarming) String() string { return proto.CompactTextString(m) } |
| func (*Swarming) ProtoMessage() {} |
| func (*Swarming) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } |
| |
| func (m *Swarming) GetHostname() string { |
| if m != nil && m.Hostname != nil { |
| return *m.Hostname |
| } |
| return "" |
| } |
| |
| func (m *Swarming) GetUrlFormat() string { |
| if m != nil && m.UrlFormat != nil { |
| return *m.UrlFormat |
| } |
| return "" |
| } |
| |
| func (m *Swarming) GetBuilderDefaults() *Swarming_Builder { |
| if m != nil { |
| return m.BuilderDefaults |
| } |
| return nil |
| } |
| |
| func (m *Swarming) GetCommonSwarmingTags() []string { |
| if m != nil { |
| return m.CommonSwarmingTags |
| } |
| return nil |
| } |
| |
| func (m *Swarming) GetCommonDimensions() []string { |
| if m != nil { |
| return m.CommonDimensions |
| } |
| return nil |
| } |
| |
| func (m *Swarming) GetBuilders() []*Swarming_Builder { |
| if m != nil { |
| return m.Builders |
| } |
| return nil |
| } |
| |
| func (m *Swarming) GetCommonRecipe() *Swarming_Recipe { |
| if m != nil { |
| return m.CommonRecipe |
| } |
| return nil |
| } |
| |
| func (m *Swarming) GetCommonExecutionTimeoutSecs() uint32 { |
| if m != nil && m.CommonExecutionTimeoutSecs != nil { |
| return *m.CommonExecutionTimeoutSecs |
| } |
| return 0 |
| } |
| |
| func (m *Swarming) GetTaskTemplateCanaryPercentage() uint32 { |
| if m != nil && m.TaskTemplateCanaryPercentage != nil { |
| return *m.TaskTemplateCanaryPercentage |
| } |
| return 0 |
| } |
| |
| type Swarming_Recipe struct { |
| // Repository URL of the recipe package. |
| Repository *string `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"` |
| // Name of the recipe to run. |
| Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` |
| // colon-separated build properties to set. |
| // A property can be overriden by "properties" build parameter. |
| // |
| // Use this field for string properties and use properties_j for other |
| // types. |
| Properties []string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty"` |
| // Same as properties, but the value must valid JSON. For example |
| // properties_j: "a:1" |
| // means property a is a number 1, not string "1". |
| // |
| // If null, it means no property must be defined. In particular, it removes |
| // a default value for the property, if any. |
| // |
| // Fields properties and properties_j can be used together, but cannot both |
| // specify values for same property. |
| PropertiesJ []string `protobuf:"bytes,4,rep,name=properties_j,json=propertiesJ" json:"properties_j,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *Swarming_Recipe) Reset() { *m = Swarming_Recipe{} } |
| func (m *Swarming_Recipe) String() string { return proto.CompactTextString(m) } |
| func (*Swarming_Recipe) ProtoMessage() {} |
| func (*Swarming_Recipe) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } |
| |
| func (m *Swarming_Recipe) GetRepository() string { |
| if m != nil && m.Repository != nil { |
| return *m.Repository |
| } |
| return "" |
| } |
| |
| func (m *Swarming_Recipe) GetName() string { |
| if m != nil && m.Name != nil { |
| return *m.Name |
| } |
| return "" |
| } |
| |
| func (m *Swarming_Recipe) GetProperties() []string { |
| if m != nil { |
| return m.Properties |
| } |
| return nil |
| } |
| |
| func (m *Swarming_Recipe) GetPropertiesJ() []string { |
| if m != nil { |
| return m.PropertiesJ |
| } |
| return nil |
| } |
| |
| // A builder has a name, a category and specifies what should happen if a |
| // build is scheduled to that builder. |
| // |
| // SECURITY WARNING: if adding more fields to this message, keep in mind that |
| // a user that has permissions to schedule a build to the bucket, can override |
| // this config. |
| type Swarming_Builder struct { |
| // Name of the builder. Will be propagated to "builder" build tag and |
| // "buildername" recipe property. |
| Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` |
| // Builder category. Will be used for visual grouping, for example in Code Review. |
| Category *string `protobuf:"bytes,6,opt,name=category" json:"category,omitempty"` |
| // Will be become to swarming task tags. |
| // Each tag will end up in "swarming_tag" buildbucket tag, for example |
| // "swarming_tag:builder:release" |
| SwarmingTags []string `protobuf:"bytes,2,rep,name=swarming_tags,json=swarmingTags" json:"swarming_tags,omitempty"` |
| // Colon-delimited key-value pair of task dimensions. |
| // |
| // If value is not specified ("<key>:"), then it excludes a default value. |
| Dimensions []string `protobuf:"bytes,3,rep,name=dimensions" json:"dimensions,omitempty"` |
| // Specifies that a recipe to run. |
| Recipe *Swarming_Recipe `protobuf:"bytes,4,opt,name=recipe" json:"recipe,omitempty"` |
| // Swarming task priority. |
| Priority *uint32 `protobuf:"varint,5,opt,name=priority" json:"priority,omitempty"` |
| // Maximum build execution time. Not to be confused with pending time. |
| ExecutionTimeoutSecs *uint32 `protobuf:"varint,7,opt,name=execution_timeout_secs,json=executionTimeoutSecs" json:"execution_timeout_secs,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *Swarming_Builder) Reset() { *m = Swarming_Builder{} } |
| func (m *Swarming_Builder) String() string { return proto.CompactTextString(m) } |
| func (*Swarming_Builder) ProtoMessage() {} |
| func (*Swarming_Builder) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} } |
| |
| func (m *Swarming_Builder) GetName() string { |
| if m != nil && m.Name != nil { |
| return *m.Name |
| } |
| return "" |
| } |
| |
| func (m *Swarming_Builder) GetCategory() string { |
| if m != nil && m.Category != nil { |
| return *m.Category |
| } |
| return "" |
| } |
| |
| func (m *Swarming_Builder) GetSwarmingTags() []string { |
| if m != nil { |
| return m.SwarmingTags |
| } |
| return nil |
| } |
| |
| func (m *Swarming_Builder) GetDimensions() []string { |
| if m != nil { |
| return m.Dimensions |
| } |
| return nil |
| } |
| |
| func (m *Swarming_Builder) GetRecipe() *Swarming_Recipe { |
| if m != nil { |
| return m.Recipe |
| } |
| return nil |
| } |
| |
| func (m *Swarming_Builder) GetPriority() uint32 { |
| if m != nil && m.Priority != nil { |
| return *m.Priority |
| } |
| return 0 |
| } |
| |
| func (m *Swarming_Builder) GetExecutionTimeoutSecs() uint32 { |
| if m != nil && m.ExecutionTimeoutSecs != nil { |
| return *m.ExecutionTimeoutSecs |
| } |
| return 0 |
| } |
| |
| // Defines one bucket in buildbucket.cfg |
| type Bucket struct { |
| // Name of the bucket. Names are unique within one instance of buildbucket. |
| // If another project already uses this name, a config will be rejected. |
| // Name reservation is first-come first-serve. |
| Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` |
| // List of access control rules for the bucket. |
| Acls []*Acl `protobuf:"bytes,2,rep,name=acls" json:"acls,omitempty"` |
| // Buildbucket-swarming integration. |
| Swarming *Swarming `protobuf:"bytes,3,opt,name=swarming" json:"swarming,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *Bucket) Reset() { *m = Bucket{} } |
| func (m *Bucket) String() string { return proto.CompactTextString(m) } |
| func (*Bucket) ProtoMessage() {} |
| func (*Bucket) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } |
| |
| func (m *Bucket) GetName() string { |
| if m != nil && m.Name != nil { |
| return *m.Name |
| } |
| return "" |
| } |
| |
| func (m *Bucket) GetAcls() []*Acl { |
| if m != nil { |
| return m.Acls |
| } |
| return nil |
| } |
| |
| func (m *Bucket) GetSwarming() *Swarming { |
| if m != nil { |
| return m.Swarming |
| } |
| return nil |
| } |
| |
| // Schema of buildbucket.cfg file, a project config. |
| type BuildbucketCfg struct { |
| // All buckets defined for this project. |
| Buckets []*Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"` |
| XXX_unrecognized []byte `json:"-"` |
| } |
| |
| func (m *BuildbucketCfg) Reset() { *m = BuildbucketCfg{} } |
| func (m *BuildbucketCfg) String() string { return proto.CompactTextString(m) } |
| func (*BuildbucketCfg) ProtoMessage() {} |
| func (*BuildbucketCfg) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } |
| |
| func (m *BuildbucketCfg) GetBuckets() []*Bucket { |
| if m != nil { |
| return m.Buckets |
| } |
| return nil |
| } |
| |
| func init() { |
| proto.RegisterType((*Acl)(nil), "buildbucket.Acl") |
| proto.RegisterType((*Swarming)(nil), "buildbucket.Swarming") |
| proto.RegisterType((*Swarming_Recipe)(nil), "buildbucket.Swarming.Recipe") |
| proto.RegisterType((*Swarming_Builder)(nil), "buildbucket.Swarming.Builder") |
| proto.RegisterType((*Bucket)(nil), "buildbucket.Bucket") |
| proto.RegisterType((*BuildbucketCfg)(nil), "buildbucket.BuildbucketCfg") |
| proto.RegisterEnum("buildbucket.Acl_Role", Acl_Role_name, Acl_Role_value) |
| } |
| |
| func init() { proto.RegisterFile("project_config.proto", fileDescriptor0) } |
| |
| var fileDescriptor0 = []byte{ |
| // 616 bytes of a gzipped FileDescriptorProto |
| 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x94, 0x4b, 0x6f, 0xd3, 0x40, |
| 0x10, 0xc7, 0x49, 0x9a, 0xe6, 0x31, 0x69, 0x4a, 0x58, 0x02, 0xb2, 0xa2, 0x96, 0x47, 0xe0, 0x00, |
| 0x42, 0x8d, 0xa0, 0xe2, 0xc2, 0x09, 0xb5, 0x4d, 0x50, 0x41, 0x1c, 0xd0, 0x36, 0x88, 0xa3, 0xe5, |
| 0x6e, 0x36, 0xc6, 0xad, 0xed, 0xb5, 0x76, 0xd7, 0x82, 0x9e, 0xe0, 0xc4, 0x9d, 0x6f, 0xcc, 0x78, |
| 0x77, 0xed, 0xb8, 0x55, 0x04, 0xdc, 0x32, 0x33, 0xbf, 0x99, 0xf9, 0x8f, 0x67, 0xb2, 0x30, 0xca, |
| 0xa4, 0xb8, 0xe0, 0x4c, 0xfb, 0x4c, 0xa4, 0xab, 0x28, 0x9c, 0xa2, 0xa9, 0x05, 0xe9, 0x9f, 0xe7, |
| 0x51, 0xbc, 0x3c, 0xcf, 0xd9, 0x25, 0xd7, 0x93, 0xdf, 0x0d, 0xd8, 0x3a, 0x62, 0x31, 0x79, 0x0e, |
| 0x2d, 0x29, 0x62, 0xee, 0x35, 0x1e, 0x35, 0x9e, 0xed, 0x1e, 0xde, 0x9b, 0xd6, 0x98, 0x29, 0xc6, |
| 0xa7, 0x14, 0x83, 0xd4, 0x20, 0x64, 0x04, 0xdb, 0xa1, 0x14, 0x79, 0xe6, 0x35, 0x91, 0xed, 0x51, |
| 0x6b, 0x90, 0x31, 0x74, 0xa3, 0x25, 0x4f, 0x75, 0xa4, 0xaf, 0xbc, 0x2d, 0x13, 0xa8, 0xec, 0xc9, |
| 0x01, 0xb4, 0x8a, 0x7c, 0x02, 0xd0, 0xa6, 0xf3, 0xa3, 0xd9, 0x9c, 0x0e, 0x6f, 0x91, 0x01, 0xf4, |
| 0xce, 0x4e, 0x4e, 0xe7, 0xb3, 0xcf, 0x1f, 0xd1, 0x6c, 0x14, 0xa1, 0x2f, 0xf4, 0xfd, 0x02, 0x7f, |
| 0x37, 0x27, 0x3f, 0x3b, 0xd0, 0x3d, 0xfb, 0x16, 0xc8, 0x24, 0x4a, 0xc3, 0xa2, 0xee, 0x57, 0xa1, |
| 0x74, 0x1a, 0x24, 0x56, 0x1c, 0xd6, 0x2d, 0x6d, 0xb2, 0x0f, 0x90, 0xcb, 0xd8, 0x5f, 0x09, 0x99, |
| 0x04, 0xda, 0xc9, 0xe9, 0xa1, 0xe7, 0x9d, 0x71, 0x90, 0x53, 0x18, 0x9a, 0x31, 0xb8, 0xf4, 0x97, |
| 0x7c, 0x15, 0xe4, 0xb1, 0x56, 0x5e, 0x0f, 0xa1, 0xfe, 0xe1, 0xfe, 0xb5, 0xf9, 0xca, 0x5e, 0xd3, |
| 0x63, 0x4b, 0xd3, 0xdb, 0x2e, 0x6d, 0xe6, 0xb2, 0xc8, 0x4b, 0x18, 0x31, 0x91, 0x24, 0x22, 0xf5, |
| 0x95, 0x63, 0x7d, 0x1d, 0x84, 0x0a, 0x07, 0xdd, 0xc2, 0x96, 0xc4, 0xc6, 0xca, 0x32, 0x0b, 0x8c, |
| 0x90, 0x17, 0x70, 0xc7, 0x65, 0x2c, 0xa3, 0x84, 0xa7, 0x2a, 0x12, 0xa9, 0xf2, 0x5a, 0x06, 0x1f, |
| 0xda, 0xc0, 0xac, 0xf2, 0x93, 0x37, 0xd0, 0x75, 0x1d, 0x95, 0xb7, 0x8d, 0xcc, 0x3f, 0x05, 0x56, |
| 0x38, 0x39, 0x82, 0x81, 0xeb, 0x23, 0x39, 0x8b, 0x32, 0xee, 0xb5, 0xcd, 0x80, 0x7b, 0x9b, 0xf3, |
| 0xa9, 0x61, 0xe8, 0x8e, 0x4d, 0xb1, 0x16, 0x96, 0xd8, 0x77, 0x25, 0xf8, 0x77, 0xce, 0x72, 0x8d, |
| 0x92, 0x7c, 0x8d, 0xe2, 0x44, 0xae, 0x7d, 0xc5, 0x99, 0xf2, 0x3a, 0x58, 0x72, 0x40, 0xc7, 0x16, |
| 0x9a, 0x97, 0xcc, 0xc2, 0x22, 0x67, 0x48, 0x90, 0x39, 0x3c, 0xd4, 0x81, 0xba, 0xf4, 0x35, 0x4f, |
| 0xb2, 0x38, 0xd0, 0xdc, 0x67, 0x41, 0x1a, 0xc8, 0x2b, 0x3f, 0xe3, 0x92, 0xe1, 0x0d, 0x04, 0x21, |
| 0xf7, 0xba, 0xa6, 0xc8, 0x5e, 0x81, 0x2d, 0x1c, 0x75, 0x62, 0xa0, 0x4f, 0x15, 0x33, 0xfe, 0x81, |
| 0xf7, 0x61, 0x35, 0x3d, 0x00, 0x90, 0x3c, 0x13, 0x2a, 0xd2, 0x42, 0x5e, 0xb9, 0xbd, 0xd7, 0x3c, |
| 0x84, 0x40, 0xcb, 0x5c, 0x84, 0xdd, 0xb9, 0xf9, 0x5d, 0xe4, 0xe0, 0x81, 0x63, 0x4b, 0x1d, 0xf1, |
| 0x72, 0x35, 0x35, 0x0f, 0x79, 0x0c, 0x3b, 0x6b, 0xcb, 0xbf, 0x70, 0xdb, 0xe8, 0xaf, 0x7d, 0x1f, |
| 0xc6, 0xbf, 0x9a, 0xd0, 0x71, 0xdf, 0xb8, 0x6a, 0xd1, 0xa8, 0xb5, 0xc0, 0x63, 0x64, 0x28, 0x3c, |
| 0x2c, 0x44, 0xb5, 0xed, 0x31, 0x96, 0x36, 0x79, 0x02, 0x83, 0xeb, 0xc7, 0xd1, 0x34, 0xf5, 0x77, |
| 0x54, 0xfd, 0x2c, 0x50, 0x63, 0xed, 0x1e, 0x9c, 0xc6, 0xb5, 0x87, 0xbc, 0x86, 0xb6, 0xdb, 0x63, |
| 0xeb, 0x3f, 0xf6, 0xe8, 0xd8, 0x42, 0x56, 0x26, 0x23, 0x21, 0x8b, 0xff, 0xde, 0xb6, 0xf9, 0xce, |
| 0x95, 0x8d, 0x15, 0xef, 0xff, 0x75, 0xad, 0x23, 0xbe, 0x61, 0xa1, 0x93, 0x1c, 0xda, 0xc7, 0xa6, |
| 0xe7, 0xc6, 0xcf, 0xf0, 0x14, 0x5a, 0x01, 0x8b, 0xed, 0x84, 0xfd, 0xc3, 0xe1, 0xcd, 0xc7, 0x82, |
| 0x9a, 0x28, 0x79, 0x05, 0xdd, 0x72, 0x76, 0xf3, 0x22, 0xf4, 0x6f, 0x3c, 0x2b, 0xe5, 0x34, 0xb4, |
| 0xc2, 0x26, 0x6f, 0x61, 0xf7, 0x78, 0x4d, 0x9c, 0xac, 0x42, 0x72, 0x00, 0x1d, 0x6b, 0x28, 0x54, |
| 0x50, 0x74, 0xbb, 0x7b, 0xad, 0x86, 0x15, 0x49, 0x4b, 0xe6, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, |
| 0x18, 0xe5, 0xf2, 0x3c, 0xf2, 0x04, 0x00, 0x00, |
| } |