github.com/ZihuaZhang/fabric-protos-go@v1.0.7/common/configtx.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: common/configtx.proto 3 4 package common 5 6 import ( 7 fmt "fmt" 8 proto "github.com/golang/protobuf/proto" 9 math "math" 10 ) 11 12 // Reference imports to suppress errors if they are not otherwise used. 13 var _ = proto.Marshal 14 var _ = fmt.Errorf 15 var _ = math.Inf 16 17 // This is a compile-time assertion to ensure that this generated file 18 // is compatible with the proto package it is being compiled against. 19 // A compilation error at this line likely means your copy of the 20 // proto package needs to be updated. 21 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 22 23 // ConfigEnvelope is designed to contain _all_ configuration for a chain with no dependency 24 // on previous configuration transactions. 25 // 26 // It is generated with the following scheme: 27 // 1. Retrieve the existing configuration 28 // 2. Note the config properties (ConfigValue, ConfigPolicy, ConfigGroup) to be modified 29 // 3. Add any intermediate ConfigGroups to the ConfigUpdate.read_set (sparsely) 30 // 4. Add any additional desired dependencies to ConfigUpdate.read_set (sparsely) 31 // 5. Modify the config properties, incrementing each version by 1, set them in the ConfigUpdate.write_set 32 // Note: any element not modified but specified should already be in the read_set, so may be specified sparsely 33 // 6. Create ConfigUpdate message and marshal it into ConfigUpdateEnvelope.update and encode the required signatures 34 // a) Each signature is of type ConfigSignature 35 // b) The ConfigSignature signature is over the concatenation of signature_header and the ConfigUpdate bytes (which includes a ChainHeader) 36 // 5. Submit new Config for ordering in Envelope signed by submitter 37 // a) The Envelope Payload has data set to the marshaled ConfigEnvelope 38 // b) The Envelope Payload has a header of type Header.Type.CONFIG_UPDATE 39 // 40 // The configuration manager will verify: 41 // 1. All items in the read_set exist at the read versions 42 // 2. All items in the write_set at a different version than, or not in, the read_set have been appropriately signed according to their mod_policy 43 // 3. The new configuration satisfies the ConfigSchema 44 type ConfigEnvelope struct { 45 Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` 46 LastUpdate *Envelope `protobuf:"bytes,2,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"` 47 XXX_NoUnkeyedLiteral struct{} `json:"-"` 48 XXX_unrecognized []byte `json:"-"` 49 XXX_sizecache int32 `json:"-"` 50 } 51 52 func (m *ConfigEnvelope) Reset() { *m = ConfigEnvelope{} } 53 func (m *ConfigEnvelope) String() string { return proto.CompactTextString(m) } 54 func (*ConfigEnvelope) ProtoMessage() {} 55 func (*ConfigEnvelope) Descriptor() ([]byte, []int) { 56 return fileDescriptor_5190bbf196fa7499, []int{0} 57 } 58 59 func (m *ConfigEnvelope) XXX_Unmarshal(b []byte) error { 60 return xxx_messageInfo_ConfigEnvelope.Unmarshal(m, b) 61 } 62 func (m *ConfigEnvelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 63 return xxx_messageInfo_ConfigEnvelope.Marshal(b, m, deterministic) 64 } 65 func (m *ConfigEnvelope) XXX_Merge(src proto.Message) { 66 xxx_messageInfo_ConfigEnvelope.Merge(m, src) 67 } 68 func (m *ConfigEnvelope) XXX_Size() int { 69 return xxx_messageInfo_ConfigEnvelope.Size(m) 70 } 71 func (m *ConfigEnvelope) XXX_DiscardUnknown() { 72 xxx_messageInfo_ConfigEnvelope.DiscardUnknown(m) 73 } 74 75 var xxx_messageInfo_ConfigEnvelope proto.InternalMessageInfo 76 77 func (m *ConfigEnvelope) GetConfig() *Config { 78 if m != nil { 79 return m.Config 80 } 81 return nil 82 } 83 84 func (m *ConfigEnvelope) GetLastUpdate() *Envelope { 85 if m != nil { 86 return m.LastUpdate 87 } 88 return nil 89 } 90 91 // Config represents the config for a particular channel 92 type Config struct { 93 Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"` 94 ChannelGroup *ConfigGroup `protobuf:"bytes,2,opt,name=channel_group,json=channelGroup,proto3" json:"channel_group,omitempty"` 95 XXX_NoUnkeyedLiteral struct{} `json:"-"` 96 XXX_unrecognized []byte `json:"-"` 97 XXX_sizecache int32 `json:"-"` 98 } 99 100 func (m *Config) Reset() { *m = Config{} } 101 func (m *Config) String() string { return proto.CompactTextString(m) } 102 func (*Config) ProtoMessage() {} 103 func (*Config) Descriptor() ([]byte, []int) { 104 return fileDescriptor_5190bbf196fa7499, []int{1} 105 } 106 107 func (m *Config) XXX_Unmarshal(b []byte) error { 108 return xxx_messageInfo_Config.Unmarshal(m, b) 109 } 110 func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 111 return xxx_messageInfo_Config.Marshal(b, m, deterministic) 112 } 113 func (m *Config) XXX_Merge(src proto.Message) { 114 xxx_messageInfo_Config.Merge(m, src) 115 } 116 func (m *Config) XXX_Size() int { 117 return xxx_messageInfo_Config.Size(m) 118 } 119 func (m *Config) XXX_DiscardUnknown() { 120 xxx_messageInfo_Config.DiscardUnknown(m) 121 } 122 123 var xxx_messageInfo_Config proto.InternalMessageInfo 124 125 func (m *Config) GetSequence() uint64 { 126 if m != nil { 127 return m.Sequence 128 } 129 return 0 130 } 131 132 func (m *Config) GetChannelGroup() *ConfigGroup { 133 if m != nil { 134 return m.ChannelGroup 135 } 136 return nil 137 } 138 139 type ConfigUpdateEnvelope struct { 140 ConfigUpdate []byte `protobuf:"bytes,1,opt,name=config_update,json=configUpdate,proto3" json:"config_update,omitempty"` 141 Signatures []*ConfigSignature `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty"` 142 XXX_NoUnkeyedLiteral struct{} `json:"-"` 143 XXX_unrecognized []byte `json:"-"` 144 XXX_sizecache int32 `json:"-"` 145 } 146 147 func (m *ConfigUpdateEnvelope) Reset() { *m = ConfigUpdateEnvelope{} } 148 func (m *ConfigUpdateEnvelope) String() string { return proto.CompactTextString(m) } 149 func (*ConfigUpdateEnvelope) ProtoMessage() {} 150 func (*ConfigUpdateEnvelope) Descriptor() ([]byte, []int) { 151 return fileDescriptor_5190bbf196fa7499, []int{2} 152 } 153 154 func (m *ConfigUpdateEnvelope) XXX_Unmarshal(b []byte) error { 155 return xxx_messageInfo_ConfigUpdateEnvelope.Unmarshal(m, b) 156 } 157 func (m *ConfigUpdateEnvelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 158 return xxx_messageInfo_ConfigUpdateEnvelope.Marshal(b, m, deterministic) 159 } 160 func (m *ConfigUpdateEnvelope) XXX_Merge(src proto.Message) { 161 xxx_messageInfo_ConfigUpdateEnvelope.Merge(m, src) 162 } 163 func (m *ConfigUpdateEnvelope) XXX_Size() int { 164 return xxx_messageInfo_ConfigUpdateEnvelope.Size(m) 165 } 166 func (m *ConfigUpdateEnvelope) XXX_DiscardUnknown() { 167 xxx_messageInfo_ConfigUpdateEnvelope.DiscardUnknown(m) 168 } 169 170 var xxx_messageInfo_ConfigUpdateEnvelope proto.InternalMessageInfo 171 172 func (m *ConfigUpdateEnvelope) GetConfigUpdate() []byte { 173 if m != nil { 174 return m.ConfigUpdate 175 } 176 return nil 177 } 178 179 func (m *ConfigUpdateEnvelope) GetSignatures() []*ConfigSignature { 180 if m != nil { 181 return m.Signatures 182 } 183 return nil 184 } 185 186 // ConfigUpdate is used to submit a subset of config and to have the orderer apply to Config 187 // it is always submitted inside a ConfigUpdateEnvelope which allows the addition of signatures 188 // resulting in a new total configuration. The update is applied as follows: 189 // 1. The versions from all of the elements in the read_set is verified against the versions in the existing config. 190 // If there is a mismatch in the read versions, then the config update fails and is rejected. 191 // 2. Any elements in the write_set with the same version as the read_set are ignored. 192 // 3. The corresponding mod_policy for every remaining element in the write_set is collected. 193 // 4. Each policy is checked against the signatures from the ConfigUpdateEnvelope, any failing to verify are rejected 194 // 5. The write_set is applied to the Config and the ConfigGroupSchema verifies that the updates were legal 195 type ConfigUpdate struct { 196 ChannelId string `protobuf:"bytes,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` 197 ReadSet *ConfigGroup `protobuf:"bytes,2,opt,name=read_set,json=readSet,proto3" json:"read_set,omitempty"` 198 WriteSet *ConfigGroup `protobuf:"bytes,3,opt,name=write_set,json=writeSet,proto3" json:"write_set,omitempty"` 199 IsolatedData map[string][]byte `protobuf:"bytes,5,rep,name=isolated_data,json=isolatedData,proto3" json:"isolated_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 200 XXX_NoUnkeyedLiteral struct{} `json:"-"` 201 XXX_unrecognized []byte `json:"-"` 202 XXX_sizecache int32 `json:"-"` 203 } 204 205 func (m *ConfigUpdate) Reset() { *m = ConfigUpdate{} } 206 func (m *ConfigUpdate) String() string { return proto.CompactTextString(m) } 207 func (*ConfigUpdate) ProtoMessage() {} 208 func (*ConfigUpdate) Descriptor() ([]byte, []int) { 209 return fileDescriptor_5190bbf196fa7499, []int{3} 210 } 211 212 func (m *ConfigUpdate) XXX_Unmarshal(b []byte) error { 213 return xxx_messageInfo_ConfigUpdate.Unmarshal(m, b) 214 } 215 func (m *ConfigUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 216 return xxx_messageInfo_ConfigUpdate.Marshal(b, m, deterministic) 217 } 218 func (m *ConfigUpdate) XXX_Merge(src proto.Message) { 219 xxx_messageInfo_ConfigUpdate.Merge(m, src) 220 } 221 func (m *ConfigUpdate) XXX_Size() int { 222 return xxx_messageInfo_ConfigUpdate.Size(m) 223 } 224 func (m *ConfigUpdate) XXX_DiscardUnknown() { 225 xxx_messageInfo_ConfigUpdate.DiscardUnknown(m) 226 } 227 228 var xxx_messageInfo_ConfigUpdate proto.InternalMessageInfo 229 230 func (m *ConfigUpdate) GetChannelId() string { 231 if m != nil { 232 return m.ChannelId 233 } 234 return "" 235 } 236 237 func (m *ConfigUpdate) GetReadSet() *ConfigGroup { 238 if m != nil { 239 return m.ReadSet 240 } 241 return nil 242 } 243 244 func (m *ConfigUpdate) GetWriteSet() *ConfigGroup { 245 if m != nil { 246 return m.WriteSet 247 } 248 return nil 249 } 250 251 func (m *ConfigUpdate) GetIsolatedData() map[string][]byte { 252 if m != nil { 253 return m.IsolatedData 254 } 255 return nil 256 } 257 258 // ConfigGroup is the hierarchical data structure for holding config 259 type ConfigGroup struct { 260 Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` 261 Groups map[string]*ConfigGroup `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 262 Values map[string]*ConfigValue `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 263 Policies map[string]*ConfigPolicy `protobuf:"bytes,4,rep,name=policies,proto3" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 264 ModPolicy string `protobuf:"bytes,5,opt,name=mod_policy,json=modPolicy,proto3" json:"mod_policy,omitempty"` 265 XXX_NoUnkeyedLiteral struct{} `json:"-"` 266 XXX_unrecognized []byte `json:"-"` 267 XXX_sizecache int32 `json:"-"` 268 } 269 270 func (m *ConfigGroup) Reset() { *m = ConfigGroup{} } 271 func (m *ConfigGroup) String() string { return proto.CompactTextString(m) } 272 func (*ConfigGroup) ProtoMessage() {} 273 func (*ConfigGroup) Descriptor() ([]byte, []int) { 274 return fileDescriptor_5190bbf196fa7499, []int{4} 275 } 276 277 func (m *ConfigGroup) XXX_Unmarshal(b []byte) error { 278 return xxx_messageInfo_ConfigGroup.Unmarshal(m, b) 279 } 280 func (m *ConfigGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 281 return xxx_messageInfo_ConfigGroup.Marshal(b, m, deterministic) 282 } 283 func (m *ConfigGroup) XXX_Merge(src proto.Message) { 284 xxx_messageInfo_ConfigGroup.Merge(m, src) 285 } 286 func (m *ConfigGroup) XXX_Size() int { 287 return xxx_messageInfo_ConfigGroup.Size(m) 288 } 289 func (m *ConfigGroup) XXX_DiscardUnknown() { 290 xxx_messageInfo_ConfigGroup.DiscardUnknown(m) 291 } 292 293 var xxx_messageInfo_ConfigGroup proto.InternalMessageInfo 294 295 func (m *ConfigGroup) GetVersion() uint64 { 296 if m != nil { 297 return m.Version 298 } 299 return 0 300 } 301 302 func (m *ConfigGroup) GetGroups() map[string]*ConfigGroup { 303 if m != nil { 304 return m.Groups 305 } 306 return nil 307 } 308 309 func (m *ConfigGroup) GetValues() map[string]*ConfigValue { 310 if m != nil { 311 return m.Values 312 } 313 return nil 314 } 315 316 func (m *ConfigGroup) GetPolicies() map[string]*ConfigPolicy { 317 if m != nil { 318 return m.Policies 319 } 320 return nil 321 } 322 323 func (m *ConfigGroup) GetModPolicy() string { 324 if m != nil { 325 return m.ModPolicy 326 } 327 return "" 328 } 329 330 // ConfigValue represents an individual piece of config data 331 type ConfigValue struct { 332 Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` 333 Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 334 ModPolicy string `protobuf:"bytes,3,opt,name=mod_policy,json=modPolicy,proto3" json:"mod_policy,omitempty"` 335 XXX_NoUnkeyedLiteral struct{} `json:"-"` 336 XXX_unrecognized []byte `json:"-"` 337 XXX_sizecache int32 `json:"-"` 338 } 339 340 func (m *ConfigValue) Reset() { *m = ConfigValue{} } 341 func (m *ConfigValue) String() string { return proto.CompactTextString(m) } 342 func (*ConfigValue) ProtoMessage() {} 343 func (*ConfigValue) Descriptor() ([]byte, []int) { 344 return fileDescriptor_5190bbf196fa7499, []int{5} 345 } 346 347 func (m *ConfigValue) XXX_Unmarshal(b []byte) error { 348 return xxx_messageInfo_ConfigValue.Unmarshal(m, b) 349 } 350 func (m *ConfigValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 351 return xxx_messageInfo_ConfigValue.Marshal(b, m, deterministic) 352 } 353 func (m *ConfigValue) XXX_Merge(src proto.Message) { 354 xxx_messageInfo_ConfigValue.Merge(m, src) 355 } 356 func (m *ConfigValue) XXX_Size() int { 357 return xxx_messageInfo_ConfigValue.Size(m) 358 } 359 func (m *ConfigValue) XXX_DiscardUnknown() { 360 xxx_messageInfo_ConfigValue.DiscardUnknown(m) 361 } 362 363 var xxx_messageInfo_ConfigValue proto.InternalMessageInfo 364 365 func (m *ConfigValue) GetVersion() uint64 { 366 if m != nil { 367 return m.Version 368 } 369 return 0 370 } 371 372 func (m *ConfigValue) GetValue() []byte { 373 if m != nil { 374 return m.Value 375 } 376 return nil 377 } 378 379 func (m *ConfigValue) GetModPolicy() string { 380 if m != nil { 381 return m.ModPolicy 382 } 383 return "" 384 } 385 386 type ConfigPolicy struct { 387 Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` 388 Policy *Policy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"` 389 ModPolicy string `protobuf:"bytes,3,opt,name=mod_policy,json=modPolicy,proto3" json:"mod_policy,omitempty"` 390 XXX_NoUnkeyedLiteral struct{} `json:"-"` 391 XXX_unrecognized []byte `json:"-"` 392 XXX_sizecache int32 `json:"-"` 393 } 394 395 func (m *ConfigPolicy) Reset() { *m = ConfigPolicy{} } 396 func (m *ConfigPolicy) String() string { return proto.CompactTextString(m) } 397 func (*ConfigPolicy) ProtoMessage() {} 398 func (*ConfigPolicy) Descriptor() ([]byte, []int) { 399 return fileDescriptor_5190bbf196fa7499, []int{6} 400 } 401 402 func (m *ConfigPolicy) XXX_Unmarshal(b []byte) error { 403 return xxx_messageInfo_ConfigPolicy.Unmarshal(m, b) 404 } 405 func (m *ConfigPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 406 return xxx_messageInfo_ConfigPolicy.Marshal(b, m, deterministic) 407 } 408 func (m *ConfigPolicy) XXX_Merge(src proto.Message) { 409 xxx_messageInfo_ConfigPolicy.Merge(m, src) 410 } 411 func (m *ConfigPolicy) XXX_Size() int { 412 return xxx_messageInfo_ConfigPolicy.Size(m) 413 } 414 func (m *ConfigPolicy) XXX_DiscardUnknown() { 415 xxx_messageInfo_ConfigPolicy.DiscardUnknown(m) 416 } 417 418 var xxx_messageInfo_ConfigPolicy proto.InternalMessageInfo 419 420 func (m *ConfigPolicy) GetVersion() uint64 { 421 if m != nil { 422 return m.Version 423 } 424 return 0 425 } 426 427 func (m *ConfigPolicy) GetPolicy() *Policy { 428 if m != nil { 429 return m.Policy 430 } 431 return nil 432 } 433 434 func (m *ConfigPolicy) GetModPolicy() string { 435 if m != nil { 436 return m.ModPolicy 437 } 438 return "" 439 } 440 441 type ConfigSignature struct { 442 SignatureHeader []byte `protobuf:"bytes,1,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"` 443 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 444 XXX_NoUnkeyedLiteral struct{} `json:"-"` 445 XXX_unrecognized []byte `json:"-"` 446 XXX_sizecache int32 `json:"-"` 447 } 448 449 func (m *ConfigSignature) Reset() { *m = ConfigSignature{} } 450 func (m *ConfigSignature) String() string { return proto.CompactTextString(m) } 451 func (*ConfigSignature) ProtoMessage() {} 452 func (*ConfigSignature) Descriptor() ([]byte, []int) { 453 return fileDescriptor_5190bbf196fa7499, []int{7} 454 } 455 456 func (m *ConfigSignature) XXX_Unmarshal(b []byte) error { 457 return xxx_messageInfo_ConfigSignature.Unmarshal(m, b) 458 } 459 func (m *ConfigSignature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 460 return xxx_messageInfo_ConfigSignature.Marshal(b, m, deterministic) 461 } 462 func (m *ConfigSignature) XXX_Merge(src proto.Message) { 463 xxx_messageInfo_ConfigSignature.Merge(m, src) 464 } 465 func (m *ConfigSignature) XXX_Size() int { 466 return xxx_messageInfo_ConfigSignature.Size(m) 467 } 468 func (m *ConfigSignature) XXX_DiscardUnknown() { 469 xxx_messageInfo_ConfigSignature.DiscardUnknown(m) 470 } 471 472 var xxx_messageInfo_ConfigSignature proto.InternalMessageInfo 473 474 func (m *ConfigSignature) GetSignatureHeader() []byte { 475 if m != nil { 476 return m.SignatureHeader 477 } 478 return nil 479 } 480 481 func (m *ConfigSignature) GetSignature() []byte { 482 if m != nil { 483 return m.Signature 484 } 485 return nil 486 } 487 488 func init() { 489 proto.RegisterType((*ConfigEnvelope)(nil), "common.ConfigEnvelope") 490 proto.RegisterType((*Config)(nil), "common.Config") 491 proto.RegisterType((*ConfigUpdateEnvelope)(nil), "common.ConfigUpdateEnvelope") 492 proto.RegisterType((*ConfigUpdate)(nil), "common.ConfigUpdate") 493 proto.RegisterMapType((map[string][]byte)(nil), "common.ConfigUpdate.IsolatedDataEntry") 494 proto.RegisterType((*ConfigGroup)(nil), "common.ConfigGroup") 495 proto.RegisterMapType((map[string]*ConfigGroup)(nil), "common.ConfigGroup.GroupsEntry") 496 proto.RegisterMapType((map[string]*ConfigPolicy)(nil), "common.ConfigGroup.PoliciesEntry") 497 proto.RegisterMapType((map[string]*ConfigValue)(nil), "common.ConfigGroup.ValuesEntry") 498 proto.RegisterType((*ConfigValue)(nil), "common.ConfigValue") 499 proto.RegisterType((*ConfigPolicy)(nil), "common.ConfigPolicy") 500 proto.RegisterType((*ConfigSignature)(nil), "common.ConfigSignature") 501 } 502 503 func init() { proto.RegisterFile("common/configtx.proto", fileDescriptor_5190bbf196fa7499) } 504 505 var fileDescriptor_5190bbf196fa7499 = []byte{ 506 // 645 bytes of a gzipped FileDescriptorProto 507 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0x61, 0x4f, 0xd4, 0x4c, 508 0x10, 0x0e, 0xd7, 0x5e, 0xe9, 0xcd, 0xf5, 0xe0, 0xde, 0x85, 0x37, 0x36, 0x17, 0x8d, 0x58, 0x0d, 509 0x01, 0x13, 0x8a, 0xe2, 0x07, 0x88, 0x89, 0x31, 0x51, 0x89, 0x82, 0x89, 0xd1, 0x12, 0xf9, 0x40, 510 0x4c, 0x9a, 0xa5, 0x5d, 0x7a, 0x95, 0x5e, 0xb7, 0x6e, 0xb7, 0x68, 0x7f, 0x92, 0x7f, 0xcd, 0x5f, 511 0x61, 0xba, 0xbb, 0x2d, 0x2d, 0x1e, 0x67, 0xfc, 0x02, 0xcc, 0xcc, 0xf3, 0x3c, 0x33, 0xcf, 0xce, 512 0x76, 0x81, 0xff, 0x03, 0x3a, 0x9b, 0xd1, 0x74, 0x37, 0xa0, 0xe9, 0x45, 0x1c, 0xf1, 0x1f, 0x6e, 513 0xc6, 0x28, 0xa7, 0xc8, 0x90, 0xe9, 0xc9, 0x5a, 0x53, 0xae, 0x7e, 0xc9, 0xe2, 0xa4, 0xe6, 0x64, 514 0x34, 0x89, 0x83, 0x98, 0xe4, 0x32, 0xed, 0x5c, 0xc2, 0xca, 0x6b, 0xa1, 0x72, 0x98, 0x5e, 0x91, 515 0x84, 0x66, 0x04, 0x6d, 0x82, 0x21, 0x75, 0xed, 0xa5, 0x8d, 0xa5, 0xad, 0xe1, 0xde, 0x8a, 0xab, 516 0x74, 0x24, 0xce, 0x53, 0x55, 0xf4, 0x14, 0x86, 0x09, 0xce, 0xb9, 0x5f, 0x64, 0x21, 0xe6, 0xc4, 517 0xee, 0x09, 0xf0, 0xb8, 0x06, 0xd7, 0x72, 0x1e, 0x54, 0xa0, 0xcf, 0x02, 0xe3, 0x7c, 0x05, 0x43, 518 0x8a, 0xa0, 0x09, 0x98, 0x39, 0xf9, 0x56, 0x90, 0x34, 0x20, 0xa2, 0x8d, 0xee, 0x35, 0x31, 0x3a, 519 0x80, 0x51, 0x30, 0xc5, 0x69, 0x4a, 0x12, 0x3f, 0x62, 0xb4, 0xc8, 0x94, 0xf4, 0x5a, 0x77, 0x8e, 520 0xb7, 0x55, 0xc9, 0xb3, 0x14, 0x52, 0x44, 0xc7, 0xba, 0xa9, 0x8d, 0x75, 0x4f, 0xe7, 0x65, 0x46, 521 0x1c, 0x0e, 0xeb, 0x12, 0x28, 0x7b, 0x37, 0xf6, 0x1e, 0xc2, 0x48, 0x1a, 0xa8, 0x07, 0xaf, 0xda, 522 0x5b, 0x9e, 0x15, 0xb4, 0xc0, 0x68, 0x1f, 0x20, 0x8f, 0xa3, 0x14, 0xf3, 0x82, 0x91, 0xdc, 0xee, 523 0x6d, 0x68, 0x5b, 0xc3, 0xbd, 0x3b, 0xdd, 0xfe, 0x27, 0x75, 0xdd, 0x6b, 0x41, 0x9d, 0x9f, 0x3d, 524 0xb0, 0xda, 0x6d, 0xd1, 0x3d, 0x80, 0xda, 0x4c, 0x1c, 0x8a, 0x5e, 0x03, 0x6f, 0xa0, 0x32, 0x47, 525 0x21, 0x72, 0xc1, 0x64, 0x04, 0x87, 0x7e, 0x4e, 0xf8, 0x22, 0x9b, 0xcb, 0x15, 0xe8, 0x84, 0x70, 526 0xf4, 0x04, 0x06, 0xdf, 0x59, 0xcc, 0x89, 0x20, 0x68, 0xb7, 0x13, 0x4c, 0x81, 0xaa, 0x18, 0xef, 527 0x61, 0x14, 0xe7, 0x34, 0xc1, 0x9c, 0x84, 0x7e, 0x88, 0x39, 0xb6, 0xfb, 0xc2, 0xcd, 0x66, 0x97, 528 0x25, 0xa7, 0x75, 0x8f, 0x14, 0xf2, 0x0d, 0xe6, 0xf8, 0x30, 0xe5, 0xac, 0xf4, 0xac, 0xb8, 0x95, 529 0x9a, 0xbc, 0x84, 0xff, 0xfe, 0x80, 0xa0, 0x31, 0x68, 0x97, 0xa4, 0x54, 0xde, 0xaa, 0x3f, 0xd1, 530 0x3a, 0xf4, 0xaf, 0x70, 0x52, 0xc8, 0x4b, 0x61, 0x79, 0x32, 0x78, 0xde, 0x3b, 0x58, 0x3a, 0xd6, 531 0x4d, 0x7d, 0xdc, 0x57, 0x1b, 0xfa, 0xa5, 0xc1, 0xb0, 0x35, 0x33, 0xb2, 0x61, 0xf9, 0x8a, 0xb0, 532 0x3c, 0xa6, 0xa9, 0xba, 0x12, 0x75, 0x88, 0xf6, 0xc1, 0x10, 0x37, 0xa1, 0x5e, 0xc5, 0xfd, 0x39, 533 0x96, 0x5d, 0xf1, 0x33, 0x97, 0x53, 0x2b, 0x78, 0x45, 0x14, 0xbd, 0x73, 0x5b, 0xbb, 0x9d, 0x78, 534 0x2a, 0x10, 0x8a, 0x28, 0xe1, 0xe8, 0x05, 0x98, 0xf5, 0x87, 0x62, 0xeb, 0x82, 0xfa, 0x60, 0x1e, 535 0xf5, 0xa3, 0xc2, 0x48, 0x72, 0x43, 0xa9, 0xb6, 0x3e, 0xa3, 0xa1, 0x2f, 0xe2, 0xd2, 0xee, 0xcb, 536 0xad, 0xcf, 0x68, 0x28, 0xf0, 0xe5, 0xe4, 0x03, 0x0c, 0x5b, 0xd3, 0xce, 0x39, 0xc0, 0xed, 0xf6, 537 0x01, 0xde, 0xb2, 0xe2, 0xeb, 0x53, 0xad, 0xf4, 0x5a, 0x26, 0xfe, 0x59, 0x4f, 0x70, 0xdb, 0x7a, 538 0x9f, 0x60, 0xd4, 0x71, 0x36, 0x47, 0xf1, 0x71, 0x57, 0x71, 0xbd, 0xab, 0x28, 0x7d, 0xb6, 0x24, 539 0x9d, 0x2f, 0xf5, 0xae, 0x45, 0xb3, 0x05, 0xbb, 0x9e, 0x7b, 0x77, 0x6e, 0x1c, 0xa8, 0x76, 0xe3, 540 0x40, 0x1d, 0x5a, 0x7f, 0x75, 0x32, 0x5e, 0x20, 0xbf, 0x09, 0x86, 0x12, 0xe9, 0x75, 0x5f, 0x37, 541 0x35, 0xb2, 0xaa, 0xfe, 0xad, 0xe1, 0x19, 0xac, 0xde, 0x78, 0x06, 0xd0, 0x36, 0x8c, 0x9b, 0x87, 542 0xc0, 0x9f, 0x12, 0x1c, 0x12, 0xa6, 0xde, 0x96, 0xd5, 0x26, 0xff, 0x4e, 0xa4, 0xd1, 0x5d, 0x18, 543 0x34, 0x29, 0xe5, 0xf3, 0x3a, 0xf1, 0xea, 0x14, 0x1e, 0x51, 0x16, 0xb9, 0xd3, 0x32, 0x23, 0x2c, 544 0x21, 0x61, 0x44, 0x98, 0x7b, 0x81, 0xcf, 0x59, 0x1c, 0xc8, 0x27, 0x3b, 0x57, 0x13, 0x9f, 0xb9, 545 0x51, 0xcc, 0xa7, 0xc5, 0x79, 0x15, 0xee, 0xb6, 0xc0, 0xbb, 0x12, 0xbc, 0x23, 0xc1, 0x3b, 0x11, 546 0x55, 0xff, 0x07, 0xce, 0x0d, 0x91, 0x79, 0xf6, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x9b, 0x6e, 547 0xa7, 0x3e, 0x06, 0x00, 0x00, 548 }