github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/plugins/shared/hclspec/hcl_spec.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto 3 4 package hclspec 5 6 /* 7 Spec allows exposing the specification for an HCL body, allowing for parsing and 8 validation. 9 10 Certain expressions within a specification may use the following functions. 11 The documentation for each spec type above specifies where functions may 12 be used. 13 14 `abs(number)` returns the absolute (positive) value of the given number. 15 `coalesce(vals...)` returns the first non-null value given. 16 `concat(lists...)` concatenates together all of the given lists to produce a new list. 17 `hasindex(val, idx)` returns true if the expression `val[idx]` could succeed. 18 `int(number)` returns the integer portion of the given number, rounding towards zero. 19 `jsondecode(str)` interprets the given string as JSON and returns the resulting data structure. 20 `jsonencode(val)` returns a JSON-serialized version of the given value. 21 `length(collection)` returns the number of elements in the given collection (list, set, map, object, or tuple). 22 `lower(string)` returns the given string with all uppercase letters converted to lowercase. 23 `max(numbers...)` returns the greatest of the given numbers. 24 `min(numbers...)` returns the smallest of the given numbers. 25 `reverse(string)` returns the given string with all of the characters in reverse order. 26 `strlen(string)` returns the number of characters in the given string. 27 `substr(string, offset, length)` returns the requested substring of the given string. 28 `upper(string)` returns the given string with all lowercase letters converted to uppercase. 29 30 ## Type Expressions 31 32 Type expressions are used to describe the expected type of an attribute, as 33 an additional validation constraint. 34 35 A type expression uses primitive type names and compound type constructors. 36 A type constructor builds a new type based on one or more type expression 37 arguments. 38 39 The following type names and type constructors are supported: 40 41 `any` is a wildcard that accepts a value of any type. (In HCL terms, this 42 is the _dynamic pseudo-type_.) 43 `string` is a Unicode string. 44 `number` is an arbitrary-precision floating point number. 45 `bool` is a boolean value (`true` or `false`) 46 `list(element_type)` constructs a list type with the given element type 47 `set(element_type)` constructs a set type with the given element type 48 `map(element_type)` constructs a map type with the given element type 49 `object({name1 = element_type, name2 = element_type, ...})` constructs 50 an object type with the given attribute types. 51 `tuple([element_type, element_type, ...])` constructs a tuple type with 52 the given element types. This can be used, for example, to require an 53 array with a particular number of elements, or with elements of different 54 types. 55 56 `null` is a valid value of any type, and not a type itself. 57 */ 58 59 import proto "github.com/golang/protobuf/proto" 60 import fmt "fmt" 61 import math "math" 62 63 // Reference imports to suppress errors if they are not otherwise used. 64 var _ = proto.Marshal 65 var _ = fmt.Errorf 66 var _ = math.Inf 67 68 // This is a compile-time assertion to ensure that this generated file 69 // is compatible with the proto package it is being compiled against. 70 // A compilation error at this line likely means your copy of the 71 // proto package needs to be updated. 72 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 73 74 // Spec defines the available specification types. 75 type Spec struct { 76 // Types that are valid to be assigned to Block: 77 // *Spec_Object 78 // *Spec_Array 79 // *Spec_Attr 80 // *Spec_BlockValue 81 // *Spec_BlockList 82 // *Spec_BlockSet 83 // *Spec_BlockMap 84 // *Spec_Default 85 // *Spec_Literal 86 Block isSpec_Block `protobuf_oneof:"block"` 87 XXX_NoUnkeyedLiteral struct{} `json:"-"` 88 XXX_unrecognized []byte `json:"-"` 89 XXX_sizecache int32 `json:"-"` 90 } 91 92 func (m *Spec) Reset() { *m = Spec{} } 93 func (m *Spec) String() string { return proto.CompactTextString(m) } 94 func (*Spec) ProtoMessage() {} 95 func (*Spec) Descriptor() ([]byte, []int) { 96 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{0} 97 } 98 func (m *Spec) XXX_Unmarshal(b []byte) error { 99 return xxx_messageInfo_Spec.Unmarshal(m, b) 100 } 101 func (m *Spec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 102 return xxx_messageInfo_Spec.Marshal(b, m, deterministic) 103 } 104 func (dst *Spec) XXX_Merge(src proto.Message) { 105 xxx_messageInfo_Spec.Merge(dst, src) 106 } 107 func (m *Spec) XXX_Size() int { 108 return xxx_messageInfo_Spec.Size(m) 109 } 110 func (m *Spec) XXX_DiscardUnknown() { 111 xxx_messageInfo_Spec.DiscardUnknown(m) 112 } 113 114 var xxx_messageInfo_Spec proto.InternalMessageInfo 115 116 type isSpec_Block interface { 117 isSpec_Block() 118 } 119 120 type Spec_Object struct { 121 Object *Object `protobuf:"bytes,1,opt,name=object,proto3,oneof"` 122 } 123 124 type Spec_Array struct { 125 Array *Array `protobuf:"bytes,2,opt,name=array,proto3,oneof"` 126 } 127 128 type Spec_Attr struct { 129 Attr *Attr `protobuf:"bytes,3,opt,name=Attr,proto3,oneof"` 130 } 131 132 type Spec_BlockValue struct { 133 BlockValue *Block `protobuf:"bytes,4,opt,name=block_value,json=blockValue,proto3,oneof"` 134 } 135 136 type Spec_BlockList struct { 137 BlockList *BlockList `protobuf:"bytes,5,opt,name=block_list,json=blockList,proto3,oneof"` 138 } 139 140 type Spec_BlockSet struct { 141 BlockSet *BlockSet `protobuf:"bytes,6,opt,name=block_set,json=blockSet,proto3,oneof"` 142 } 143 144 type Spec_BlockMap struct { 145 BlockMap *BlockMap `protobuf:"bytes,7,opt,name=block_map,json=blockMap,proto3,oneof"` 146 } 147 148 type Spec_Default struct { 149 Default *Default `protobuf:"bytes,8,opt,name=default,proto3,oneof"` 150 } 151 152 type Spec_Literal struct { 153 Literal *Literal `protobuf:"bytes,9,opt,name=literal,proto3,oneof"` 154 } 155 156 func (*Spec_Object) isSpec_Block() {} 157 158 func (*Spec_Array) isSpec_Block() {} 159 160 func (*Spec_Attr) isSpec_Block() {} 161 162 func (*Spec_BlockValue) isSpec_Block() {} 163 164 func (*Spec_BlockList) isSpec_Block() {} 165 166 func (*Spec_BlockSet) isSpec_Block() {} 167 168 func (*Spec_BlockMap) isSpec_Block() {} 169 170 func (*Spec_Default) isSpec_Block() {} 171 172 func (*Spec_Literal) isSpec_Block() {} 173 174 func (m *Spec) GetBlock() isSpec_Block { 175 if m != nil { 176 return m.Block 177 } 178 return nil 179 } 180 181 func (m *Spec) GetObject() *Object { 182 if x, ok := m.GetBlock().(*Spec_Object); ok { 183 return x.Object 184 } 185 return nil 186 } 187 188 func (m *Spec) GetArray() *Array { 189 if x, ok := m.GetBlock().(*Spec_Array); ok { 190 return x.Array 191 } 192 return nil 193 } 194 195 func (m *Spec) GetAttr() *Attr { 196 if x, ok := m.GetBlock().(*Spec_Attr); ok { 197 return x.Attr 198 } 199 return nil 200 } 201 202 func (m *Spec) GetBlockValue() *Block { 203 if x, ok := m.GetBlock().(*Spec_BlockValue); ok { 204 return x.BlockValue 205 } 206 return nil 207 } 208 209 func (m *Spec) GetBlockList() *BlockList { 210 if x, ok := m.GetBlock().(*Spec_BlockList); ok { 211 return x.BlockList 212 } 213 return nil 214 } 215 216 func (m *Spec) GetBlockSet() *BlockSet { 217 if x, ok := m.GetBlock().(*Spec_BlockSet); ok { 218 return x.BlockSet 219 } 220 return nil 221 } 222 223 func (m *Spec) GetBlockMap() *BlockMap { 224 if x, ok := m.GetBlock().(*Spec_BlockMap); ok { 225 return x.BlockMap 226 } 227 return nil 228 } 229 230 func (m *Spec) GetDefault() *Default { 231 if x, ok := m.GetBlock().(*Spec_Default); ok { 232 return x.Default 233 } 234 return nil 235 } 236 237 func (m *Spec) GetLiteral() *Literal { 238 if x, ok := m.GetBlock().(*Spec_Literal); ok { 239 return x.Literal 240 } 241 return nil 242 } 243 244 // XXX_OneofFuncs is for the internal use of the proto package. 245 func (*Spec) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { 246 return _Spec_OneofMarshaler, _Spec_OneofUnmarshaler, _Spec_OneofSizer, []interface{}{ 247 (*Spec_Object)(nil), 248 (*Spec_Array)(nil), 249 (*Spec_Attr)(nil), 250 (*Spec_BlockValue)(nil), 251 (*Spec_BlockList)(nil), 252 (*Spec_BlockSet)(nil), 253 (*Spec_BlockMap)(nil), 254 (*Spec_Default)(nil), 255 (*Spec_Literal)(nil), 256 } 257 } 258 259 func _Spec_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 260 m := msg.(*Spec) 261 // block 262 switch x := m.Block.(type) { 263 case *Spec_Object: 264 b.EncodeVarint(1<<3 | proto.WireBytes) 265 if err := b.EncodeMessage(x.Object); err != nil { 266 return err 267 } 268 case *Spec_Array: 269 b.EncodeVarint(2<<3 | proto.WireBytes) 270 if err := b.EncodeMessage(x.Array); err != nil { 271 return err 272 } 273 case *Spec_Attr: 274 b.EncodeVarint(3<<3 | proto.WireBytes) 275 if err := b.EncodeMessage(x.Attr); err != nil { 276 return err 277 } 278 case *Spec_BlockValue: 279 b.EncodeVarint(4<<3 | proto.WireBytes) 280 if err := b.EncodeMessage(x.BlockValue); err != nil { 281 return err 282 } 283 case *Spec_BlockList: 284 b.EncodeVarint(5<<3 | proto.WireBytes) 285 if err := b.EncodeMessage(x.BlockList); err != nil { 286 return err 287 } 288 case *Spec_BlockSet: 289 b.EncodeVarint(6<<3 | proto.WireBytes) 290 if err := b.EncodeMessage(x.BlockSet); err != nil { 291 return err 292 } 293 case *Spec_BlockMap: 294 b.EncodeVarint(7<<3 | proto.WireBytes) 295 if err := b.EncodeMessage(x.BlockMap); err != nil { 296 return err 297 } 298 case *Spec_Default: 299 b.EncodeVarint(8<<3 | proto.WireBytes) 300 if err := b.EncodeMessage(x.Default); err != nil { 301 return err 302 } 303 case *Spec_Literal: 304 b.EncodeVarint(9<<3 | proto.WireBytes) 305 if err := b.EncodeMessage(x.Literal); err != nil { 306 return err 307 } 308 case nil: 309 default: 310 return fmt.Errorf("Spec.Block has unexpected type %T", x) 311 } 312 return nil 313 } 314 315 func _Spec_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 316 m := msg.(*Spec) 317 switch tag { 318 case 1: // block.object 319 if wire != proto.WireBytes { 320 return true, proto.ErrInternalBadWireType 321 } 322 msg := new(Object) 323 err := b.DecodeMessage(msg) 324 m.Block = &Spec_Object{msg} 325 return true, err 326 case 2: // block.array 327 if wire != proto.WireBytes { 328 return true, proto.ErrInternalBadWireType 329 } 330 msg := new(Array) 331 err := b.DecodeMessage(msg) 332 m.Block = &Spec_Array{msg} 333 return true, err 334 case 3: // block.Attr 335 if wire != proto.WireBytes { 336 return true, proto.ErrInternalBadWireType 337 } 338 msg := new(Attr) 339 err := b.DecodeMessage(msg) 340 m.Block = &Spec_Attr{msg} 341 return true, err 342 case 4: // block.block_value 343 if wire != proto.WireBytes { 344 return true, proto.ErrInternalBadWireType 345 } 346 msg := new(Block) 347 err := b.DecodeMessage(msg) 348 m.Block = &Spec_BlockValue{msg} 349 return true, err 350 case 5: // block.block_list 351 if wire != proto.WireBytes { 352 return true, proto.ErrInternalBadWireType 353 } 354 msg := new(BlockList) 355 err := b.DecodeMessage(msg) 356 m.Block = &Spec_BlockList{msg} 357 return true, err 358 case 6: // block.block_set 359 if wire != proto.WireBytes { 360 return true, proto.ErrInternalBadWireType 361 } 362 msg := new(BlockSet) 363 err := b.DecodeMessage(msg) 364 m.Block = &Spec_BlockSet{msg} 365 return true, err 366 case 7: // block.block_map 367 if wire != proto.WireBytes { 368 return true, proto.ErrInternalBadWireType 369 } 370 msg := new(BlockMap) 371 err := b.DecodeMessage(msg) 372 m.Block = &Spec_BlockMap{msg} 373 return true, err 374 case 8: // block.default 375 if wire != proto.WireBytes { 376 return true, proto.ErrInternalBadWireType 377 } 378 msg := new(Default) 379 err := b.DecodeMessage(msg) 380 m.Block = &Spec_Default{msg} 381 return true, err 382 case 9: // block.literal 383 if wire != proto.WireBytes { 384 return true, proto.ErrInternalBadWireType 385 } 386 msg := new(Literal) 387 err := b.DecodeMessage(msg) 388 m.Block = &Spec_Literal{msg} 389 return true, err 390 default: 391 return false, nil 392 } 393 } 394 395 func _Spec_OneofSizer(msg proto.Message) (n int) { 396 m := msg.(*Spec) 397 // block 398 switch x := m.Block.(type) { 399 case *Spec_Object: 400 s := proto.Size(x.Object) 401 n += 1 // tag and wire 402 n += proto.SizeVarint(uint64(s)) 403 n += s 404 case *Spec_Array: 405 s := proto.Size(x.Array) 406 n += 1 // tag and wire 407 n += proto.SizeVarint(uint64(s)) 408 n += s 409 case *Spec_Attr: 410 s := proto.Size(x.Attr) 411 n += 1 // tag and wire 412 n += proto.SizeVarint(uint64(s)) 413 n += s 414 case *Spec_BlockValue: 415 s := proto.Size(x.BlockValue) 416 n += 1 // tag and wire 417 n += proto.SizeVarint(uint64(s)) 418 n += s 419 case *Spec_BlockList: 420 s := proto.Size(x.BlockList) 421 n += 1 // tag and wire 422 n += proto.SizeVarint(uint64(s)) 423 n += s 424 case *Spec_BlockSet: 425 s := proto.Size(x.BlockSet) 426 n += 1 // tag and wire 427 n += proto.SizeVarint(uint64(s)) 428 n += s 429 case *Spec_BlockMap: 430 s := proto.Size(x.BlockMap) 431 n += 1 // tag and wire 432 n += proto.SizeVarint(uint64(s)) 433 n += s 434 case *Spec_Default: 435 s := proto.Size(x.Default) 436 n += 1 // tag and wire 437 n += proto.SizeVarint(uint64(s)) 438 n += s 439 case *Spec_Literal: 440 s := proto.Size(x.Literal) 441 n += 1 // tag and wire 442 n += proto.SizeVarint(uint64(s)) 443 n += s 444 case nil: 445 default: 446 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 447 } 448 return n 449 } 450 451 // Attr spec type reads the value of an attribute in the current body 452 // and returns that value as its result. It also creates validation constraints 453 // for the given attribute name and its value. 454 // 455 // ```hcl 456 // Attr { 457 // name = "document_root" 458 // type = string 459 // required = true 460 // } 461 // ``` 462 // 463 // `Attr` spec blocks accept the following arguments: 464 // 465 // `name` (required) - The attribute name to expect within the HCL input file. 466 // This may be omitted when a default name selector is created by a parent 467 // `Object` spec, if the input attribute name should match the output JSON 468 // object property name. 469 // 470 // `type` (optional) - A [type expression](#type-expressions) that the given 471 // attribute value must conform to. If this argument is set, `hcldec` will 472 // automatically convert the given input value to this type or produce an 473 // error if that is not possible. 474 // 475 // `required` (optional) - If set to `true`, `hcldec` will produce an error 476 // if a value is not provided for the source attribute. 477 // 478 // `Attr` is a leaf spec type, so no nested spec blocks are permitted. 479 type Attr struct { 480 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 481 Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` 482 Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"` 483 XXX_NoUnkeyedLiteral struct{} `json:"-"` 484 XXX_unrecognized []byte `json:"-"` 485 XXX_sizecache int32 `json:"-"` 486 } 487 488 func (m *Attr) Reset() { *m = Attr{} } 489 func (m *Attr) String() string { return proto.CompactTextString(m) } 490 func (*Attr) ProtoMessage() {} 491 func (*Attr) Descriptor() ([]byte, []int) { 492 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{1} 493 } 494 func (m *Attr) XXX_Unmarshal(b []byte) error { 495 return xxx_messageInfo_Attr.Unmarshal(m, b) 496 } 497 func (m *Attr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 498 return xxx_messageInfo_Attr.Marshal(b, m, deterministic) 499 } 500 func (dst *Attr) XXX_Merge(src proto.Message) { 501 xxx_messageInfo_Attr.Merge(dst, src) 502 } 503 func (m *Attr) XXX_Size() int { 504 return xxx_messageInfo_Attr.Size(m) 505 } 506 func (m *Attr) XXX_DiscardUnknown() { 507 xxx_messageInfo_Attr.DiscardUnknown(m) 508 } 509 510 var xxx_messageInfo_Attr proto.InternalMessageInfo 511 512 func (m *Attr) GetName() string { 513 if m != nil { 514 return m.Name 515 } 516 return "" 517 } 518 519 func (m *Attr) GetType() string { 520 if m != nil { 521 return m.Type 522 } 523 return "" 524 } 525 526 func (m *Attr) GetRequired() bool { 527 if m != nil { 528 return m.Required 529 } 530 return false 531 } 532 533 // Block spec type applies one nested spec block to the contents of a 534 // block within the current body and returns the result of that spec. It also 535 // creates validation constraints for the given block type name. 536 // 537 // ```hcl 538 // Block { 539 // name = "logging" 540 // 541 // Object { 542 // Attr "level" { 543 // type = string 544 // } 545 // Attr "file" { 546 // type = string 547 // } 548 // } 549 // } 550 // ``` 551 // 552 // `Block` spec blocks accept the following arguments: 553 // 554 // `name` (required) - The block type name to expect within the HCL 555 // input file. This may be omitted when a default name selector is created 556 // by a parent `Object` spec, if the input block type name should match the 557 // output JSON object property name. 558 // 559 // `required` (optional) - If set to `true`, `hcldec` will produce an error 560 // if a block of the specified type is not present in the current body. 561 // 562 // `Block` creates a validation constraint that there must be zero or one blocks 563 // of the given type name, or exactly one if `required` is set. 564 // 565 // `Block` expects a single nested spec block, which is applied to the body of 566 // the block of the given type when it is present. 567 // 568 type Block struct { 569 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 570 Required bool `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"` 571 Nested *Spec `protobuf:"bytes,3,opt,name=nested,proto3" json:"nested,omitempty"` 572 XXX_NoUnkeyedLiteral struct{} `json:"-"` 573 XXX_unrecognized []byte `json:"-"` 574 XXX_sizecache int32 `json:"-"` 575 } 576 577 func (m *Block) Reset() { *m = Block{} } 578 func (m *Block) String() string { return proto.CompactTextString(m) } 579 func (*Block) ProtoMessage() {} 580 func (*Block) Descriptor() ([]byte, []int) { 581 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{2} 582 } 583 func (m *Block) XXX_Unmarshal(b []byte) error { 584 return xxx_messageInfo_Block.Unmarshal(m, b) 585 } 586 func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 587 return xxx_messageInfo_Block.Marshal(b, m, deterministic) 588 } 589 func (dst *Block) XXX_Merge(src proto.Message) { 590 xxx_messageInfo_Block.Merge(dst, src) 591 } 592 func (m *Block) XXX_Size() int { 593 return xxx_messageInfo_Block.Size(m) 594 } 595 func (m *Block) XXX_DiscardUnknown() { 596 xxx_messageInfo_Block.DiscardUnknown(m) 597 } 598 599 var xxx_messageInfo_Block proto.InternalMessageInfo 600 601 func (m *Block) GetName() string { 602 if m != nil { 603 return m.Name 604 } 605 return "" 606 } 607 608 func (m *Block) GetRequired() bool { 609 if m != nil { 610 return m.Required 611 } 612 return false 613 } 614 615 func (m *Block) GetNested() *Spec { 616 if m != nil { 617 return m.Nested 618 } 619 return nil 620 } 621 622 // BlockList spec type is similar to `Block`, but it accepts zero or 623 // more blocks of a specified type rather than requiring zero or one. The 624 // result is a JSON array with one entry per block of the given type. 625 // 626 // ```hcl 627 // BlockList { 628 // name = "log_file" 629 // 630 // Object { 631 // Attr "level" { 632 // type = string 633 // } 634 // Attr "filename" { 635 // type = string 636 // required = true 637 // } 638 // } 639 // } 640 // ``` 641 // 642 // `BlockList` spec blocks accept the following arguments: 643 // 644 // `name` (required) - The block type name to expect within the HCL 645 // input file. This may be omitted when a default name selector is created 646 // by a parent `Object` spec, if the input block type name should match the 647 // output JSON object property name. 648 // 649 // `min_items` (optional) - If set to a number greater than zero, `hcldec` will 650 // produce an error if fewer than the given number of blocks are present. 651 // 652 // `max_items` (optional) - If set to a number greater than zero, `hcldec` will 653 // produce an error if more than the given number of blocks are present. This 654 // attribute must be greater than or equal to `min_items` if both are set. 655 // 656 // `Block` creates a validation constraint on the number of blocks of the given 657 // type that must be present. 658 // 659 // `Block` expects a single nested spec block, which is applied to the body of 660 // each matching block to produce the resulting list items. 661 // 662 type BlockList struct { 663 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 664 MinItems uint64 `protobuf:"varint,2,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` 665 MaxItems uint64 `protobuf:"varint,3,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` 666 Nested *Spec `protobuf:"bytes,4,opt,name=nested,proto3" json:"nested,omitempty"` 667 XXX_NoUnkeyedLiteral struct{} `json:"-"` 668 XXX_unrecognized []byte `json:"-"` 669 XXX_sizecache int32 `json:"-"` 670 } 671 672 func (m *BlockList) Reset() { *m = BlockList{} } 673 func (m *BlockList) String() string { return proto.CompactTextString(m) } 674 func (*BlockList) ProtoMessage() {} 675 func (*BlockList) Descriptor() ([]byte, []int) { 676 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{3} 677 } 678 func (m *BlockList) XXX_Unmarshal(b []byte) error { 679 return xxx_messageInfo_BlockList.Unmarshal(m, b) 680 } 681 func (m *BlockList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 682 return xxx_messageInfo_BlockList.Marshal(b, m, deterministic) 683 } 684 func (dst *BlockList) XXX_Merge(src proto.Message) { 685 xxx_messageInfo_BlockList.Merge(dst, src) 686 } 687 func (m *BlockList) XXX_Size() int { 688 return xxx_messageInfo_BlockList.Size(m) 689 } 690 func (m *BlockList) XXX_DiscardUnknown() { 691 xxx_messageInfo_BlockList.DiscardUnknown(m) 692 } 693 694 var xxx_messageInfo_BlockList proto.InternalMessageInfo 695 696 func (m *BlockList) GetName() string { 697 if m != nil { 698 return m.Name 699 } 700 return "" 701 } 702 703 func (m *BlockList) GetMinItems() uint64 { 704 if m != nil { 705 return m.MinItems 706 } 707 return 0 708 } 709 710 func (m *BlockList) GetMaxItems() uint64 { 711 if m != nil { 712 return m.MaxItems 713 } 714 return 0 715 } 716 717 func (m *BlockList) GetNested() *Spec { 718 if m != nil { 719 return m.Nested 720 } 721 return nil 722 } 723 724 // BlockSet spec type behaves the same as BlockList except that 725 // the result is in no specific order and any duplicate items are removed. 726 // 727 // ```hcl 728 // BlockSet { 729 // name = "log_file" 730 // 731 // Object { 732 // Attr "level" { 733 // type = string 734 // } 735 // Attr "filename" { 736 // type = string 737 // required = true 738 // } 739 // } 740 // } 741 // ``` 742 // 743 // The contents of `BlockSet` are the same as for `BlockList`. 744 // 745 type BlockSet struct { 746 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 747 MinItems uint64 `protobuf:"varint,2,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"` 748 MaxItems uint64 `protobuf:"varint,3,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"` 749 Nested *Spec `protobuf:"bytes,4,opt,name=nested,proto3" json:"nested,omitempty"` 750 XXX_NoUnkeyedLiteral struct{} `json:"-"` 751 XXX_unrecognized []byte `json:"-"` 752 XXX_sizecache int32 `json:"-"` 753 } 754 755 func (m *BlockSet) Reset() { *m = BlockSet{} } 756 func (m *BlockSet) String() string { return proto.CompactTextString(m) } 757 func (*BlockSet) ProtoMessage() {} 758 func (*BlockSet) Descriptor() ([]byte, []int) { 759 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{4} 760 } 761 func (m *BlockSet) XXX_Unmarshal(b []byte) error { 762 return xxx_messageInfo_BlockSet.Unmarshal(m, b) 763 } 764 func (m *BlockSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 765 return xxx_messageInfo_BlockSet.Marshal(b, m, deterministic) 766 } 767 func (dst *BlockSet) XXX_Merge(src proto.Message) { 768 xxx_messageInfo_BlockSet.Merge(dst, src) 769 } 770 func (m *BlockSet) XXX_Size() int { 771 return xxx_messageInfo_BlockSet.Size(m) 772 } 773 func (m *BlockSet) XXX_DiscardUnknown() { 774 xxx_messageInfo_BlockSet.DiscardUnknown(m) 775 } 776 777 var xxx_messageInfo_BlockSet proto.InternalMessageInfo 778 779 func (m *BlockSet) GetName() string { 780 if m != nil { 781 return m.Name 782 } 783 return "" 784 } 785 786 func (m *BlockSet) GetMinItems() uint64 { 787 if m != nil { 788 return m.MinItems 789 } 790 return 0 791 } 792 793 func (m *BlockSet) GetMaxItems() uint64 { 794 if m != nil { 795 return m.MaxItems 796 } 797 return 0 798 } 799 800 func (m *BlockSet) GetNested() *Spec { 801 if m != nil { 802 return m.Nested 803 } 804 return nil 805 } 806 807 // BlockMap spec type is similar to `Block`, but it accepts zero or 808 // more blocks of a specified type rather than requiring zero or one. The 809 // result is a JSON object, or possibly multiple nested JSON objects, whose 810 // properties are derived from the labels set on each matching block. 811 // 812 // ```hcl 813 // BlockMap { 814 // name = "log_file" 815 // labels = ["filename"] 816 // 817 // Object { 818 // Attr "level" { 819 // type = string 820 // required = true 821 // } 822 // } 823 // } 824 // ``` 825 // 826 // `BlockMap` spec blocks accept the following arguments: 827 // 828 // `name` (required) - The block type name to expect within the HCL 829 // input file. This may be omitted when a default name selector is created 830 // by a parent `Object` spec, if the input block type name should match the 831 // output JSON object property name. 832 // 833 // `labels` (required) - A list of user-oriented block label names. Each entry 834 // in this list creates one level of object within the output value, and 835 // requires one additional block header label on any child block of this type. 836 // Block header labels are the quoted strings that appear after the block type 837 // name but before the opening `{`. 838 // 839 // `Block` creates a validation constraint on the number of labels that blocks 840 // of the given type must have. 841 // 842 // `Block` expects a single nested spec block, which is applied to the body of 843 // each matching block to produce the resulting map items. 844 // 845 type BlockMap struct { 846 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 847 Labels []string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty"` 848 Nested *Spec `protobuf:"bytes,3,opt,name=nested,proto3" json:"nested,omitempty"` 849 XXX_NoUnkeyedLiteral struct{} `json:"-"` 850 XXX_unrecognized []byte `json:"-"` 851 XXX_sizecache int32 `json:"-"` 852 } 853 854 func (m *BlockMap) Reset() { *m = BlockMap{} } 855 func (m *BlockMap) String() string { return proto.CompactTextString(m) } 856 func (*BlockMap) ProtoMessage() {} 857 func (*BlockMap) Descriptor() ([]byte, []int) { 858 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{5} 859 } 860 func (m *BlockMap) XXX_Unmarshal(b []byte) error { 861 return xxx_messageInfo_BlockMap.Unmarshal(m, b) 862 } 863 func (m *BlockMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 864 return xxx_messageInfo_BlockMap.Marshal(b, m, deterministic) 865 } 866 func (dst *BlockMap) XXX_Merge(src proto.Message) { 867 xxx_messageInfo_BlockMap.Merge(dst, src) 868 } 869 func (m *BlockMap) XXX_Size() int { 870 return xxx_messageInfo_BlockMap.Size(m) 871 } 872 func (m *BlockMap) XXX_DiscardUnknown() { 873 xxx_messageInfo_BlockMap.DiscardUnknown(m) 874 } 875 876 var xxx_messageInfo_BlockMap proto.InternalMessageInfo 877 878 func (m *BlockMap) GetName() string { 879 if m != nil { 880 return m.Name 881 } 882 return "" 883 } 884 885 func (m *BlockMap) GetLabels() []string { 886 if m != nil { 887 return m.Labels 888 } 889 return nil 890 } 891 892 func (m *BlockMap) GetNested() *Spec { 893 if m != nil { 894 return m.Nested 895 } 896 return nil 897 } 898 899 // Literal spec type returns a given literal value, and creates no 900 // validation constraints. It is most commonly used with the `Default` spec 901 // type to create a fallback value, but can also be used e.g. to fill out 902 // required properties in an `Object` spec that do not correspond to any 903 // construct in the input configuration. 904 // 905 // ```hcl 906 // Literal { 907 // value = "hello world" 908 // } 909 // ``` 910 // 911 // `Literal` spec blocks accept the following argument: 912 // 913 // `value` (required) - The value to return. This attribute may be an expression 914 // that uses [functions](#spec-definition-functions). 915 // 916 // `Literal` is a leaf spec type, so no nested spec blocks are permitted. 917 type Literal struct { 918 Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` 919 XXX_NoUnkeyedLiteral struct{} `json:"-"` 920 XXX_unrecognized []byte `json:"-"` 921 XXX_sizecache int32 `json:"-"` 922 } 923 924 func (m *Literal) Reset() { *m = Literal{} } 925 func (m *Literal) String() string { return proto.CompactTextString(m) } 926 func (*Literal) ProtoMessage() {} 927 func (*Literal) Descriptor() ([]byte, []int) { 928 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{6} 929 } 930 func (m *Literal) XXX_Unmarshal(b []byte) error { 931 return xxx_messageInfo_Literal.Unmarshal(m, b) 932 } 933 func (m *Literal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 934 return xxx_messageInfo_Literal.Marshal(b, m, deterministic) 935 } 936 func (dst *Literal) XXX_Merge(src proto.Message) { 937 xxx_messageInfo_Literal.Merge(dst, src) 938 } 939 func (m *Literal) XXX_Size() int { 940 return xxx_messageInfo_Literal.Size(m) 941 } 942 func (m *Literal) XXX_DiscardUnknown() { 943 xxx_messageInfo_Literal.DiscardUnknown(m) 944 } 945 946 var xxx_messageInfo_Literal proto.InternalMessageInfo 947 948 func (m *Literal) GetValue() string { 949 if m != nil { 950 return m.Value 951 } 952 return "" 953 } 954 955 // Default spec type evaluates a sequence of nested specs in turn and 956 // returns the result of the first one that produces a non-null value. 957 // It creates no validation constraints of its own, but passes on the validation 958 // constraints from its first nested block. 959 // 960 // ```hcl 961 // Default { 962 // Attr { 963 // name = "private" 964 // type = bool 965 // } 966 // Literal { 967 // value = false 968 // } 969 // } 970 // ``` 971 // 972 // A `Default` spec block must have at least one nested spec block, and should 973 // generally have at least two since otherwise the `Default` wrapper is a no-op. 974 // 975 // The second and any subsequent spec blocks are _fallback_ specs. These exhibit 976 // their usual behavior but are not able to impose validation constraints on the 977 // current body since they are not evaluated unless all prior specs produce 978 // `null` as their result. 979 // 980 type Default struct { 981 Primary *Spec `protobuf:"bytes,1,opt,name=primary,proto3" json:"primary,omitempty"` 982 Default *Spec `protobuf:"bytes,2,opt,name=default,proto3" json:"default,omitempty"` 983 XXX_NoUnkeyedLiteral struct{} `json:"-"` 984 XXX_unrecognized []byte `json:"-"` 985 XXX_sizecache int32 `json:"-"` 986 } 987 988 func (m *Default) Reset() { *m = Default{} } 989 func (m *Default) String() string { return proto.CompactTextString(m) } 990 func (*Default) ProtoMessage() {} 991 func (*Default) Descriptor() ([]byte, []int) { 992 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{7} 993 } 994 func (m *Default) XXX_Unmarshal(b []byte) error { 995 return xxx_messageInfo_Default.Unmarshal(m, b) 996 } 997 func (m *Default) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 998 return xxx_messageInfo_Default.Marshal(b, m, deterministic) 999 } 1000 func (dst *Default) XXX_Merge(src proto.Message) { 1001 xxx_messageInfo_Default.Merge(dst, src) 1002 } 1003 func (m *Default) XXX_Size() int { 1004 return xxx_messageInfo_Default.Size(m) 1005 } 1006 func (m *Default) XXX_DiscardUnknown() { 1007 xxx_messageInfo_Default.DiscardUnknown(m) 1008 } 1009 1010 var xxx_messageInfo_Default proto.InternalMessageInfo 1011 1012 func (m *Default) GetPrimary() *Spec { 1013 if m != nil { 1014 return m.Primary 1015 } 1016 return nil 1017 } 1018 1019 func (m *Default) GetDefault() *Spec { 1020 if m != nil { 1021 return m.Default 1022 } 1023 return nil 1024 } 1025 1026 // Object spec type is the most commonly used at the root of a spec file. 1027 // Its result is a JSON object whose properties are set based on any nested 1028 // spec blocks: 1029 // 1030 // ```hcl 1031 // Object { 1032 // Attr "name" { 1033 // type = "string" 1034 // } 1035 // Block "address" { 1036 // Object { 1037 // Attr "street" { 1038 // type = "string" 1039 // } 1040 // # ... 1041 // } 1042 // } 1043 // } 1044 // ``` 1045 // 1046 // Nested spec blocks inside `Object` must always have an extra block label 1047 // `"name"`, `"address"` and `"street"` in the above example) that specifies 1048 // the name of the property that should be created in the JSON object result. 1049 // This label also acts as a default name selector for the nested spec, allowing 1050 // the `Attr` blocks in the above example to omit the usually-required `name` 1051 // argument in cases where the HCL input name and JSON output name are the same. 1052 // 1053 // An `Object` spec block creates no validation constraints, but it passes on 1054 // any validation constraints created by the nested specs. 1055 type Object struct { 1056 Attributes map[string]*Spec `protobuf:"bytes,1,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1057 XXX_NoUnkeyedLiteral struct{} `json:"-"` 1058 XXX_unrecognized []byte `json:"-"` 1059 XXX_sizecache int32 `json:"-"` 1060 } 1061 1062 func (m *Object) Reset() { *m = Object{} } 1063 func (m *Object) String() string { return proto.CompactTextString(m) } 1064 func (*Object) ProtoMessage() {} 1065 func (*Object) Descriptor() ([]byte, []int) { 1066 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{8} 1067 } 1068 func (m *Object) XXX_Unmarshal(b []byte) error { 1069 return xxx_messageInfo_Object.Unmarshal(m, b) 1070 } 1071 func (m *Object) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 1072 return xxx_messageInfo_Object.Marshal(b, m, deterministic) 1073 } 1074 func (dst *Object) XXX_Merge(src proto.Message) { 1075 xxx_messageInfo_Object.Merge(dst, src) 1076 } 1077 func (m *Object) XXX_Size() int { 1078 return xxx_messageInfo_Object.Size(m) 1079 } 1080 func (m *Object) XXX_DiscardUnknown() { 1081 xxx_messageInfo_Object.DiscardUnknown(m) 1082 } 1083 1084 var xxx_messageInfo_Object proto.InternalMessageInfo 1085 1086 func (m *Object) GetAttributes() map[string]*Spec { 1087 if m != nil { 1088 return m.Attributes 1089 } 1090 return nil 1091 } 1092 1093 // Array spec type produces a JSON array whose elements are set based on 1094 // any nested spec blocks: 1095 // 1096 // ```hcl 1097 // Array { 1098 // Attr { 1099 // name = "first_element" 1100 // type = "string" 1101 // } 1102 // Attr { 1103 // name = "second_element" 1104 // type = "string" 1105 // } 1106 // } 1107 // ``` 1108 // 1109 // An `Array` spec block creates no validation constraints, but it passes on 1110 // any validation constraints created by the nested specs. 1111 type Array struct { 1112 Values []*Spec `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` 1113 XXX_NoUnkeyedLiteral struct{} `json:"-"` 1114 XXX_unrecognized []byte `json:"-"` 1115 XXX_sizecache int32 `json:"-"` 1116 } 1117 1118 func (m *Array) Reset() { *m = Array{} } 1119 func (m *Array) String() string { return proto.CompactTextString(m) } 1120 func (*Array) ProtoMessage() {} 1121 func (*Array) Descriptor() ([]byte, []int) { 1122 return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{9} 1123 } 1124 func (m *Array) XXX_Unmarshal(b []byte) error { 1125 return xxx_messageInfo_Array.Unmarshal(m, b) 1126 } 1127 func (m *Array) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 1128 return xxx_messageInfo_Array.Marshal(b, m, deterministic) 1129 } 1130 func (dst *Array) XXX_Merge(src proto.Message) { 1131 xxx_messageInfo_Array.Merge(dst, src) 1132 } 1133 func (m *Array) XXX_Size() int { 1134 return xxx_messageInfo_Array.Size(m) 1135 } 1136 func (m *Array) XXX_DiscardUnknown() { 1137 xxx_messageInfo_Array.DiscardUnknown(m) 1138 } 1139 1140 var xxx_messageInfo_Array proto.InternalMessageInfo 1141 1142 func (m *Array) GetValues() []*Spec { 1143 if m != nil { 1144 return m.Values 1145 } 1146 return nil 1147 } 1148 1149 func init() { 1150 proto.RegisterType((*Spec)(nil), "hashicorp.nomad.plugins.shared.hclspec.Spec") 1151 proto.RegisterType((*Attr)(nil), "hashicorp.nomad.plugins.shared.hclspec.Attr") 1152 proto.RegisterType((*Block)(nil), "hashicorp.nomad.plugins.shared.hclspec.Block") 1153 proto.RegisterType((*BlockList)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockList") 1154 proto.RegisterType((*BlockSet)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockSet") 1155 proto.RegisterType((*BlockMap)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockMap") 1156 proto.RegisterType((*Literal)(nil), "hashicorp.nomad.plugins.shared.hclspec.Literal") 1157 proto.RegisterType((*Default)(nil), "hashicorp.nomad.plugins.shared.hclspec.Default") 1158 proto.RegisterType((*Object)(nil), "hashicorp.nomad.plugins.shared.hclspec.Object") 1159 proto.RegisterMapType((map[string]*Spec)(nil), "hashicorp.nomad.plugins.shared.hclspec.Object.AttributesEntry") 1160 proto.RegisterType((*Array)(nil), "hashicorp.nomad.plugins.shared.hclspec.Array") 1161 } 1162 1163 func init() { 1164 proto.RegisterFile("github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto", fileDescriptor_hcl_spec_2b7d8262531848bd) 1165 } 1166 1167 var fileDescriptor_hcl_spec_2b7d8262531848bd = []byte{ 1168 // 612 bytes of a gzipped FileDescriptorProto 1169 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x95, 0xcb, 0x6e, 0xd4, 0x3c, 1170 0x14, 0x80, 0x27, 0x33, 0xb9, 0x9e, 0x2e, 0xfe, 0x5f, 0x16, 0x42, 0x51, 0x59, 0x50, 0x65, 0x81, 1171 0xba, 0x80, 0x04, 0xca, 0x06, 0xb1, 0x40, 0x74, 0xd4, 0xa2, 0x00, 0xad, 0x8a, 0x5c, 0x89, 0x05, 1172 0x0b, 0x46, 0x4e, 0xc6, 0x74, 0x4c, 0x73, 0xc3, 0x71, 0x50, 0x47, 0x82, 0x07, 0x61, 0x03, 0x6f, 1173 0xc3, 0x1b, 0xf0, 0x3e, 0xc8, 0x97, 0x4c, 0x0b, 0xea, 0x62, 0x32, 0xb0, 0x60, 0x35, 0x3e, 0x3e, 1174 0xfa, 0xbe, 0x39, 0xb1, 0x8f, 0x6d, 0x78, 0x7a, 0xc6, 0xc4, 0xa2, 0xcb, 0xe2, 0xbc, 0x2e, 0x93, 1175 0x05, 0x69, 0x17, 0x2c, 0xaf, 0x79, 0x93, 0x54, 0x75, 0x49, 0xe6, 0x49, 0x53, 0x74, 0x67, 0xac, 1176 0x6a, 0x93, 0x76, 0x41, 0x38, 0x9d, 0x27, 0x8b, 0xbc, 0x68, 0x1b, 0x9a, 0xcb, 0xdf, 0x99, 0x1c, 1177 0xc4, 0x0d, 0xaf, 0x45, 0x8d, 0xee, 0xac, 0xb0, 0x58, 0x61, 0xb1, 0xc1, 0x62, 0x8d, 0xc5, 0x06, 1178 0x8b, 0xbe, 0x3b, 0x60, 0x9f, 0x36, 0x34, 0x47, 0x29, 0xb8, 0x75, 0xf6, 0x9e, 0xe6, 0x22, 0xb4, 1179 0x76, 0xac, 0xdd, 0xad, 0xbd, 0x38, 0x5e, 0xcf, 0x10, 0x9f, 0x28, 0x2a, 0x1d, 0x61, 0xc3, 0xa3, 1180 0x43, 0x70, 0x08, 0xe7, 0x64, 0x19, 0x8e, 0x95, 0xe8, 0xde, 0xba, 0xa2, 0x7d, 0x09, 0xa5, 0x23, 1181 0xac, 0x69, 0x34, 0x05, 0x7b, 0x5f, 0x08, 0x1e, 0x4e, 0x94, 0xe5, 0xee, 0xda, 0x16, 0x21, 0x78, 1182 0x3a, 0xc2, 0x8a, 0x45, 0xaf, 0x60, 0x2b, 0x2b, 0xea, 0xfc, 0x7c, 0xf6, 0x91, 0x14, 0x1d, 0x0d, 1183 0xed, 0x61, 0x05, 0x4d, 0x25, 0x9a, 0x8e, 0x30, 0x28, 0xc7, 0x6b, 0xa9, 0x40, 0x18, 0x74, 0x34, 1184 0x2b, 0x58, 0x2b, 0x42, 0x47, 0x09, 0x1f, 0x0c, 0x12, 0x1e, 0xb1, 0x56, 0xae, 0x56, 0x90, 0xf5, 1185 0x01, 0x3a, 0x01, 0x1d, 0xcc, 0x5a, 0x2a, 0x42, 0x57, 0x29, 0xef, 0x0f, 0x52, 0x9e, 0x52, 0x69, 1186 0xf4, 0x33, 0x33, 0xbe, 0x14, 0x96, 0xa4, 0x09, 0xbd, 0x0d, 0x84, 0xc7, 0xa4, 0x59, 0x09, 0x8f, 1187 0x49, 0x83, 0x5e, 0x82, 0x37, 0xa7, 0xef, 0x48, 0x57, 0x88, 0xd0, 0x57, 0xba, 0x64, 0x5d, 0xdd, 1188 0x81, 0xc6, 0xd2, 0x11, 0xee, 0x0d, 0x52, 0x56, 0x30, 0x41, 0x39, 0x29, 0xc2, 0x60, 0x98, 0xec, 1189 0x48, 0x63, 0x52, 0x66, 0x0c, 0x53, 0x0f, 0x1c, 0x55, 0x65, 0xf4, 0x42, 0xb7, 0x0b, 0x42, 0x60, 1190 0x57, 0xa4, 0xa4, 0xaa, 0x8b, 0x03, 0xac, 0xc6, 0x72, 0x4e, 0x2c, 0x1b, 0xaa, 0x1a, 0x32, 0xc0, 1191 0x6a, 0x8c, 0xb6, 0xc1, 0xe7, 0xf4, 0x43, 0xc7, 0x38, 0x9d, 0xab, 0x16, 0xf3, 0xf1, 0x2a, 0x8e, 1192 0x3e, 0x83, 0xa3, 0x96, 0xe1, 0x5a, 0xd9, 0x55, 0x70, 0xfc, 0x2b, 0x88, 0x0e, 0xc0, 0xad, 0x68, 1193 0x2b, 0x8c, 0x72, 0x40, 0xd7, 0xca, 0x23, 0x88, 0x0d, 0x1b, 0x7d, 0xb3, 0x20, 0x58, 0xb5, 0xca, 1194 0xb5, 0x35, 0xdc, 0x82, 0xa0, 0x64, 0xd5, 0x8c, 0x09, 0x5a, 0xb6, 0xaa, 0x08, 0x1b, 0xfb, 0x25, 1195 0xab, 0x9e, 0xcb, 0x58, 0x25, 0xc9, 0x85, 0x49, 0x4e, 0x4c, 0x92, 0x5c, 0xe8, 0xe4, 0x65, 0x85, 1196 0xf6, 0x1f, 0x54, 0xf8, 0xd5, 0x02, 0xbf, 0xef, 0xbc, 0x7f, 0xb2, 0xc0, 0x4f, 0xa6, 0x3e, 0xd9, 1197 0xbc, 0xd7, 0xd5, 0x77, 0x13, 0xdc, 0x82, 0x64, 0xb4, 0x90, 0xc5, 0x4d, 0x76, 0x03, 0x6c, 0xa2, 1198 0xbf, 0xb4, 0x81, 0xb7, 0xc1, 0x33, 0xad, 0x8a, 0x6e, 0x80, 0xa3, 0xef, 0x1e, 0xfd, 0xef, 0x3a, 1199 0x88, 0xbe, 0x58, 0xe0, 0x99, 0x93, 0x81, 0x9e, 0x81, 0xd7, 0x70, 0x56, 0x12, 0xbe, 0x34, 0x37, 1200 0xef, 0xb0, 0xff, 0xec, 0x61, 0xe9, 0xe9, 0xcf, 0xe8, 0x78, 0x13, 0x8f, 0x81, 0xa3, 0x1f, 0x16, 1201 0xb8, 0xfa, 0x4e, 0x47, 0x6f, 0x01, 0x88, 0x10, 0x9c, 0x65, 0x9d, 0xa0, 0x6d, 0x68, 0xed, 0x4c, 1202 0x76, 0xb7, 0xf6, 0x9e, 0x0c, 0x7b, 0x17, 0xd4, 0x7d, 0xac, 0x05, 0x87, 0x95, 0xe0, 0x4b, 0x7c, 1203 0xc5, 0xb8, 0x7d, 0x0e, 0xff, 0xfd, 0x96, 0x46, 0xff, 0xc3, 0xe4, 0x9c, 0x2e, 0xcd, 0x6a, 0xc9, 1204 0x21, 0x9a, 0xf6, 0x2b, 0xb8, 0xc9, 0x57, 0x69, 0xf4, 0xf1, 0xf8, 0x91, 0x15, 0x1d, 0x83, 0xa3, 1205 0x5e, 0x18, 0xb9, 0xc7, 0x6a, 0xb6, 0xff, 0xa2, 0x81, 0x7b, 0xac, 0xd9, 0x69, 0xf0, 0xc6, 0x33, 1206 0xf3, 0x99, 0xab, 0x9e, 0xdc, 0x87, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x2c, 0x98, 0x6b, 1207 0xb6, 0x07, 0x00, 0x00, 1208 }