github.com/hyperledger/fabric-protos-go@v0.3.3/common/policies.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: common/policies.proto 3 4 package common 5 6 import ( 7 fmt "fmt" 8 proto "github.com/golang/protobuf/proto" 9 msp "github.com/hyperledger/fabric-protos-go/msp" 10 math "math" 11 ) 12 13 // Reference imports to suppress errors if they are not otherwise used. 14 var _ = proto.Marshal 15 var _ = fmt.Errorf 16 var _ = math.Inf 17 18 // This is a compile-time assertion to ensure that this generated file 19 // is compatible with the proto package it is being compiled against. 20 // A compilation error at this line likely means your copy of the 21 // proto package needs to be updated. 22 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 23 24 type Policy_PolicyType int32 25 26 const ( 27 Policy_UNKNOWN Policy_PolicyType = 0 28 Policy_SIGNATURE Policy_PolicyType = 1 29 Policy_MSP Policy_PolicyType = 2 30 Policy_IMPLICIT_META Policy_PolicyType = 3 31 ) 32 33 var Policy_PolicyType_name = map[int32]string{ 34 0: "UNKNOWN", 35 1: "SIGNATURE", 36 2: "MSP", 37 3: "IMPLICIT_META", 38 } 39 40 var Policy_PolicyType_value = map[string]int32{ 41 "UNKNOWN": 0, 42 "SIGNATURE": 1, 43 "MSP": 2, 44 "IMPLICIT_META": 3, 45 } 46 47 func (x Policy_PolicyType) String() string { 48 return proto.EnumName(Policy_PolicyType_name, int32(x)) 49 } 50 51 func (Policy_PolicyType) EnumDescriptor() ([]byte, []int) { 52 return fileDescriptor_0d02cf0d453425a3, []int{0, 0} 53 } 54 55 type ImplicitMetaPolicy_Rule int32 56 57 const ( 58 ImplicitMetaPolicy_ANY ImplicitMetaPolicy_Rule = 0 59 ImplicitMetaPolicy_ALL ImplicitMetaPolicy_Rule = 1 60 ImplicitMetaPolicy_MAJORITY ImplicitMetaPolicy_Rule = 2 61 ) 62 63 var ImplicitMetaPolicy_Rule_name = map[int32]string{ 64 0: "ANY", 65 1: "ALL", 66 2: "MAJORITY", 67 } 68 69 var ImplicitMetaPolicy_Rule_value = map[string]int32{ 70 "ANY": 0, 71 "ALL": 1, 72 "MAJORITY": 2, 73 } 74 75 func (x ImplicitMetaPolicy_Rule) String() string { 76 return proto.EnumName(ImplicitMetaPolicy_Rule_name, int32(x)) 77 } 78 79 func (ImplicitMetaPolicy_Rule) EnumDescriptor() ([]byte, []int) { 80 return fileDescriptor_0d02cf0d453425a3, []int{3, 0} 81 } 82 83 // Policy expresses a policy which the orderer can evaluate, because there has been some desire expressed to support 84 // multiple policy engines, this is typed as a oneof for now 85 type Policy struct { 86 Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` 87 Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 88 XXX_NoUnkeyedLiteral struct{} `json:"-"` 89 XXX_unrecognized []byte `json:"-"` 90 XXX_sizecache int32 `json:"-"` 91 } 92 93 func (m *Policy) Reset() { *m = Policy{} } 94 func (m *Policy) String() string { return proto.CompactTextString(m) } 95 func (*Policy) ProtoMessage() {} 96 func (*Policy) Descriptor() ([]byte, []int) { 97 return fileDescriptor_0d02cf0d453425a3, []int{0} 98 } 99 100 func (m *Policy) XXX_Unmarshal(b []byte) error { 101 return xxx_messageInfo_Policy.Unmarshal(m, b) 102 } 103 func (m *Policy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 104 return xxx_messageInfo_Policy.Marshal(b, m, deterministic) 105 } 106 func (m *Policy) XXX_Merge(src proto.Message) { 107 xxx_messageInfo_Policy.Merge(m, src) 108 } 109 func (m *Policy) XXX_Size() int { 110 return xxx_messageInfo_Policy.Size(m) 111 } 112 func (m *Policy) XXX_DiscardUnknown() { 113 xxx_messageInfo_Policy.DiscardUnknown(m) 114 } 115 116 var xxx_messageInfo_Policy proto.InternalMessageInfo 117 118 func (m *Policy) GetType() int32 { 119 if m != nil { 120 return m.Type 121 } 122 return 0 123 } 124 125 func (m *Policy) GetValue() []byte { 126 if m != nil { 127 return m.Value 128 } 129 return nil 130 } 131 132 // SignaturePolicyEnvelope wraps a SignaturePolicy and includes a version for future enhancements 133 type SignaturePolicyEnvelope struct { 134 Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` 135 Rule *SignaturePolicy `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"` 136 Identities []*msp.MSPPrincipal `protobuf:"bytes,3,rep,name=identities,proto3" json:"identities,omitempty"` 137 XXX_NoUnkeyedLiteral struct{} `json:"-"` 138 XXX_unrecognized []byte `json:"-"` 139 XXX_sizecache int32 `json:"-"` 140 } 141 142 func (m *SignaturePolicyEnvelope) Reset() { *m = SignaturePolicyEnvelope{} } 143 func (m *SignaturePolicyEnvelope) String() string { return proto.CompactTextString(m) } 144 func (*SignaturePolicyEnvelope) ProtoMessage() {} 145 func (*SignaturePolicyEnvelope) Descriptor() ([]byte, []int) { 146 return fileDescriptor_0d02cf0d453425a3, []int{1} 147 } 148 149 func (m *SignaturePolicyEnvelope) XXX_Unmarshal(b []byte) error { 150 return xxx_messageInfo_SignaturePolicyEnvelope.Unmarshal(m, b) 151 } 152 func (m *SignaturePolicyEnvelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 153 return xxx_messageInfo_SignaturePolicyEnvelope.Marshal(b, m, deterministic) 154 } 155 func (m *SignaturePolicyEnvelope) XXX_Merge(src proto.Message) { 156 xxx_messageInfo_SignaturePolicyEnvelope.Merge(m, src) 157 } 158 func (m *SignaturePolicyEnvelope) XXX_Size() int { 159 return xxx_messageInfo_SignaturePolicyEnvelope.Size(m) 160 } 161 func (m *SignaturePolicyEnvelope) XXX_DiscardUnknown() { 162 xxx_messageInfo_SignaturePolicyEnvelope.DiscardUnknown(m) 163 } 164 165 var xxx_messageInfo_SignaturePolicyEnvelope proto.InternalMessageInfo 166 167 func (m *SignaturePolicyEnvelope) GetVersion() int32 { 168 if m != nil { 169 return m.Version 170 } 171 return 0 172 } 173 174 func (m *SignaturePolicyEnvelope) GetRule() *SignaturePolicy { 175 if m != nil { 176 return m.Rule 177 } 178 return nil 179 } 180 181 func (m *SignaturePolicyEnvelope) GetIdentities() []*msp.MSPPrincipal { 182 if m != nil { 183 return m.Identities 184 } 185 return nil 186 } 187 188 // SignaturePolicy is a recursive message structure which defines a featherweight DSL for describing 189 // policies which are more complicated than 'exactly this signature'. The NOutOf operator is sufficent 190 // to express AND as well as OR, as well as of course N out of the following M policies 191 // SignedBy implies that the signature is from a valid certificate which is signed by the trusted 192 // authority specified in the bytes. This will be the certificate itself for a self-signed certificate 193 // and will be the CA for more traditional certificates 194 type SignaturePolicy struct { 195 // Types that are valid to be assigned to Type: 196 // 197 // *SignaturePolicy_SignedBy 198 // *SignaturePolicy_NOutOf_ 199 Type isSignaturePolicy_Type `protobuf_oneof:"Type"` 200 XXX_NoUnkeyedLiteral struct{} `json:"-"` 201 XXX_unrecognized []byte `json:"-"` 202 XXX_sizecache int32 `json:"-"` 203 } 204 205 func (m *SignaturePolicy) Reset() { *m = SignaturePolicy{} } 206 func (m *SignaturePolicy) String() string { return proto.CompactTextString(m) } 207 func (*SignaturePolicy) ProtoMessage() {} 208 func (*SignaturePolicy) Descriptor() ([]byte, []int) { 209 return fileDescriptor_0d02cf0d453425a3, []int{2} 210 } 211 212 func (m *SignaturePolicy) XXX_Unmarshal(b []byte) error { 213 return xxx_messageInfo_SignaturePolicy.Unmarshal(m, b) 214 } 215 func (m *SignaturePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 216 return xxx_messageInfo_SignaturePolicy.Marshal(b, m, deterministic) 217 } 218 func (m *SignaturePolicy) XXX_Merge(src proto.Message) { 219 xxx_messageInfo_SignaturePolicy.Merge(m, src) 220 } 221 func (m *SignaturePolicy) XXX_Size() int { 222 return xxx_messageInfo_SignaturePolicy.Size(m) 223 } 224 func (m *SignaturePolicy) XXX_DiscardUnknown() { 225 xxx_messageInfo_SignaturePolicy.DiscardUnknown(m) 226 } 227 228 var xxx_messageInfo_SignaturePolicy proto.InternalMessageInfo 229 230 type isSignaturePolicy_Type interface { 231 isSignaturePolicy_Type() 232 } 233 234 type SignaturePolicy_SignedBy struct { 235 SignedBy int32 `protobuf:"varint,1,opt,name=signed_by,json=signedBy,proto3,oneof"` 236 } 237 238 type SignaturePolicy_NOutOf_ struct { 239 NOutOf *SignaturePolicy_NOutOf `protobuf:"bytes,2,opt,name=n_out_of,json=nOutOf,proto3,oneof"` 240 } 241 242 func (*SignaturePolicy_SignedBy) isSignaturePolicy_Type() {} 243 244 func (*SignaturePolicy_NOutOf_) isSignaturePolicy_Type() {} 245 246 func (m *SignaturePolicy) GetType() isSignaturePolicy_Type { 247 if m != nil { 248 return m.Type 249 } 250 return nil 251 } 252 253 func (m *SignaturePolicy) GetSignedBy() int32 { 254 if x, ok := m.GetType().(*SignaturePolicy_SignedBy); ok { 255 return x.SignedBy 256 } 257 return 0 258 } 259 260 func (m *SignaturePolicy) GetNOutOf() *SignaturePolicy_NOutOf { 261 if x, ok := m.GetType().(*SignaturePolicy_NOutOf_); ok { 262 return x.NOutOf 263 } 264 return nil 265 } 266 267 // XXX_OneofWrappers is for the internal use of the proto package. 268 func (*SignaturePolicy) XXX_OneofWrappers() []interface{} { 269 return []interface{}{ 270 (*SignaturePolicy_SignedBy)(nil), 271 (*SignaturePolicy_NOutOf_)(nil), 272 } 273 } 274 275 type SignaturePolicy_NOutOf struct { 276 N int32 `protobuf:"varint,1,opt,name=n,proto3" json:"n,omitempty"` 277 Rules []*SignaturePolicy `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"` 278 XXX_NoUnkeyedLiteral struct{} `json:"-"` 279 XXX_unrecognized []byte `json:"-"` 280 XXX_sizecache int32 `json:"-"` 281 } 282 283 func (m *SignaturePolicy_NOutOf) Reset() { *m = SignaturePolicy_NOutOf{} } 284 func (m *SignaturePolicy_NOutOf) String() string { return proto.CompactTextString(m) } 285 func (*SignaturePolicy_NOutOf) ProtoMessage() {} 286 func (*SignaturePolicy_NOutOf) Descriptor() ([]byte, []int) { 287 return fileDescriptor_0d02cf0d453425a3, []int{2, 0} 288 } 289 290 func (m *SignaturePolicy_NOutOf) XXX_Unmarshal(b []byte) error { 291 return xxx_messageInfo_SignaturePolicy_NOutOf.Unmarshal(m, b) 292 } 293 func (m *SignaturePolicy_NOutOf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 294 return xxx_messageInfo_SignaturePolicy_NOutOf.Marshal(b, m, deterministic) 295 } 296 func (m *SignaturePolicy_NOutOf) XXX_Merge(src proto.Message) { 297 xxx_messageInfo_SignaturePolicy_NOutOf.Merge(m, src) 298 } 299 func (m *SignaturePolicy_NOutOf) XXX_Size() int { 300 return xxx_messageInfo_SignaturePolicy_NOutOf.Size(m) 301 } 302 func (m *SignaturePolicy_NOutOf) XXX_DiscardUnknown() { 303 xxx_messageInfo_SignaturePolicy_NOutOf.DiscardUnknown(m) 304 } 305 306 var xxx_messageInfo_SignaturePolicy_NOutOf proto.InternalMessageInfo 307 308 func (m *SignaturePolicy_NOutOf) GetN() int32 { 309 if m != nil { 310 return m.N 311 } 312 return 0 313 } 314 315 func (m *SignaturePolicy_NOutOf) GetRules() []*SignaturePolicy { 316 if m != nil { 317 return m.Rules 318 } 319 return nil 320 } 321 322 // ImplicitMetaPolicy is a policy type which depends on the hierarchical nature of the configuration 323 // It is implicit because the rule is generate implicitly based on the number of sub policies 324 // It is meta because it depends only on the result of other policies 325 // When evaluated, this policy iterates over all immediate child sub-groups, retrieves the policy 326 // of name sub_policy, evaluates the collection and applies the rule. 327 // For example, with 4 sub-groups, and a policy name of "foo", ImplicitMetaPolicy retrieves 328 // each sub-group, retrieves policy "foo" for each subgroup, evaluates it, and, in the case of ANY 329 // 1 satisfied is sufficient, ALL would require 4 signatures, and MAJORITY would require 3 signatures. 330 type ImplicitMetaPolicy struct { 331 SubPolicy string `protobuf:"bytes,1,opt,name=sub_policy,json=subPolicy,proto3" json:"sub_policy,omitempty"` 332 Rule ImplicitMetaPolicy_Rule `protobuf:"varint,2,opt,name=rule,proto3,enum=common.ImplicitMetaPolicy_Rule" json:"rule,omitempty"` 333 XXX_NoUnkeyedLiteral struct{} `json:"-"` 334 XXX_unrecognized []byte `json:"-"` 335 XXX_sizecache int32 `json:"-"` 336 } 337 338 func (m *ImplicitMetaPolicy) Reset() { *m = ImplicitMetaPolicy{} } 339 func (m *ImplicitMetaPolicy) String() string { return proto.CompactTextString(m) } 340 func (*ImplicitMetaPolicy) ProtoMessage() {} 341 func (*ImplicitMetaPolicy) Descriptor() ([]byte, []int) { 342 return fileDescriptor_0d02cf0d453425a3, []int{3} 343 } 344 345 func (m *ImplicitMetaPolicy) XXX_Unmarshal(b []byte) error { 346 return xxx_messageInfo_ImplicitMetaPolicy.Unmarshal(m, b) 347 } 348 func (m *ImplicitMetaPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 349 return xxx_messageInfo_ImplicitMetaPolicy.Marshal(b, m, deterministic) 350 } 351 func (m *ImplicitMetaPolicy) XXX_Merge(src proto.Message) { 352 xxx_messageInfo_ImplicitMetaPolicy.Merge(m, src) 353 } 354 func (m *ImplicitMetaPolicy) XXX_Size() int { 355 return xxx_messageInfo_ImplicitMetaPolicy.Size(m) 356 } 357 func (m *ImplicitMetaPolicy) XXX_DiscardUnknown() { 358 xxx_messageInfo_ImplicitMetaPolicy.DiscardUnknown(m) 359 } 360 361 var xxx_messageInfo_ImplicitMetaPolicy proto.InternalMessageInfo 362 363 func (m *ImplicitMetaPolicy) GetSubPolicy() string { 364 if m != nil { 365 return m.SubPolicy 366 } 367 return "" 368 } 369 370 func (m *ImplicitMetaPolicy) GetRule() ImplicitMetaPolicy_Rule { 371 if m != nil { 372 return m.Rule 373 } 374 return ImplicitMetaPolicy_ANY 375 } 376 377 // ApplicationPolicy captures the diffenrent policy types that 378 // are set and evaluted at the application level. 379 // 380 // Deprecated: Do not use. 381 type ApplicationPolicy struct { 382 // Types that are valid to be assigned to Type: 383 // 384 // *ApplicationPolicy_SignaturePolicy 385 // *ApplicationPolicy_ChannelConfigPolicyReference 386 Type isApplicationPolicy_Type `protobuf_oneof:"Type"` 387 XXX_NoUnkeyedLiteral struct{} `json:"-"` 388 XXX_unrecognized []byte `json:"-"` 389 XXX_sizecache int32 `json:"-"` 390 } 391 392 func (m *ApplicationPolicy) Reset() { *m = ApplicationPolicy{} } 393 func (m *ApplicationPolicy) String() string { return proto.CompactTextString(m) } 394 func (*ApplicationPolicy) ProtoMessage() {} 395 func (*ApplicationPolicy) Descriptor() ([]byte, []int) { 396 return fileDescriptor_0d02cf0d453425a3, []int{4} 397 } 398 399 func (m *ApplicationPolicy) XXX_Unmarshal(b []byte) error { 400 return xxx_messageInfo_ApplicationPolicy.Unmarshal(m, b) 401 } 402 func (m *ApplicationPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 403 return xxx_messageInfo_ApplicationPolicy.Marshal(b, m, deterministic) 404 } 405 func (m *ApplicationPolicy) XXX_Merge(src proto.Message) { 406 xxx_messageInfo_ApplicationPolicy.Merge(m, src) 407 } 408 func (m *ApplicationPolicy) XXX_Size() int { 409 return xxx_messageInfo_ApplicationPolicy.Size(m) 410 } 411 func (m *ApplicationPolicy) XXX_DiscardUnknown() { 412 xxx_messageInfo_ApplicationPolicy.DiscardUnknown(m) 413 } 414 415 var xxx_messageInfo_ApplicationPolicy proto.InternalMessageInfo 416 417 type isApplicationPolicy_Type interface { 418 isApplicationPolicy_Type() 419 } 420 421 type ApplicationPolicy_SignaturePolicy struct { 422 SignaturePolicy *SignaturePolicyEnvelope `protobuf:"bytes,1,opt,name=signature_policy,json=signaturePolicy,proto3,oneof"` 423 } 424 425 type ApplicationPolicy_ChannelConfigPolicyReference struct { 426 ChannelConfigPolicyReference string `protobuf:"bytes,2,opt,name=channel_config_policy_reference,json=channelConfigPolicyReference,proto3,oneof"` 427 } 428 429 func (*ApplicationPolicy_SignaturePolicy) isApplicationPolicy_Type() {} 430 431 func (*ApplicationPolicy_ChannelConfigPolicyReference) isApplicationPolicy_Type() {} 432 433 func (m *ApplicationPolicy) GetType() isApplicationPolicy_Type { 434 if m != nil { 435 return m.Type 436 } 437 return nil 438 } 439 440 func (m *ApplicationPolicy) GetSignaturePolicy() *SignaturePolicyEnvelope { 441 if x, ok := m.GetType().(*ApplicationPolicy_SignaturePolicy); ok { 442 return x.SignaturePolicy 443 } 444 return nil 445 } 446 447 func (m *ApplicationPolicy) GetChannelConfigPolicyReference() string { 448 if x, ok := m.GetType().(*ApplicationPolicy_ChannelConfigPolicyReference); ok { 449 return x.ChannelConfigPolicyReference 450 } 451 return "" 452 } 453 454 // XXX_OneofWrappers is for the internal use of the proto package. 455 func (*ApplicationPolicy) XXX_OneofWrappers() []interface{} { 456 return []interface{}{ 457 (*ApplicationPolicy_SignaturePolicy)(nil), 458 (*ApplicationPolicy_ChannelConfigPolicyReference)(nil), 459 } 460 } 461 462 func init() { 463 proto.RegisterEnum("common.Policy_PolicyType", Policy_PolicyType_name, Policy_PolicyType_value) 464 proto.RegisterEnum("common.ImplicitMetaPolicy_Rule", ImplicitMetaPolicy_Rule_name, ImplicitMetaPolicy_Rule_value) 465 proto.RegisterType((*Policy)(nil), "common.Policy") 466 proto.RegisterType((*SignaturePolicyEnvelope)(nil), "common.SignaturePolicyEnvelope") 467 proto.RegisterType((*SignaturePolicy)(nil), "common.SignaturePolicy") 468 proto.RegisterType((*SignaturePolicy_NOutOf)(nil), "common.SignaturePolicy.NOutOf") 469 proto.RegisterType((*ImplicitMetaPolicy)(nil), "common.ImplicitMetaPolicy") 470 proto.RegisterType((*ApplicationPolicy)(nil), "common.ApplicationPolicy") 471 } 472 473 func init() { proto.RegisterFile("common/policies.proto", fileDescriptor_0d02cf0d453425a3) } 474 475 var fileDescriptor_0d02cf0d453425a3 = []byte{ 476 // 559 bytes of a gzipped FileDescriptorProto 477 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0xd1, 0x4e, 0xdb, 0x30, 478 0x14, 0x86, 0xe3, 0xb6, 0x04, 0x7a, 0x0a, 0x23, 0x58, 0x4c, 0x44, 0x68, 0x1b, 0x28, 0x9a, 0x26, 479 0xa4, 0x89, 0x54, 0x82, 0x5d, 0x71, 0x57, 0x58, 0x45, 0xb3, 0x35, 0x69, 0xe5, 0x96, 0x4d, 0xec, 480 0x26, 0x4a, 0x82, 0x1b, 0x2c, 0xa5, 0x76, 0x14, 0x27, 0x68, 0x7d, 0x8b, 0x5d, 0xed, 0x51, 0x76, 481 0xb3, 0x97, 0x9b, 0x12, 0x27, 0x5b, 0xc5, 0xd4, 0x3b, 0x9f, 0x93, 0xcf, 0xbf, 0xff, 0xff, 0xd8, 482 0x81, 0x97, 0x91, 0x58, 0x2e, 0x05, 0xef, 0xa7, 0x22, 0x61, 0x11, 0xa3, 0xd2, 0x4e, 0x33, 0x91, 483 0x0b, 0xac, 0xab, 0xf6, 0xf1, 0xd1, 0x52, 0xa6, 0xfd, 0xa5, 0x4c, 0xfd, 0x34, 0x63, 0x3c, 0x62, 484 0x69, 0x90, 0x28, 0xc0, 0xfa, 0x0e, 0xfa, 0xb4, 0xdc, 0xb2, 0xc2, 0x18, 0x3a, 0xf9, 0x2a, 0xa5, 485 0x26, 0x3a, 0x45, 0x67, 0x5b, 0xa4, 0x5a, 0xe3, 0x43, 0xd8, 0x7a, 0x0a, 0x92, 0x82, 0x9a, 0xad, 486 0x53, 0x74, 0xb6, 0x4b, 0x54, 0x61, 0x7d, 0x04, 0x50, 0x7b, 0xe6, 0x25, 0xd3, 0x83, 0xed, 0x3b, 487 0xef, 0xb3, 0x37, 0xf9, 0xea, 0x19, 0x1a, 0xde, 0x83, 0xee, 0xcc, 0xb9, 0xf5, 0x06, 0xf3, 0x3b, 488 0x32, 0x34, 0x10, 0xde, 0x86, 0xb6, 0x3b, 0x9b, 0x1a, 0x2d, 0x7c, 0x00, 0x7b, 0x8e, 0x3b, 0x1d, 489 0x3b, 0x37, 0xce, 0xdc, 0x77, 0x87, 0xf3, 0x81, 0xd1, 0xb6, 0x7e, 0x22, 0x38, 0x9a, 0xb1, 0x98, 490 0x07, 0x79, 0x91, 0x51, 0xa5, 0x37, 0xe4, 0x4f, 0x34, 0x11, 0x29, 0xc5, 0x26, 0x6c, 0x3f, 0xd1, 491 0x4c, 0x32, 0xc1, 0x6b, 0x3b, 0x4d, 0x89, 0xdf, 0x43, 0x27, 0x2b, 0x12, 0x65, 0xa8, 0x77, 0x71, 492 0x64, 0xab, 0x7c, 0xf6, 0x33, 0x21, 0x52, 0x41, 0xf8, 0x03, 0x00, 0x7b, 0xa0, 0x3c, 0x67, 0x39, 493 0xa3, 0xd2, 0x6c, 0x9f, 0xb6, 0xcf, 0x7a, 0x17, 0x87, 0xcd, 0x16, 0x77, 0x36, 0x9d, 0x36, 0xc3, 494 0x20, 0x6b, 0x9c, 0xf5, 0x1b, 0xc1, 0xfe, 0x33, 0x3d, 0xfc, 0x1a, 0xba, 0x92, 0xc5, 0x9c, 0x3e, 495 0xf8, 0xe1, 0x4a, 0x59, 0x1a, 0x69, 0x64, 0x47, 0xb5, 0xae, 0x57, 0xf8, 0x0a, 0x76, 0xb8, 0x2f, 496 0x8a, 0xdc, 0x17, 0x8b, 0xda, 0xd9, 0x9b, 0x0d, 0xce, 0x6c, 0x6f, 0x52, 0xe4, 0x93, 0xc5, 0x48, 497 0x23, 0x3a, 0xaf, 0x56, 0xc7, 0x43, 0xd0, 0x55, 0x0f, 0xef, 0x02, 0x6a, 0xf2, 0x22, 0x8e, 0xcf, 498 0x61, 0xab, 0x0c, 0x21, 0xcd, 0x56, 0xe5, 0x7b, 0x63, 0x54, 0x45, 0x5d, 0xeb, 0xd0, 0x29, 0xaf, 499 0xc3, 0xfa, 0x81, 0x00, 0x3b, 0xcb, 0xb4, 0x7c, 0x05, 0xb9, 0x4b, 0xf3, 0xe0, 0x6f, 0x00, 0x90, 500 0x45, 0xe8, 0x57, 0xcf, 0x43, 0x25, 0xe8, 0x92, 0xae, 0x2c, 0xc2, 0xfa, 0xf3, 0xe5, 0xda, 0x58, 501 0x5f, 0x5c, 0x9c, 0x34, 0x67, 0xfd, 0x2f, 0x64, 0x93, 0x22, 0xa1, 0x6a, 0xbc, 0xd6, 0x3b, 0xe8, 502 0x94, 0x55, 0x79, 0xcb, 0x03, 0xef, 0xde, 0xd0, 0xaa, 0xc5, 0x78, 0x6c, 0x20, 0xbc, 0x0b, 0x3b, 503 0xee, 0xe0, 0xd3, 0x84, 0x38, 0xf3, 0x7b, 0xa3, 0x65, 0xfd, 0x42, 0x70, 0x30, 0x48, 0x4b, 0xa5, 504 0x20, 0x67, 0x82, 0xd7, 0x47, 0x8e, 0xc1, 0x90, 0x4d, 0x94, 0x75, 0x5f, 0xbd, 0x7f, 0xc7, 0x6f, 505 0x78, 0x1e, 0x23, 0x8d, 0xec, 0xcb, 0x67, 0x17, 0x74, 0x0b, 0x27, 0xd1, 0x63, 0xc0, 0x39, 0x4d, 506 0xfc, 0x48, 0xf0, 0x05, 0x8b, 0x6b, 0x49, 0x3f, 0xa3, 0x0b, 0x9a, 0x51, 0x1e, 0xa9, 0x6c, 0xdd, 507 0x91, 0x46, 0x5e, 0xd5, 0xe0, 0x4d, 0xc5, 0xd5, 0x53, 0x6c, 0xa8, 0xab, 0x96, 0x89, 0x9a, 0x59, 508 0x5e, 0x7f, 0x81, 0xb7, 0x22, 0x8b, 0xed, 0xc7, 0x55, 0x4a, 0xb3, 0x84, 0x3e, 0xc4, 0x34, 0xb3, 509 0x17, 0x41, 0x98, 0xb1, 0x48, 0xfd, 0x3c, 0xb2, 0xf6, 0xf9, 0xcd, 0x8e, 0x59, 0xfe, 0x58, 0x84, 510 0x65, 0xd9, 0x5f, 0x83, 0xfb, 0x0a, 0x3e, 0x57, 0xf0, 0x79, 0x2c, 0xfa, 0x8a, 0x0f, 0xf5, 0xaa, 511 0x73, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, 0x77, 0x84, 0xc8, 0xc7, 0xb5, 0x03, 0x00, 0x00, 512 }