github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/protos/common/common.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: common/common.proto 3 4 /* 5 Package common is a generated protocol buffer package. 6 7 It is generated from these files: 8 common/common.proto 9 common/configtx.proto 10 common/configuration.proto 11 common/ledger.proto 12 common/policies.proto 13 14 It has these top-level messages: 15 LastConfig 16 Metadata 17 MetadataSignature 18 Header 19 ChannelHeader 20 SignatureHeader 21 Payload 22 Envelope 23 Block 24 BlockHeader 25 BlockData 26 BlockMetadata 27 ProcessedBlock 28 ConfigEnvelope 29 ConfigGroupSchema 30 ConfigValueSchema 31 ConfigPolicySchema 32 Config 33 ConfigUpdateEnvelope 34 ConfigUpdate 35 ConfigGroup 36 ConfigValue 37 ConfigPolicy 38 ConfigSignature 39 HashingAlgorithm 40 BlockDataHashingStructure 41 OrdererAddresses 42 Consortium 43 BlockchainInfo 44 Policy 45 SignaturePolicyEnvelope 46 SignaturePolicy 47 ImplicitMetaPolicy 48 */ 49 package common 50 51 import proto "github.com/golang/protobuf/proto" 52 import fmt "fmt" 53 import math "math" 54 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" 55 56 // Reference imports to suppress errors if they are not otherwise used. 57 var _ = proto.Marshal 58 var _ = fmt.Errorf 59 var _ = math.Inf 60 61 // This is a compile-time assertion to ensure that this generated file 62 // is compatible with the proto package it is being compiled against. 63 // A compilation error at this line likely means your copy of the 64 // proto package needs to be updated. 65 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 66 67 // These status codes are intended to resemble selected HTTP status codes 68 type Status int32 69 70 const ( 71 Status_UNKNOWN Status = 0 72 Status_SUCCESS Status = 200 73 Status_BAD_REQUEST Status = 400 74 Status_FORBIDDEN Status = 403 75 Status_NOT_FOUND Status = 404 76 Status_REQUEST_ENTITY_TOO_LARGE Status = 413 77 Status_INTERNAL_SERVER_ERROR Status = 500 78 Status_SERVICE_UNAVAILABLE Status = 503 79 ) 80 81 var Status_name = map[int32]string{ 82 0: "UNKNOWN", 83 200: "SUCCESS", 84 400: "BAD_REQUEST", 85 403: "FORBIDDEN", 86 404: "NOT_FOUND", 87 413: "REQUEST_ENTITY_TOO_LARGE", 88 500: "INTERNAL_SERVER_ERROR", 89 503: "SERVICE_UNAVAILABLE", 90 } 91 var Status_value = map[string]int32{ 92 "UNKNOWN": 0, 93 "SUCCESS": 200, 94 "BAD_REQUEST": 400, 95 "FORBIDDEN": 403, 96 "NOT_FOUND": 404, 97 "REQUEST_ENTITY_TOO_LARGE": 413, 98 "INTERNAL_SERVER_ERROR": 500, 99 "SERVICE_UNAVAILABLE": 503, 100 } 101 102 func (x Status) String() string { 103 return proto.EnumName(Status_name, int32(x)) 104 } 105 func (Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 106 107 type HeaderType int32 108 109 const ( 110 HeaderType_MESSAGE HeaderType = 0 111 HeaderType_CONFIG HeaderType = 1 112 HeaderType_CONFIG_UPDATE HeaderType = 2 113 HeaderType_ENDORSER_TRANSACTION HeaderType = 3 114 HeaderType_ORDERER_TRANSACTION HeaderType = 4 115 HeaderType_DELIVER_SEEK_INFO HeaderType = 5 116 HeaderType_CHAINCODE_PACKAGE HeaderType = 6 117 ) 118 119 var HeaderType_name = map[int32]string{ 120 0: "MESSAGE", 121 1: "CONFIG", 122 2: "CONFIG_UPDATE", 123 3: "ENDORSER_TRANSACTION", 124 4: "ORDERER_TRANSACTION", 125 5: "DELIVER_SEEK_INFO", 126 6: "CHAINCODE_PACKAGE", 127 } 128 var HeaderType_value = map[string]int32{ 129 "MESSAGE": 0, 130 "CONFIG": 1, 131 "CONFIG_UPDATE": 2, 132 "ENDORSER_TRANSACTION": 3, 133 "ORDERER_TRANSACTION": 4, 134 "DELIVER_SEEK_INFO": 5, 135 "CHAINCODE_PACKAGE": 6, 136 } 137 138 func (x HeaderType) String() string { 139 return proto.EnumName(HeaderType_name, int32(x)) 140 } 141 func (HeaderType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 142 143 // This enum enlists indexes of the block metadata array 144 type BlockMetadataIndex int32 145 146 const ( 147 BlockMetadataIndex_SIGNATURES BlockMetadataIndex = 0 148 BlockMetadataIndex_LAST_CONFIG BlockMetadataIndex = 1 149 BlockMetadataIndex_TRANSACTIONS_FILTER BlockMetadataIndex = 2 150 BlockMetadataIndex_ORDERER BlockMetadataIndex = 3 151 ) 152 153 var BlockMetadataIndex_name = map[int32]string{ 154 0: "SIGNATURES", 155 1: "LAST_CONFIG", 156 2: "TRANSACTIONS_FILTER", 157 3: "ORDERER", 158 } 159 var BlockMetadataIndex_value = map[string]int32{ 160 "SIGNATURES": 0, 161 "LAST_CONFIG": 1, 162 "TRANSACTIONS_FILTER": 2, 163 "ORDERER": 3, 164 } 165 166 func (x BlockMetadataIndex) String() string { 167 return proto.EnumName(BlockMetadataIndex_name, int32(x)) 168 } 169 func (BlockMetadataIndex) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 170 171 // LastConfig is the encoded value for the Metadata message which is encoded in the LAST_CONFIGURATION block metadata index 172 type LastConfig struct { 173 Index uint64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` 174 } 175 176 func (m *LastConfig) Reset() { *m = LastConfig{} } 177 func (m *LastConfig) String() string { return proto.CompactTextString(m) } 178 func (*LastConfig) ProtoMessage() {} 179 func (*LastConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 180 181 func (m *LastConfig) GetIndex() uint64 { 182 if m != nil { 183 return m.Index 184 } 185 return 0 186 } 187 188 // Metadata is a common structure to be used to encode block metadata 189 type Metadata struct { 190 Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` 191 Signatures []*MetadataSignature `protobuf:"bytes,2,rep,name=signatures" json:"signatures,omitempty"` 192 } 193 194 func (m *Metadata) Reset() { *m = Metadata{} } 195 func (m *Metadata) String() string { return proto.CompactTextString(m) } 196 func (*Metadata) ProtoMessage() {} 197 func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 198 199 func (m *Metadata) GetValue() []byte { 200 if m != nil { 201 return m.Value 202 } 203 return nil 204 } 205 206 func (m *Metadata) GetSignatures() []*MetadataSignature { 207 if m != nil { 208 return m.Signatures 209 } 210 return nil 211 } 212 213 type MetadataSignature struct { 214 SignatureHeader []byte `protobuf:"bytes,1,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"` 215 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 216 } 217 218 func (m *MetadataSignature) Reset() { *m = MetadataSignature{} } 219 func (m *MetadataSignature) String() string { return proto.CompactTextString(m) } 220 func (*MetadataSignature) ProtoMessage() {} 221 func (*MetadataSignature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 222 223 func (m *MetadataSignature) GetSignatureHeader() []byte { 224 if m != nil { 225 return m.SignatureHeader 226 } 227 return nil 228 } 229 230 func (m *MetadataSignature) GetSignature() []byte { 231 if m != nil { 232 return m.Signature 233 } 234 return nil 235 } 236 237 type Header struct { 238 ChannelHeader []byte `protobuf:"bytes,1,opt,name=channel_header,json=channelHeader,proto3" json:"channel_header,omitempty"` 239 SignatureHeader []byte `protobuf:"bytes,2,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"` 240 } 241 242 func (m *Header) Reset() { *m = Header{} } 243 func (m *Header) String() string { return proto.CompactTextString(m) } 244 func (*Header) ProtoMessage() {} 245 func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 246 247 func (m *Header) GetChannelHeader() []byte { 248 if m != nil { 249 return m.ChannelHeader 250 } 251 return nil 252 } 253 254 func (m *Header) GetSignatureHeader() []byte { 255 if m != nil { 256 return m.SignatureHeader 257 } 258 return nil 259 } 260 261 // Header is a generic replay prevention and identity message to include in a signed payload 262 type ChannelHeader struct { 263 Type int32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` 264 // Version indicates message protocol version 265 Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` 266 // Timestamp is the local time when the message was created 267 // by the sender 268 Timestamp *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=timestamp" json:"timestamp,omitempty"` 269 // Identifier of the channel this message is bound for 270 ChannelId string `protobuf:"bytes,4,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` 271 // An unique identifier that is used end-to-end. 272 // - set by higher layers such as end user or SDK 273 // - passed to the endorser (which will check for uniqueness) 274 // - as the header is passed along unchanged, it will be 275 // be retrieved by the committer (uniqueness check here as well) 276 // - to be stored in the ledger 277 TxId string `protobuf:"bytes,5,opt,name=tx_id,json=txId" json:"tx_id,omitempty"` 278 // The epoch in which this header was generated, where epoch is defined based on block height 279 // Epoch in which the response has been generated. This field identifies a 280 // logical window of time. A proposal response is accepted by a peer only if 281 // two conditions hold: 282 // 1. the epoch specified in the message is the current epoch 283 // 2. this message has been only seen once during this epoch (i.e. it hasn't 284 // been replayed) 285 Epoch uint64 `protobuf:"varint,6,opt,name=epoch" json:"epoch,omitempty"` 286 // Extension that may be attached based on the header type 287 Extension []byte `protobuf:"bytes,7,opt,name=extension,proto3" json:"extension,omitempty"` 288 } 289 290 func (m *ChannelHeader) Reset() { *m = ChannelHeader{} } 291 func (m *ChannelHeader) String() string { return proto.CompactTextString(m) } 292 func (*ChannelHeader) ProtoMessage() {} 293 func (*ChannelHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 294 295 func (m *ChannelHeader) GetType() int32 { 296 if m != nil { 297 return m.Type 298 } 299 return 0 300 } 301 302 func (m *ChannelHeader) GetVersion() int32 { 303 if m != nil { 304 return m.Version 305 } 306 return 0 307 } 308 309 func (m *ChannelHeader) GetTimestamp() *google_protobuf.Timestamp { 310 if m != nil { 311 return m.Timestamp 312 } 313 return nil 314 } 315 316 func (m *ChannelHeader) GetChannelId() string { 317 if m != nil { 318 return m.ChannelId 319 } 320 return "" 321 } 322 323 func (m *ChannelHeader) GetTxId() string { 324 if m != nil { 325 return m.TxId 326 } 327 return "" 328 } 329 330 func (m *ChannelHeader) GetEpoch() uint64 { 331 if m != nil { 332 return m.Epoch 333 } 334 return 0 335 } 336 337 func (m *ChannelHeader) GetExtension() []byte { 338 if m != nil { 339 return m.Extension 340 } 341 return nil 342 } 343 344 type SignatureHeader struct { 345 // Creator of the message, specified as a certificate chain 346 Creator []byte `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` 347 // Arbitrary number that may only be used once. Can be used to detect replay attacks. 348 Nonce []byte `protobuf:"bytes,2,opt,name=nonce,proto3" json:"nonce,omitempty"` 349 } 350 351 func (m *SignatureHeader) Reset() { *m = SignatureHeader{} } 352 func (m *SignatureHeader) String() string { return proto.CompactTextString(m) } 353 func (*SignatureHeader) ProtoMessage() {} 354 func (*SignatureHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 355 356 func (m *SignatureHeader) GetCreator() []byte { 357 if m != nil { 358 return m.Creator 359 } 360 return nil 361 } 362 363 func (m *SignatureHeader) GetNonce() []byte { 364 if m != nil { 365 return m.Nonce 366 } 367 return nil 368 } 369 370 // Payload is the message contents (and header to allow for signing) 371 type Payload struct { 372 // Header is included to provide identity and prevent replay 373 Header *Header `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"` 374 // Data, the encoding of which is defined by the type in the header 375 Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` 376 } 377 378 func (m *Payload) Reset() { *m = Payload{} } 379 func (m *Payload) String() string { return proto.CompactTextString(m) } 380 func (*Payload) ProtoMessage() {} 381 func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 382 383 func (m *Payload) GetHeader() *Header { 384 if m != nil { 385 return m.Header 386 } 387 return nil 388 } 389 390 func (m *Payload) GetData() []byte { 391 if m != nil { 392 return m.Data 393 } 394 return nil 395 } 396 397 // Envelope wraps a Payload with a signature so that the message may be authenticated 398 type Envelope struct { 399 // A marshaled Payload 400 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 401 // A signature by the creator specified in the Payload header 402 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 403 } 404 405 func (m *Envelope) Reset() { *m = Envelope{} } 406 func (m *Envelope) String() string { return proto.CompactTextString(m) } 407 func (*Envelope) ProtoMessage() {} 408 func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 409 410 func (m *Envelope) GetPayload() []byte { 411 if m != nil { 412 return m.Payload 413 } 414 return nil 415 } 416 417 func (m *Envelope) GetSignature() []byte { 418 if m != nil { 419 return m.Signature 420 } 421 return nil 422 } 423 424 // This is finalized block structure to be shared among the orderer and peer 425 // Note that the BlockHeader chains to the previous BlockHeader, and the BlockData hash is embedded 426 // in the BlockHeader. This makes it natural and obvious that the Data is included in the hash, but 427 // the Metadata is not. 428 type Block struct { 429 Header *BlockHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"` 430 Data *BlockData `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` 431 Metadata *BlockMetadata `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"` 432 } 433 434 func (m *Block) Reset() { *m = Block{} } 435 func (m *Block) String() string { return proto.CompactTextString(m) } 436 func (*Block) ProtoMessage() {} 437 func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 438 439 func (m *Block) GetHeader() *BlockHeader { 440 if m != nil { 441 return m.Header 442 } 443 return nil 444 } 445 446 func (m *Block) GetData() *BlockData { 447 if m != nil { 448 return m.Data 449 } 450 return nil 451 } 452 453 func (m *Block) GetMetadata() *BlockMetadata { 454 if m != nil { 455 return m.Metadata 456 } 457 return nil 458 } 459 460 type BlockHeader struct { 461 Number uint64 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"` 462 Version uint64 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` 463 PreviousHash []byte `protobuf:"bytes,3,opt,name=previous_hash,json=previousHash,proto3" json:"previous_hash,omitempty"` 464 DataHash []byte `protobuf:"bytes,4,opt,name=data_hash,json=dataHash,proto3" json:"data_hash,omitempty"` 465 FeeAddress []byte `protobuf:"bytes,5,opt,name=fee_address,json=feeAddress,proto3" json:"fee_address,omitempty"` 466 } 467 468 func (m *BlockHeader) Reset() { *m = BlockHeader{} } 469 func (m *BlockHeader) String() string { return proto.CompactTextString(m) } 470 func (*BlockHeader) ProtoMessage() {} 471 func (*BlockHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 472 473 func (m *BlockHeader) GetNumber() uint64 { 474 if m != nil { 475 return m.Number 476 } 477 return 0 478 } 479 480 func (m *BlockHeader) GetVersion() uint64 { 481 if m != nil { 482 return m.Version 483 } 484 return 0 485 } 486 487 func (m *BlockHeader) GetPreviousHash() []byte { 488 if m != nil { 489 return m.PreviousHash 490 } 491 return nil 492 } 493 494 func (m *BlockHeader) GetDataHash() []byte { 495 if m != nil { 496 return m.DataHash 497 } 498 return nil 499 } 500 501 func (m *BlockHeader) GetFeeAddress() []byte { 502 if m != nil { 503 return m.FeeAddress 504 } 505 return nil 506 } 507 508 type BlockData struct { 509 Data [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` 510 } 511 512 func (m *BlockData) Reset() { *m = BlockData{} } 513 func (m *BlockData) String() string { return proto.CompactTextString(m) } 514 func (*BlockData) ProtoMessage() {} 515 func (*BlockData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 516 517 func (m *BlockData) GetData() [][]byte { 518 if m != nil { 519 return m.Data 520 } 521 return nil 522 } 523 524 type BlockMetadata struct { 525 Metadata [][]byte `protobuf:"bytes,1,rep,name=metadata,proto3" json:"metadata,omitempty"` 526 } 527 528 func (m *BlockMetadata) Reset() { *m = BlockMetadata{} } 529 func (m *BlockMetadata) String() string { return proto.CompactTextString(m) } 530 func (*BlockMetadata) ProtoMessage() {} 531 func (*BlockMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } 532 533 func (m *BlockMetadata) GetMetadata() [][]byte { 534 if m != nil { 535 return m.Metadata 536 } 537 return nil 538 } 539 540 // ProcessedBlock wraps an Block and The hash of the Block 541 type ProcessedBlock struct { 542 Block *Block `protobuf:"bytes,1,opt,name=block" json:"block,omitempty"` 543 Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` 544 } 545 546 func (m *ProcessedBlock) Reset() { *m = ProcessedBlock{} } 547 func (m *ProcessedBlock) String() string { return proto.CompactTextString(m) } 548 func (*ProcessedBlock) ProtoMessage() {} 549 func (*ProcessedBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } 550 551 func (m *ProcessedBlock) GetBlock() *Block { 552 if m != nil { 553 return m.Block 554 } 555 return nil 556 } 557 558 func (m *ProcessedBlock) GetHash() []byte { 559 if m != nil { 560 return m.Hash 561 } 562 return nil 563 } 564 565 func init() { 566 proto.RegisterType((*LastConfig)(nil), "common.LastConfig") 567 proto.RegisterType((*Metadata)(nil), "common.Metadata") 568 proto.RegisterType((*MetadataSignature)(nil), "common.MetadataSignature") 569 proto.RegisterType((*Header)(nil), "common.Header") 570 proto.RegisterType((*ChannelHeader)(nil), "common.ChannelHeader") 571 proto.RegisterType((*SignatureHeader)(nil), "common.SignatureHeader") 572 proto.RegisterType((*Payload)(nil), "common.Payload") 573 proto.RegisterType((*Envelope)(nil), "common.Envelope") 574 proto.RegisterType((*Block)(nil), "common.Block") 575 proto.RegisterType((*BlockHeader)(nil), "common.BlockHeader") 576 proto.RegisterType((*BlockData)(nil), "common.BlockData") 577 proto.RegisterType((*BlockMetadata)(nil), "common.BlockMetadata") 578 proto.RegisterType((*ProcessedBlock)(nil), "common.ProcessedBlock") 579 proto.RegisterEnum("common.Status", Status_name, Status_value) 580 proto.RegisterEnum("common.HeaderType", HeaderType_name, HeaderType_value) 581 proto.RegisterEnum("common.BlockMetadataIndex", BlockMetadataIndex_name, BlockMetadataIndex_value) 582 } 583 584 func init() { proto.RegisterFile("common/common.proto", fileDescriptor0) } 585 586 var fileDescriptor0 = []byte{ 587 // 964 bytes of a gzipped FileDescriptorProto 588 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xcd, 0x6e, 0xdb, 0x46, 589 0x10, 0x0e, 0xad, 0x3f, 0x6b, 0x64, 0xd9, 0xf4, 0x2a, 0x6e, 0x58, 0xb7, 0x81, 0x0d, 0x06, 0x29, 590 0x5c, 0xa7, 0x90, 0x51, 0xe7, 0xd2, 0x1e, 0x29, 0x72, 0x6d, 0x13, 0x56, 0x48, 0x77, 0x49, 0xa5, 591 0x68, 0x52, 0x80, 0x58, 0x89, 0x6b, 0x89, 0x88, 0x44, 0x0a, 0x22, 0x65, 0x38, 0x2f, 0x51, 0x14, 592 0x68, 0x2f, 0x3d, 0xf4, 0xd2, 0x63, 0x9f, 0xa4, 0x6f, 0xd1, 0x97, 0x28, 0xd0, 0x6b, 0xb1, 0xdc, 593 0x25, 0x2d, 0x29, 0x01, 0x7a, 0xe2, 0xce, 0x37, 0xdf, 0xee, 0x7c, 0x3b, 0xdf, 0x80, 0x0b, 0x9d, 594 0x51, 0x32, 0x9b, 0x25, 0xf1, 0x99, 0xf8, 0x74, 0xe7, 0x8b, 0x24, 0x4b, 0x50, 0x5d, 0x44, 0x87, 595 0x47, 0xe3, 0x24, 0x19, 0x4f, 0xd9, 0x59, 0x8e, 0x0e, 0x97, 0xb7, 0x67, 0x59, 0x34, 0x63, 0x69, 596 0x46, 0x67, 0x73, 0x41, 0xd4, 0x75, 0x80, 0x3e, 0x4d, 0x33, 0x33, 0x89, 0x6f, 0xa3, 0x31, 0x7a, 597 0x0c, 0xb5, 0x28, 0x0e, 0xd9, 0xbd, 0xa6, 0x1c, 0x2b, 0x27, 0x55, 0x22, 0x02, 0xfd, 0x2d, 0x6c, 598 0xbf, 0x62, 0x19, 0x0d, 0x69, 0x46, 0x39, 0xe3, 0x8e, 0x4e, 0x97, 0x2c, 0x67, 0xec, 0x10, 0x11, 599 0xa0, 0x6f, 0x01, 0xd2, 0x68, 0x1c, 0xd3, 0x6c, 0xb9, 0x60, 0xa9, 0xb6, 0x75, 0x5c, 0x39, 0x69, 600 0x9d, 0x7f, 0xda, 0x95, 0x8a, 0x8a, 0xbd, 0x5e, 0xc1, 0x20, 0x2b, 0x64, 0xfd, 0x47, 0xd8, 0xff, 601 0x80, 0x80, 0xbe, 0x04, 0xb5, 0xa4, 0x04, 0x13, 0x46, 0x43, 0xb6, 0x90, 0x05, 0xf7, 0x4a, 0xfc, 602 0x2a, 0x87, 0xd1, 0xe7, 0xd0, 0x2c, 0x21, 0x6d, 0x2b, 0xe7, 0x3c, 0x00, 0xfa, 0x1b, 0xa8, 0x4b, 603 0xde, 0x73, 0xd8, 0x1d, 0x4d, 0x68, 0x1c, 0xb3, 0xe9, 0xfa, 0x81, 0x6d, 0x89, 0x4a, 0xda, 0xc7, 604 0x2a, 0x6f, 0x7d, 0xb4, 0xb2, 0xfe, 0xb7, 0x02, 0x6d, 0x73, 0x6d, 0x33, 0x82, 0x6a, 0xf6, 0x7e, 605 0x2e, 0x7a, 0x53, 0x23, 0xf9, 0x1a, 0x69, 0xd0, 0xb8, 0x63, 0x8b, 0x34, 0x4a, 0xe2, 0xfc, 0x9c, 606 0x1a, 0x29, 0x42, 0xf4, 0x0d, 0x34, 0x4b, 0x37, 0xb4, 0xca, 0xb1, 0x72, 0xd2, 0x3a, 0x3f, 0xec, 607 0x0a, 0xbf, 0xba, 0x85, 0x5f, 0x5d, 0xbf, 0x60, 0x90, 0x07, 0x32, 0x7a, 0x0a, 0x50, 0xdc, 0x25, 608 0x0a, 0xb5, 0xea, 0xb1, 0x72, 0xd2, 0x24, 0x4d, 0x89, 0xd8, 0x21, 0xea, 0x40, 0x2d, 0xbb, 0xe7, 609 0x99, 0x5a, 0x9e, 0xa9, 0x66, 0xf7, 0x76, 0xc8, 0x8d, 0x63, 0xf3, 0x64, 0x34, 0xd1, 0xea, 0xc2, 610 0xda, 0x3c, 0xe0, 0xdd, 0x63, 0xf7, 0x19, 0x8b, 0x73, 0x7d, 0x0d, 0xd1, 0xbd, 0x12, 0xd0, 0x0d, 611 0xd8, 0xf3, 0x36, 0xda, 0xad, 0x41, 0x63, 0xb4, 0x60, 0x34, 0x4b, 0x8a, 0xfe, 0x15, 0x21, 0x2f, 612 0x10, 0x27, 0xf1, 0xa8, 0x30, 0x41, 0x04, 0x3a, 0x86, 0xc6, 0x0d, 0x7d, 0x3f, 0x4d, 0x68, 0x88, 613 0xbe, 0x80, 0xfa, 0x4a, 0xe7, 0x5b, 0xe7, 0xbb, 0xc5, 0x80, 0x88, 0xa3, 0x89, 0xcc, 0xf2, 0x2e, 614 0xf2, 0x69, 0x90, 0xe7, 0xe4, 0x6b, 0xbd, 0x07, 0xdb, 0x38, 0xbe, 0x63, 0xd3, 0x44, 0x74, 0x74, 615 0x2e, 0x8e, 0x2c, 0x24, 0xc8, 0xf0, 0x7f, 0x66, 0xe1, 0x27, 0x05, 0x6a, 0xbd, 0x69, 0x32, 0x7a, 616 0x87, 0x5e, 0x6c, 0x28, 0xe9, 0x14, 0x4a, 0xf2, 0xf4, 0x86, 0x9c, 0xe7, 0x2b, 0x72, 0x5a, 0xe7, 617 0xfb, 0x6b, 0x54, 0x8b, 0x66, 0x54, 0x28, 0x44, 0x5f, 0xc3, 0xf6, 0x4c, 0xce, 0xb1, 0x34, 0xf3, 618 0x60, 0x8d, 0x5a, 0x0c, 0x39, 0x29, 0x69, 0xfa, 0x1f, 0x0a, 0xb4, 0x56, 0x2a, 0xa2, 0x4f, 0xa0, 619 0x1e, 0x2f, 0x67, 0x43, 0x29, 0xab, 0x4a, 0x64, 0xb4, 0x39, 0x42, 0xd5, 0x87, 0x11, 0x7a, 0x06, 620 0xed, 0xf9, 0x82, 0xdd, 0x45, 0xc9, 0x32, 0x0d, 0x26, 0x34, 0x9d, 0xe4, 0x95, 0x77, 0xc8, 0x4e, 621 0x01, 0x5e, 0xd1, 0x74, 0x82, 0x3e, 0x83, 0x26, 0x2f, 0x27, 0x08, 0xd5, 0x9c, 0xb0, 0xcd, 0x81, 622 0x3c, 0x79, 0x04, 0xad, 0x5b, 0xc6, 0x02, 0x1a, 0x86, 0x0b, 0x96, 0xa6, 0xf9, 0xc4, 0xec, 0x10, 623 0xb8, 0x65, 0xcc, 0x10, 0x88, 0x7e, 0x04, 0xcd, 0xf2, 0xaa, 0xa5, 0x35, 0xca, 0x71, 0xa5, 0xb4, 624 0xe6, 0x05, 0xb4, 0xd7, 0x2e, 0x88, 0x0e, 0x57, 0x3a, 0x21, 0x88, 0x0f, 0x57, 0xb6, 0x61, 0xf7, 625 0x66, 0x91, 0x8c, 0x58, 0x9a, 0xb2, 0x50, 0x78, 0xf1, 0x0c, 0x6a, 0x43, 0xbe, 0x90, 0x56, 0xb4, 626 0xd7, 0x9a, 0x46, 0x44, 0x8e, 0xd7, 0xcd, 0xd5, 0xcb, 0x91, 0xe0, 0xeb, 0xd3, 0x3f, 0x15, 0xa8, 627 0x7b, 0x19, 0xcd, 0x96, 0x29, 0x6a, 0x41, 0x63, 0xe0, 0x5c, 0x3b, 0xee, 0xf7, 0x8e, 0xfa, 0x08, 628 0xed, 0x40, 0xc3, 0x1b, 0x98, 0x26, 0xf6, 0x3c, 0xf5, 0x2f, 0x05, 0xa9, 0xd0, 0xea, 0x19, 0x56, 629 0x40, 0xf0, 0x77, 0x03, 0xec, 0xf9, 0xea, 0xcf, 0x15, 0xb4, 0x0b, 0xcd, 0x0b, 0x97, 0xf4, 0x6c, 630 0xcb, 0xc2, 0x8e, 0xfa, 0x4b, 0x1e, 0x3b, 0xae, 0x1f, 0x5c, 0xb8, 0x03, 0xc7, 0x52, 0x7f, 0xad, 631 0xa0, 0xa7, 0xa0, 0x49, 0x76, 0x80, 0x1d, 0xdf, 0xf6, 0x7f, 0x08, 0x7c, 0xd7, 0x0d, 0xfa, 0x06, 632 0xb9, 0xc4, 0xea, 0xef, 0x15, 0x74, 0x08, 0x07, 0xb6, 0xe3, 0x63, 0xe2, 0x18, 0xfd, 0xc0, 0xc3, 633 0xe4, 0x35, 0x26, 0x01, 0x26, 0xc4, 0x25, 0xea, 0x3f, 0x15, 0xa4, 0x41, 0x87, 0x43, 0xb6, 0x89, 634 0x83, 0x81, 0x63, 0xbc, 0x36, 0xec, 0xbe, 0xd1, 0xeb, 0x63, 0xf5, 0xdf, 0xca, 0xe9, 0x6f, 0x0a, 635 0x80, 0x70, 0xd9, 0xe7, 0x3f, 0x85, 0x16, 0x34, 0x5e, 0x61, 0xcf, 0x33, 0x2e, 0xb1, 0xfa, 0x08, 636 0x01, 0xd4, 0x4d, 0xd7, 0xb9, 0xb0, 0x2f, 0x55, 0x05, 0xed, 0x43, 0x5b, 0xac, 0x83, 0xc1, 0x8d, 637 0x65, 0xf8, 0x58, 0xdd, 0x42, 0x1a, 0x3c, 0xc6, 0x8e, 0xe5, 0x12, 0x0f, 0x93, 0xc0, 0x27, 0x86, 638 0xe3, 0x19, 0xa6, 0x6f, 0xbb, 0x8e, 0x5a, 0x41, 0x4f, 0xa0, 0xe3, 0x12, 0x0b, 0x93, 0x8d, 0x44, 639 0x15, 0x1d, 0xc0, 0xbe, 0x85, 0xfb, 0x36, 0xd7, 0xe6, 0x61, 0x7c, 0x1d, 0xd8, 0xce, 0x85, 0xab, 640 0xd6, 0x38, 0x6c, 0x5e, 0x19, 0xb6, 0x63, 0xba, 0x16, 0x0e, 0x6e, 0x0c, 0xf3, 0x9a, 0xd7, 0xaf, 641 0x9f, 0xbe, 0x05, 0xb4, 0x66, 0xa0, 0xcd, 0x7f, 0xfa, 0x68, 0x17, 0xc0, 0xb3, 0x2f, 0x1d, 0xc3, 642 0x1f, 0x10, 0xec, 0xa9, 0x8f, 0xd0, 0x1e, 0xb4, 0xfa, 0x86, 0xe7, 0x07, 0xa5, 0xd4, 0x27, 0xd0, 643 0x59, 0xa9, 0xea, 0x05, 0x17, 0x76, 0xdf, 0xc7, 0x44, 0xdd, 0xe2, 0x97, 0x93, 0xb2, 0xd4, 0x4a, 644 0x6f, 0x04, 0x5f, 0x25, 0x8b, 0x71, 0x37, 0x8a, 0xdf, 0x4d, 0xe9, 0x30, 0xbd, 0x4d, 0x96, 0x71, 645 0x48, 0xb3, 0x28, 0x89, 0x39, 0x32, 0x9a, 0xd0, 0x48, 0x3e, 0x58, 0xa9, 0xb4, 0xfd, 0xcd, 0xcb, 646 0x71, 0x94, 0x4d, 0x96, 0x43, 0x1e, 0x9e, 0x7d, 0xb0, 0xe9, 0xac, 0xd8, 0x24, 0xde, 0xb3, 0x54, 647 0xbe, 0x79, 0xc3, 0x7a, 0x1e, 0xbe, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x46, 0x72, 0xb1, 648 0x0b, 0x07, 0x00, 0x00, 649 }