diff --git a/.gitattributes b/.gitattributes index c543e021..7fded102 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,6 @@ bindings/rust/src/scip.rs linguist-generated=true bindings/haskell/src/Proto/**.hs linguist-generated=true docs/scip.md linguist-generated=true yarn.lock linguist-generated=true +cmd/tests/reprolang/src/grammar.json linguist-generated=true +cmd/tests/reprolang/src/node-types.json linguist-generated=true +cmd/tests/reprolang/src/parser.c linguist-generated=true diff --git a/bindings/go/scip/convert.go b/bindings/go/scip/convert.go index 3aeb1d76..e75654bb 100644 --- a/bindings/go/scip/convert.go +++ b/bindings/go/scip/convert.go @@ -289,6 +289,15 @@ func (g *graph) emitRelationship(relationship *Relationship, rangeID, documentID return []int{relationshipIDs.ReferenceResult} } + if relationship.IsDefinition { + g.emitEdge("item", reader.Edge{ + OutV: relationshipIDs.DefinitionResult, + InVs: []int{rangeID}, + Document: documentID, + }) + return []int{relationshipIDs.DefinitionResult} + } + return nil } diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index 787e7c3a..62a18ce0 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -1150,7 +1150,11 @@ type Document struct { RelativePath string `protobuf:"bytes,1,opt,name=relative_path,json=relativePath,proto3" json:"relative_path,omitempty"` // Occurrences that appear in this file. Occurrences []*Occurrence `protobuf:"bytes,2,rep,name=occurrences,proto3" json:"occurrences,omitempty"` - // Symbols that are defined within this document. + // Symbols that are "defined" within this document. + // + // This should include symbols which technically do not have any definition, + // but have a reference and are defined by some other symbol (see + // Relationship.is_definition). Symbols []*SymbolInformation `protobuf:"bytes,3,rep,name=symbols,proto3" json:"symbols,omitempty"` } @@ -1556,6 +1560,19 @@ type Relationship struct { IsImplementation bool `protobuf:"varint,3,opt,name=is_implementation,json=isImplementation,proto3" json:"is_implementation,omitempty"` // Similar to `references_symbols` but for "Go to type definition". IsTypeDefinition bool `protobuf:"varint,4,opt,name=is_type_definition,json=isTypeDefinition,proto3" json:"is_type_definition,omitempty"` + // Allows overriding the behavior of "Go to definition" and "Find references" + // for symbols which do not have a definition of their own or could + // potentially have multiple definitions. + // + // For example, in a language with single inheritance and no field overriding, + // inherited fields can reuse the same symbol as the ancestor which declares + // the field. In such a situation, is_definition is not needed. + // + // On the other hand, in languages with single inheritance and some form + // of mixins, you can use is_definition to relate the symbol to the + // matching symbol in ancestor classes, and is_reference to relate the + // symbol to the matching symbol in mixins. + IsDefinition bool `protobuf:"varint,5,opt,name=is_definition,json=isDefinition,proto3" json:"is_definition,omitempty"` } func (x *Relationship) Reset() { @@ -1618,6 +1635,13 @@ func (x *Relationship) GetIsTypeDefinition() bool { return false } +func (x *Relationship) GetIsDefinition() bool { + if x != nil { + return x.IsDefinition + } + return false +} + // Occurrence associates a source position with a symbol and/or highlighting // information. // @@ -1913,7 +1937,7 @@ var file_scip_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, - 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, + 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, @@ -1923,188 +1947,190 @@ var file_scip_proto_rawDesc = []byte{ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x0a, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x5f, - 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x6f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x79, 0x6e, 0x74, - 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, - 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, - 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, - 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x67, 0x6e, - 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x2a, 0x31, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0x00, 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x54, - 0x46, 0x31, 0x36, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x10, 0x00, 0x12, 0x0e, - 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, - 0x65, 0x61, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, - 0x73, 0x74, 0x10, 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, - 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x50, - 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x0b, 0x0a, - 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x11, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, - 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x05, 0x12, 0x0e, 0x0a, - 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0x06, 0x12, 0x15, 0x0a, - 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, - 0x69, 0x6e, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x09, - 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x75, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x10, 0x0a, 0x12, 0x17, 0x0a, - 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, - 0x64, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x10, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x20, - 0x0a, 0x1c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, - 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, - 0x63, 0x72, 0x6f, 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, - 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x16, 0x12, 0x11, 0x0a, - 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0x17, - 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, - 0x64, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x44, 0x65, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x67, 0x65, 0x78, - 0x4a, 0x6f, 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4b, 0x65, 0x79, - 0x10, 0x1e, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x21, - 0x12, 0x07, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, 0x12, 0x10, 0x0a, 0x0c, 0x54, - 0x61, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x24, 0x1a, 0x02, 0x10, - 0x01, 0x2a, 0x56, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, - 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0f, - 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, - 0x08, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, 0x0a, 0x0d, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, - 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6e, 0x65, - 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, 0x08, 0x0a, 0x08, 0x4c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x4c, - 0x10, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, 0x12, 0x08, 0x0a, 0x04, 0x41, - 0x67, 0x64, 0x61, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x63, 0x69, 0x69, 0x44, 0x6f, - 0x63, 0x10, 0x56, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x10, - 0x3a, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x61, - 0x74, 0x10, 0x44, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, 0x65, 0x58, 0x10, 0x51, 0x12, - 0x05, 0x0a, 0x01, 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x42, 0x4f, 0x4c, 0x10, - 0x3b, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, - 0x53, 0x10, 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, - 0x43, 0x6f, 0x66, 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x15, 0x12, 0x0e, - 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x09, 0x12, 0x07, - 0x0a, 0x03, 0x43, 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x61, 0x72, 0x74, 0x10, - 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, 0x10, 0x39, 0x12, 0x08, 0x0a, - 0x04, 0x44, 0x69, 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x79, 0x61, 0x6c, 0x6f, - 0x67, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, 0x69, 0x72, 0x10, 0x11, 0x12, - 0x0a, 0x0a, 0x06, 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x46, - 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, 0x73, 0x68, 0x10, - 0x41, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x46, - 0x6f, 0x72, 0x74, 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x6f, 0x10, 0x21, - 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, - 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x61, 0x63, 0x6b, 0x10, 0x14, - 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x61, 0x72, 0x73, 0x10, 0x5a, - 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, 0x10, 0x2c, 0x12, 0x09, 0x0a, - 0x05, 0x49, 0x64, 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x6e, 0x69, 0x10, - 0x48, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, - 0x10, 0x4b, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, - 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, - 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, - 0x5d, 0x12, 0x0b, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x74, 0x10, 0x4c, 0x12, 0x09, - 0x0a, 0x05, 0x4a, 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x6f, 0x74, - 0x6c, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, 0x54, 0x65, 0x58, 0x10, 0x53, - 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, - 0x73, 0x73, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, 0x10, 0x0c, 0x12, 0x0c, 0x0a, - 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, 0x12, 0x0c, 0x0a, 0x08, 0x4d, - 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x74, - 0x6c, 0x61, 0x62, 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, 0x78, 0x10, 0x4d, 0x12, 0x09, - 0x0a, 0x05, 0x4f, 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, 0x10, 0x25, 0x12, 0x07, 0x0a, - 0x03, 0x50, 0x48, 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x53, 0x51, 0x4c, 0x10, - 0x46, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x50, - 0x6f, 0x77, 0x65, 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, 0x12, 0x0a, 0x0a, 0x06, 0x50, - 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x10, 0x0f, 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x61, 0x6b, 0x75, 0x10, 0x0e, - 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, 0x12, 0x08, 0x0a, 0x04, 0x52, - 0x65, 0x53, 0x54, 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x62, 0x79, 0x10, 0x10, 0x12, - 0x08, 0x0a, 0x04, 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x41, 0x53, - 0x10, 0x3d, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, 0x1d, 0x12, 0x07, 0x0a, 0x03, - 0x53, 0x4d, 0x4c, 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x10, 0x45, 0x12, 0x08, - 0x0a, 0x04, 0x53, 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x63, 0x61, 0x6c, - 0x61, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x10, 0x0a, 0x12, - 0x0f, 0x0a, 0x0b, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x40, - 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, 0x10, 0x4e, 0x12, 0x09, 0x0a, - 0x05, 0x53, 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x4f, 0x4d, 0x4c, - 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, 0x12, 0x0e, 0x0a, 0x0a, 0x54, - 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5e, - 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x69, 0x63, 0x10, - 0x3f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x6f, - 0x6c, 0x66, 0x72, 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x4d, 0x4c, 0x10, 0x1f, - 0x12, 0x07, 0x0a, 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x41, 0x4d, - 0x4c, 0x10, 0x4a, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, 0x26, 0x42, 0x2f, 0x5a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x69, 0x73, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, + 0x0a, 0x0a, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x35, 0x0a, + 0x16, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6b, + 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, + 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x73, 0x79, 0x6e, + 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, + 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x0a, + 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, + 0x63, 0x69, 0x70, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, + 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x2a, 0x31, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, + 0x09, 0x0a, 0x05, 0x55, 0x54, 0x46, 0x31, 0x36, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, + 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, + 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, + 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, + 0x08, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x10, 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, + 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, + 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, + 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, + 0x19, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, + 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, + 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, + 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, + 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, + 0x0e, 0x12, 0x18, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, + 0x15, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, + 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, + 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, + 0x10, 0x16, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, + 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x6f, 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, + 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, + 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, + 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x10, 0x1e, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, + 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, + 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x10, 0x21, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, + 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, + 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x10, 0x24, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x56, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, + 0x0a, 0x0d, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x1c, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, + 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, + 0x0b, 0x55, 0x6e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, + 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, + 0x08, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, + 0x0a, 0x03, 0x41, 0x50, 0x4c, 0x10, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, + 0x12, 0x08, 0x0a, 0x04, 0x41, 0x67, 0x64, 0x61, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, + 0x63, 0x69, 0x69, 0x44, 0x6f, 0x63, 0x10, 0x56, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, + 0x6d, 0x62, 0x6c, 0x79, 0x10, 0x3a, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, + 0x07, 0x0a, 0x03, 0x42, 0x61, 0x74, 0x10, 0x44, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, + 0x65, 0x58, 0x10, 0x51, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, + 0x4f, 0x42, 0x4f, 0x4c, 0x10, 0x3b, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, + 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, + 0x72, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, + 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, 0x66, 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x10, 0x15, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x70, 0x10, 0x09, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, + 0x44, 0x61, 0x72, 0x74, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, + 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x69, 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, + 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, + 0x44, 0x79, 0x61, 0x6c, 0x6f, 0x67, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, + 0x69, 0x72, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, + 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, + 0x46, 0x69, 0x73, 0x68, 0x10, 0x41, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, + 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, + 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, + 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, + 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, + 0x02, 0x47, 0x6f, 0x10, 0x21, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, + 0x07, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, + 0x61, 0x63, 0x6b, 0x10, 0x14, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, + 0x61, 0x72, 0x73, 0x10, 0x5a, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, + 0x10, 0x2c, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x64, 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, + 0x03, 0x49, 0x6e, 0x69, 0x10, 0x48, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, + 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x4b, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, + 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, + 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x65, 0x61, 0x63, 0x74, 0x10, 0x5d, 0x12, 0x0b, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, + 0x74, 0x10, 0x4c, 0x12, 0x09, 0x0a, 0x05, 0x4a, 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, + 0x0a, 0x06, 0x4b, 0x6f, 0x74, 0x6c, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, + 0x54, 0x65, 0x58, 0x10, 0x53, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, + 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, + 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, + 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x61, 0x74, 0x6c, 0x61, 0x62, 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, + 0x78, 0x10, 0x4d, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, + 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, + 0x11, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, + 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x48, 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, + 0x4c, 0x53, 0x51, 0x4c, 0x10, 0x46, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, + 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, + 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, + 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, + 0x0a, 0x0a, 0x06, 0x52, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, + 0x61, 0x6b, 0x75, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, + 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x53, 0x54, 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, + 0x62, 0x79, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, + 0x0a, 0x03, 0x53, 0x41, 0x53, 0x10, 0x3d, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, + 0x1d, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, 0x4c, 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, + 0x4c, 0x10, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, + 0x05, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x10, 0x40, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, + 0x10, 0x4e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, + 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, + 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, + 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, + 0x61, 0x63, 0x74, 0x10, 0x5e, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, + 0x61, 0x73, 0x69, 0x63, 0x10, 0x3f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, + 0x0b, 0x0a, 0x07, 0x57, 0x6f, 0x6c, 0x66, 0x72, 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, + 0x58, 0x4d, 0x4c, 0x10, 0x1f, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, + 0x0a, 0x04, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x4a, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, + 0x26, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, + 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, + 0x70, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/bindings/haskell/src/Proto/Scip.hs b/bindings/haskell/src/Proto/Scip.hs index 269a3db3..e9f42861 100644 --- a/bindings/haskell/src/Proto/Scip.hs +++ b/bindings/haskell/src/Proto/Scip.hs @@ -3071,12 +3071,14 @@ instance Control.DeepSeq.NFData ProtocolVersion where * 'Proto.Scip_Fields.symbol' @:: Lens' Relationship Data.Text.Text@ * 'Proto.Scip_Fields.isReference' @:: Lens' Relationship Prelude.Bool@ * 'Proto.Scip_Fields.isImplementation' @:: Lens' Relationship Prelude.Bool@ - * 'Proto.Scip_Fields.isTypeDefinition' @:: Lens' Relationship Prelude.Bool@ -} + * 'Proto.Scip_Fields.isTypeDefinition' @:: Lens' Relationship Prelude.Bool@ + * 'Proto.Scip_Fields.isDefinition' @:: Lens' Relationship Prelude.Bool@ -} data Relationship = Relationship'_constructor {_Relationship'symbol :: !Data.Text.Text, _Relationship'isReference :: !Prelude.Bool, _Relationship'isImplementation :: !Prelude.Bool, _Relationship'isTypeDefinition :: !Prelude.Bool, + _Relationship'isDefinition :: !Prelude.Bool, _Relationship'_unknownFields :: !Data.ProtoLens.FieldSet} deriving stock (Prelude.Eq, Prelude.Ord) instance Prelude.Show Relationship where @@ -3113,6 +3115,13 @@ instance Data.ProtoLens.Field.HasField Relationship "isTypeDefinition" Prelude.B _Relationship'isTypeDefinition (\ x__ y__ -> x__ {_Relationship'isTypeDefinition = y__})) Prelude.id +instance Data.ProtoLens.Field.HasField Relationship "isDefinition" Prelude.Bool where + fieldOf _ + = (Prelude..) + (Lens.Family2.Unchecked.lens + _Relationship'isDefinition + (\ x__ y__ -> x__ {_Relationship'isDefinition = y__})) + Prelude.id instance Data.ProtoLens.Message Relationship where messageName _ = Data.Text.pack "scip.Relationship" packedMessageDescriptor _ @@ -3121,7 +3130,8 @@ instance Data.ProtoLens.Message Relationship where \\ACKsymbol\CAN\SOH \SOH(\tR\ACKsymbol\DC2!\n\ \\fis_reference\CAN\STX \SOH(\bR\visReference\DC2+\n\ \\DC1is_implementation\CAN\ETX \SOH(\bR\DLEisImplementation\DC2,\n\ - \\DC2is_type_definition\CAN\EOT \SOH(\bR\DLEisTypeDefinition" + \\DC2is_type_definition\CAN\EOT \SOH(\bR\DLEisTypeDefinition\DC2#\n\ + \\ris_definition\CAN\ENQ \SOH(\bR\fisDefinition" packedFileDescriptor _ = packedFileDescriptor fieldsByTag = let @@ -3160,12 +3170,22 @@ instance Data.ProtoLens.Message Relationship where Data.ProtoLens.Optional (Data.ProtoLens.Field.field @"isTypeDefinition")) :: Data.ProtoLens.FieldDescriptor Relationship + isDefinition__field_descriptor + = Data.ProtoLens.FieldDescriptor + "is_definition" + (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField :: + Data.ProtoLens.FieldTypeDescriptor Prelude.Bool) + (Data.ProtoLens.PlainField + Data.ProtoLens.Optional + (Data.ProtoLens.Field.field @"isDefinition")) :: + Data.ProtoLens.FieldDescriptor Relationship in Data.Map.fromList [(Data.ProtoLens.Tag 1, symbol__field_descriptor), (Data.ProtoLens.Tag 2, isReference__field_descriptor), (Data.ProtoLens.Tag 3, isImplementation__field_descriptor), - (Data.ProtoLens.Tag 4, isTypeDefinition__field_descriptor)] + (Data.ProtoLens.Tag 4, isTypeDefinition__field_descriptor), + (Data.ProtoLens.Tag 5, isDefinition__field_descriptor)] unknownFields = Lens.Family2.Unchecked.lens _Relationship'_unknownFields @@ -3176,6 +3196,7 @@ instance Data.ProtoLens.Message Relationship where _Relationship'isReference = Data.ProtoLens.fieldDefault, _Relationship'isImplementation = Data.ProtoLens.fieldDefault, _Relationship'isTypeDefinition = Data.ProtoLens.fieldDefault, + _Relationship'isDefinition = Data.ProtoLens.fieldDefault, _Relationship'_unknownFields = []} parseMessage = let @@ -3234,6 +3255,14 @@ instance Data.ProtoLens.Message Relationship where loop (Lens.Family2.set (Data.ProtoLens.Field.field @"isTypeDefinition") y x) + 40 + -> do y <- (Data.ProtoLens.Encoding.Bytes.) + (Prelude.fmap + ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt) + "is_definition" + loop + (Lens.Family2.set + (Data.ProtoLens.Field.field @"isDefinition") y x) wire -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire wire @@ -3302,8 +3331,21 @@ instance Data.ProtoLens.Message Relationship where ((Prelude..) Data.ProtoLens.Encoding.Bytes.putVarInt (\ b -> if b then 1 else 0) _v)) - (Data.ProtoLens.Encoding.Wire.buildFieldSet - (Lens.Family2.view Data.ProtoLens.unknownFields _x))))) + ((Data.Monoid.<>) + (let + _v + = Lens.Family2.view (Data.ProtoLens.Field.field @"isDefinition") _x + in + if (Prelude.==) _v Data.ProtoLens.fieldDefault then + Data.Monoid.mempty + else + (Data.Monoid.<>) + (Data.ProtoLens.Encoding.Bytes.putVarInt 40) + ((Prelude..) + Data.ProtoLens.Encoding.Bytes.putVarInt + (\ b -> if b then 1 else 0) _v)) + (Data.ProtoLens.Encoding.Wire.buildFieldSet + (Lens.Family2.view Data.ProtoLens.unknownFields _x)))))) instance Control.DeepSeq.NFData Relationship where rnf = \ x__ @@ -3316,7 +3358,8 @@ instance Control.DeepSeq.NFData Relationship where (Control.DeepSeq.deepseq (_Relationship'isImplementation x__) (Control.DeepSeq.deepseq - (_Relationship'isTypeDefinition x__) ())))) + (_Relationship'isTypeDefinition x__) + (Control.DeepSeq.deepseq (_Relationship'isDefinition x__) ()))))) newtype Severity'UnrecognizedValue = Severity'UnrecognizedValue Data.Int.Int32 deriving stock (Prelude.Eq, Prelude.Ord, Prelude.Show) @@ -4681,12 +4724,13 @@ packedFileDescriptor \\DC1SymbolInformation\DC2\SYN\n\ \\ACKsymbol\CAN\SOH \SOH(\tR\ACKsymbol\DC2$\n\ \\rdocumentation\CAN\ETX \ETX(\tR\rdocumentation\DC28\n\ - \\rrelationships\CAN\EOT \ETX(\v2\DC2.scip.RelationshipR\rrelationships\"\164\SOH\n\ + \\rrelationships\CAN\EOT \ETX(\v2\DC2.scip.RelationshipR\rrelationships\"\201\SOH\n\ \\fRelationship\DC2\SYN\n\ \\ACKsymbol\CAN\SOH \SOH(\tR\ACKsymbol\DC2!\n\ \\fis_reference\CAN\STX \SOH(\bR\visReference\DC2+\n\ \\DC1is_implementation\CAN\ETX \SOH(\bR\DLEisImplementation\DC2,\n\ - \\DC2is_type_definition\CAN\EOT \SOH(\bR\DLEisTypeDefinition\"\251\SOH\n\ + \\DC2is_type_definition\CAN\EOT \SOH(\bR\DLEisTypeDefinition\DC2#\n\ + \\ris_definition\CAN\ENQ \SOH(\bR\fisDefinition\"\251\SOH\n\ \\n\ \Occurrence\DC2\DC4\n\ \\ENQrange\CAN\SOH \ETX(\ENQR\ENQrange\DC2\SYN\n\ @@ -4893,9 +4937,9 @@ packedFileDescriptor \\ETXXML\DLE\US\DC2\a\n\ \\ETXXSL\DLE \DC2\b\n\ \\EOTYAML\DLEJ\DC2\a\n\ - \\ETXZig\DLE&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\157\184\SOH\n\ + \\ETXZig\DLE&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\144\191\SOH\n\ \\a\DC2\ENQ\n\ - \\NUL\140\EOT\SOH\n\ + \\NUL\157\EOT\SOH\n\ \\130\EOT\n\ \\SOH\f\DC2\ETX\n\ \\NUL\DC22\247\ETX An index contains one or more pieces of information about a given piece of\n\ @@ -5084,7 +5128,7 @@ packedFileDescriptor \\f\n\ \\ENQ\EOT\STX\STX\STX\ETX\DC2\ETXA\RS\US\n\ \H\n\ - \\STX\EOT\ETX\DC2\EOTE\NULY\SOH\SUB< Document defines the metadata about a source file on disk.\n\ + \\STX\EOT\ETX\DC2\EOTE\NUL]\SOH\SUB< Document defines the metadata about a source file on disk.\n\ \\n\ \\n\ \\n\ @@ -5130,20 +5174,24 @@ packedFileDescriptor \\ENQ\EOT\ETX\STX\STX\SOH\DC2\ETXV\SYN!\n\ \\f\n\ \\ENQ\EOT\ETX\STX\STX\ETX\DC2\ETXV$%\n\ - \=\n\ - \\EOT\EOT\ETX\STX\ETX\DC2\ETXX\STX)\SUB0 Symbols that are defined within this document.\n\ + \\234\SOH\n\ + \\EOT\EOT\ETX\STX\ETX\DC2\ETX\\\STX)\SUB\220\SOH Symbols that are \"defined\" within this document.\n\ + \\n\ + \ This should include symbols which technically do not have any definition,\n\ + \ but have a reference and are defined by some other symbol (see\n\ + \ Relationship.is_definition).\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\EOT\DC2\ETXX\STX\n\ + \\ENQ\EOT\ETX\STX\ETX\EOT\DC2\ETX\\\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\ACK\DC2\ETXX\v\FS\n\ + \\ENQ\EOT\ETX\STX\ETX\ACK\DC2\ETX\\\v\FS\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\SOH\DC2\ETXX\GS$\n\ + \\ENQ\EOT\ETX\STX\ETX\SOH\DC2\ETX\\\GS$\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\ETX\DC2\ETXX'(\n\ + \\ENQ\EOT\ETX\STX\ETX\ETX\DC2\ETX\\'(\n\ \\238\SI\n\ - \\STX\EOT\EOT\DC2\ACK\128\SOH\NUL\132\SOH\SOH\SUB\223\SI Symbol is similar to a URI, it identifies a class, method, or a local\n\ + \\STX\EOT\EOT\DC2\ACK\132\SOH\NUL\136\SOH\SOH\SUB\223\SI Symbol is similar to a URI, it identifies a class, method, or a local\n\ \ variable. `SymbolInformation` contains rich metadata about symbols such as\n\ \ the docstring.\n\ \\n\ @@ -5181,238 +5229,238 @@ packedFileDescriptor \ the file and the node corresponding to the symbol.\n\ \\n\ \\v\n\ - \\ETX\EOT\EOT\SOH\DC2\EOT\128\SOH\b\SO\n\ + \\ETX\EOT\EOT\SOH\DC2\EOT\132\SOH\b\SO\n\ \\f\n\ - \\EOT\EOT\EOT\STX\NUL\DC2\EOT\129\SOH\STX\DC4\n\ + \\EOT\EOT\EOT\STX\NUL\DC2\EOT\133\SOH\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\ENQ\DC2\EOT\129\SOH\STX\b\n\ + \\ENQ\EOT\EOT\STX\NUL\ENQ\DC2\EOT\133\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\SOH\DC2\EOT\129\SOH\t\SI\n\ + \\ENQ\EOT\EOT\STX\NUL\SOH\DC2\EOT\133\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\ETX\DC2\EOT\129\SOH\DC2\DC3\n\ + \\ENQ\EOT\EOT\STX\NUL\ETX\DC2\EOT\133\SOH\DC2\DC3\n\ \\f\n\ - \\EOT\EOT\EOT\STX\SOH\DC2\EOT\130\SOH\STX\SYN\n\ + \\EOT\EOT\EOT\STX\SOH\DC2\EOT\134\SOH\STX\SYN\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\ACK\DC2\EOT\130\SOH\STX\t\n\ + \\ENQ\EOT\EOT\STX\SOH\ACK\DC2\EOT\134\SOH\STX\t\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\SOH\DC2\EOT\130\SOH\n\ + \\ENQ\EOT\EOT\STX\SOH\SOH\DC2\EOT\134\SOH\n\ \\DC1\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\ETX\DC2\EOT\130\SOH\DC4\NAK\n\ + \\ENQ\EOT\EOT\STX\SOH\ETX\DC2\EOT\134\SOH\DC4\NAK\n\ \\f\n\ - \\EOT\EOT\EOT\STX\STX\DC2\EOT\131\SOH\STX&\n\ + \\EOT\EOT\EOT\STX\STX\DC2\EOT\135\SOH\STX&\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\EOT\DC2\EOT\131\SOH\STX\n\ + \\ENQ\EOT\EOT\STX\STX\EOT\DC2\EOT\135\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\ACK\DC2\EOT\131\SOH\v\NAK\n\ + \\ENQ\EOT\EOT\STX\STX\ACK\DC2\EOT\135\SOH\v\NAK\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\SOH\DC2\EOT\131\SOH\SYN!\n\ + \\ENQ\EOT\EOT\STX\STX\SOH\DC2\EOT\135\SOH\SYN!\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\ETX\DC2\EOT\131\SOH$%\n\ + \\ENQ\EOT\EOT\STX\STX\ETX\DC2\EOT\135\SOH$%\n\ \q\n\ - \\STX\EOT\ENQ\DC2\ACK\137\SOH\NUL\141\SOH\SOH\SUBc Unit of packaging and distribution.\n\ + \\STX\EOT\ENQ\DC2\ACK\141\SOH\NUL\145\SOH\SOH\SUBc Unit of packaging and distribution.\n\ \\n\ \ NOTE: This corresponds to a module in Go and JVM languages.\n\ \\n\ \\v\n\ - \\ETX\EOT\ENQ\SOH\DC2\EOT\137\SOH\b\SI\n\ + \\ETX\EOT\ENQ\SOH\DC2\EOT\141\SOH\b\SI\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\NUL\DC2\EOT\138\SOH\STX\NAK\n\ + \\EOT\EOT\ENQ\STX\NUL\DC2\EOT\142\SOH\STX\NAK\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\ENQ\DC2\EOT\138\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\NUL\ENQ\DC2\EOT\142\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\SOH\DC2\EOT\138\SOH\t\DLE\n\ + \\ENQ\EOT\ENQ\STX\NUL\SOH\DC2\EOT\142\SOH\t\DLE\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\ETX\DC2\EOT\138\SOH\DC3\DC4\n\ + \\ENQ\EOT\ENQ\STX\NUL\ETX\DC2\EOT\142\SOH\DC3\DC4\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\SOH\DC2\EOT\139\SOH\STX\DC2\n\ + \\EOT\EOT\ENQ\STX\SOH\DC2\EOT\143\SOH\STX\DC2\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\ENQ\DC2\EOT\139\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\SOH\ENQ\DC2\EOT\143\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\SOH\DC2\EOT\139\SOH\t\r\n\ + \\ENQ\EOT\ENQ\STX\SOH\SOH\DC2\EOT\143\SOH\t\r\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\ETX\DC2\EOT\139\SOH\DLE\DC1\n\ + \\ENQ\EOT\ENQ\STX\SOH\ETX\DC2\EOT\143\SOH\DLE\DC1\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\STX\DC2\EOT\140\SOH\STX\NAK\n\ + \\EOT\EOT\ENQ\STX\STX\DC2\EOT\144\SOH\STX\NAK\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\ENQ\DC2\EOT\140\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\STX\ENQ\DC2\EOT\144\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\SOH\DC2\EOT\140\SOH\t\DLE\n\ + \\ENQ\EOT\ENQ\STX\STX\SOH\DC2\EOT\144\SOH\t\DLE\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\140\SOH\DC3\DC4\n\ + \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\144\SOH\DC3\DC4\n\ \\f\n\ - \\STX\EOT\ACK\DC2\ACK\143\SOH\NUL\166\SOH\SOH\n\ + \\STX\EOT\ACK\DC2\ACK\147\SOH\NUL\170\SOH\SOH\n\ \\v\n\ - \\ETX\EOT\ACK\SOH\DC2\EOT\143\SOH\b\DC2\n\ + \\ETX\EOT\ACK\SOH\DC2\EOT\147\SOH\b\DC2\n\ \\SO\n\ - \\EOT\EOT\ACK\EOT\NUL\DC2\ACK\144\SOH\STX\162\SOH\ETX\n\ + \\EOT\EOT\ACK\EOT\NUL\DC2\ACK\148\SOH\STX\166\SOH\ETX\n\ \\r\n\ - \\ENQ\EOT\ACK\EOT\NUL\SOH\DC2\EOT\144\SOH\a\r\n\ + \\ENQ\EOT\ACK\EOT\NUL\SOH\DC2\EOT\148\SOH\a\r\n\ \\r\n\ - \\ENQ\EOT\ACK\EOT\NUL\ETX\DC2\EOT\145\SOH\EOT\RS\n\ + \\ENQ\EOT\ACK\EOT\NUL\ETX\DC2\EOT\149\SOH\EOT\RS\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\ETX\STX\DC2\EOT\145\SOH\EOT\RS\n\ + \\ACK\EOT\ACK\EOT\NUL\ETX\STX\DC2\EOT\149\SOH\EOT\RS\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\NUL\DC2\EOT\146\SOH\EOT\SUB\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\NUL\DC2\EOT\150\SOH\EOT\SUB\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\NUL\SOH\DC2\EOT\146\SOH\EOT\NAK\n\ + \\a\EOT\ACK\EOT\NUL\STX\NUL\SOH\DC2\EOT\150\SOH\EOT\NAK\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\NUL\STX\DC2\EOT\146\SOH\CAN\EM\n\ + \\a\EOT\ACK\EOT\NUL\STX\NUL\STX\DC2\EOT\150\SOH\CAN\EM\n\ \}\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\SOH\DC2\EOT\150\SOH\EOT\DC2\SUBm Unit of code abstraction and/or namespacing.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\SOH\DC2\EOT\154\SOH\EOT\DC2\SUBm Unit of code abstraction and/or namespacing.\n\ \\n\ \ NOTE: This corresponds to a package in Go and JVM languages.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\SOH\SOH\DC2\EOT\150\SOH\EOT\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\SOH\SOH\DC2\EOT\154\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\SOH\STX\DC2\EOT\150\SOH\DLE\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\SOH\STX\DC2\EOT\154\SOH\DLE\DC1\n\ \(\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\STX\DC2\EOT\152\SOH\EOT\"\SUB\CAN Use Namespace instead.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\STX\DC2\EOT\156\SOH\EOT\"\SUB\CAN Use Namespace instead.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\SOH\DC2\EOT\152\SOH\EOT\v\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\SOH\DC2\EOT\156\SOH\EOT\v\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\STX\DC2\EOT\152\SOH\SO\SI\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\STX\DC2\EOT\156\SOH\SO\SI\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\ETX\DC2\EOT\152\SOH\DLE!\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\ETX\DC2\EOT\156\SOH\DLE!\n\ \\DLE\n\ - \\b\EOT\ACK\EOT\NUL\STX\STX\ETX\SOH\DC2\EOT\152\SOH\DC1 \n\ + \\b\EOT\ACK\EOT\NUL\STX\STX\ETX\SOH\DC2\EOT\156\SOH\DC1 \n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ETX\DC2\EOT\153\SOH\EOT\r\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ETX\DC2\EOT\157\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ETX\SOH\DC2\EOT\153\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\ETX\SOH\DC2\EOT\157\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ETX\STX\DC2\EOT\153\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\ETX\STX\DC2\EOT\157\SOH\v\f\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\EOT\DC2\EOT\154\SOH\EOT\r\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\EOT\DC2\EOT\158\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\EOT\SOH\DC2\EOT\154\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\EOT\SOH\DC2\EOT\158\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\EOT\STX\DC2\EOT\154\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\EOT\STX\DC2\EOT\158\SOH\v\f\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ENQ\DC2\EOT\155\SOH\EOT\SI\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ENQ\DC2\EOT\159\SOH\EOT\SI\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ENQ\SOH\DC2\EOT\155\SOH\EOT\n\ + \\a\EOT\ACK\EOT\NUL\STX\ENQ\SOH\DC2\EOT\159\SOH\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ENQ\STX\DC2\EOT\155\SOH\r\SO\n\ + \\a\EOT\ACK\EOT\NUL\STX\ENQ\STX\DC2\EOT\159\SOH\r\SO\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ACK\DC2\EOT\156\SOH\EOT\SYN\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ACK\DC2\EOT\160\SOH\EOT\SYN\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ACK\SOH\DC2\EOT\156\SOH\EOT\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\ACK\SOH\DC2\EOT\160\SOH\EOT\DC1\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ACK\STX\DC2\EOT\156\SOH\DC4\NAK\n\ + \\a\EOT\ACK\EOT\NUL\STX\ACK\STX\DC2\EOT\160\SOH\DC4\NAK\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\a\DC2\EOT\157\SOH\EOT\DC2\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\a\DC2\EOT\161\SOH\EOT\DC2\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\a\SOH\DC2\EOT\157\SOH\EOT\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\a\SOH\DC2\EOT\161\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\a\STX\DC2\EOT\157\SOH\DLE\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\a\STX\DC2\EOT\161\SOH\DLE\DC1\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\b\DC2\EOT\158\SOH\EOT\SO\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\b\DC2\EOT\162\SOH\EOT\SO\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\b\SOH\DC2\EOT\158\SOH\EOT\t\n\ + \\a\EOT\ACK\EOT\NUL\STX\b\SOH\DC2\EOT\162\SOH\EOT\t\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\b\STX\DC2\EOT\158\SOH\f\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\b\STX\DC2\EOT\162\SOH\f\r\n\ \.\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\t\DC2\EOT\160\SOH\EOT\r\SUB\RS Can be used for any purpose.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\t\DC2\EOT\164\SOH\EOT\r\SUB\RS Can be used for any purpose.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\t\SOH\DC2\EOT\160\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\t\SOH\DC2\EOT\164\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\t\STX\DC2\EOT\160\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\t\STX\DC2\EOT\164\SOH\v\f\n\ \\SO\n\ \\ACK\EOT\ACK\EOT\NUL\STX\n\ - \\DC2\EOT\161\SOH\EOT\SO\n\ + \\DC2\EOT\165\SOH\EOT\SO\n\ \\SI\n\ \\a\EOT\ACK\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\161\SOH\EOT\t\n\ + \\SOH\DC2\EOT\165\SOH\EOT\t\n\ \\SI\n\ \\a\EOT\ACK\EOT\NUL\STX\n\ - \\STX\DC2\EOT\161\SOH\f\r\n\ + \\STX\DC2\EOT\165\SOH\f\r\n\ \\f\n\ - \\EOT\EOT\ACK\STX\NUL\DC2\EOT\163\SOH\STX\DC2\n\ + \\EOT\EOT\ACK\STX\NUL\DC2\EOT\167\SOH\STX\DC2\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\ENQ\DC2\EOT\163\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\NUL\ENQ\DC2\EOT\167\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\SOH\DC2\EOT\163\SOH\t\r\n\ + \\ENQ\EOT\ACK\STX\NUL\SOH\DC2\EOT\167\SOH\t\r\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\ETX\DC2\EOT\163\SOH\DLE\DC1\n\ + \\ENQ\EOT\ACK\STX\NUL\ETX\DC2\EOT\167\SOH\DLE\DC1\n\ \\f\n\ - \\EOT\EOT\ACK\STX\SOH\DC2\EOT\164\SOH\STX\ESC\n\ + \\EOT\EOT\ACK\STX\SOH\DC2\EOT\168\SOH\STX\ESC\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\ENQ\DC2\EOT\164\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\SOH\ENQ\DC2\EOT\168\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\164\SOH\t\SYN\n\ + \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\168\SOH\t\SYN\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\164\SOH\EM\SUB\n\ + \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\168\SOH\EM\SUB\n\ \\f\n\ - \\EOT\EOT\ACK\STX\STX\DC2\EOT\165\SOH\STX\DC4\n\ + \\EOT\EOT\ACK\STX\STX\DC2\EOT\169\SOH\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\165\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\169\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\SOH\DC2\EOT\165\SOH\t\SI\n\ + \\ENQ\EOT\ACK\STX\STX\SOH\DC2\EOT\169\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\165\SOH\DC2\DC3\n\ + \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\169\SOH\DC2\DC3\n\ \\131\SOH\n\ - \\STX\EOT\a\DC2\ACK\170\SOH\NUL\181\SOH\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ + \\STX\EOT\a\DC2\ACK\174\SOH\NUL\185\SOH\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ \ docstring or what package it's defined it.\n\ \\n\ \\v\n\ - \\ETX\EOT\a\SOH\DC2\EOT\170\SOH\b\EM\n\ + \\ETX\EOT\a\SOH\DC2\EOT\174\SOH\b\EM\n\ \\160\SOH\n\ - \\EOT\EOT\a\STX\NUL\DC2\EOT\173\SOH\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ + \\EOT\EOT\a\STX\NUL\DC2\EOT\177\SOH\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ \ The string must be formatted according to the grammar in `Symbol`.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\173\SOH\STX\b\n\ + \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\177\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\173\SOH\t\SI\n\ + \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\177\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\173\SOH\DC2\DC3\n\ + \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\177\SOH\DC2\DC3\n\ \\182\STX\n\ - \\EOT\EOT\a\STX\SOH\DC2\EOT\178\SOH\STX$\SUB\167\STX (optional, but strongly recommended) The markdown-formatted documentation\n\ + \\EOT\EOT\a\STX\SOH\DC2\EOT\182\SOH\STX$\SUB\167\STX (optional, but strongly recommended) The markdown-formatted documentation\n\ \ for this symbol. This field is repeated to allow different kinds of\n\ \ documentation. For example, it's nice to include both the signature of a\n\ \ method (parameters and return type) along with the accompanying docstring.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\178\SOH\STX\n\ + \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\182\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\178\SOH\v\DC1\n\ + \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\182\SOH\v\DC1\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\178\SOH\DC2\US\n\ + \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\182\SOH\DC2\US\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\178\SOH\"#\n\ + \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\182\SOH\"#\n\ \^\n\ - \\EOT\EOT\a\STX\STX\DC2\EOT\180\SOH\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ + \\EOT\EOT\a\STX\STX\DC2\EOT\184\SOH\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\180\SOH\STX\n\ + \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\184\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\180\SOH\v\ETB\n\ + \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\184\SOH\v\ETB\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\180\SOH\CAN%\n\ + \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\184\SOH\CAN%\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\180\SOH()\n\ + \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\184\SOH()\n\ \\f\n\ - \\STX\EOT\b\DC2\ACK\183\SOH\NUL\221\SOH\SOH\n\ + \\STX\EOT\b\DC2\ACK\187\SOH\NUL\238\SOH\SOH\n\ \\v\n\ - \\ETX\EOT\b\SOH\DC2\EOT\183\SOH\b\DC4\n\ + \\ETX\EOT\b\SOH\DC2\EOT\187\SOH\b\DC4\n\ \\f\n\ - \\EOT\EOT\b\STX\NUL\DC2\EOT\184\SOH\STX\DC4\n\ + \\EOT\EOT\b\STX\NUL\DC2\EOT\188\SOH\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\184\SOH\STX\b\n\ + \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\188\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\184\SOH\t\SI\n\ + \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\188\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\184\SOH\DC2\DC3\n\ + \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\188\SOH\DC2\DC3\n\ \\143\b\n\ - \\EOT\EOT\b\STX\SOH\DC2\EOT\209\SOH\STX\CAN\SUB\128\b When resolving \"Find references\", this field documents what other symbols\n\ + \\EOT\EOT\b\STX\SOH\DC2\EOT\213\SOH\STX\CAN\SUB\128\b When resolving \"Find references\", this field documents what other symbols\n\ \ should be included together with this symbol. For example, consider the\n\ \ following TypeScript code that defines two symbols `Animal#sound()` and\n\ \ `Dog#sound()`:\n\ @@ -5438,13 +5486,13 @@ packedFileDescriptor \ `Animal#sound()` method as well.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\209\SOH\STX\ACK\n\ + \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\213\SOH\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\209\SOH\a\DC3\n\ + \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\213\SOH\a\DC3\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\209\SOH\SYN\ETB\n\ + \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\213\SOH\SYN\ETB\n\ \\186\EOT\n\ - \\EOT\EOT\b\STX\STX\DC2\EOT\218\SOH\STX\GS\SUB\171\EOT Similar to `references_symbols` but for \"Go to implementation\".\n\ + \\EOT\EOT\b\STX\STX\DC2\EOT\222\SOH\STX\GS\SUB\171\EOT Similar to `references_symbols` but for \"Go to implementation\".\n\ \ It's common for the `implementation_symbols` and `references_symbols` fields\n\ \ have the same values but that's not always the case.\n\ \ In the TypeScript example above, observe that `implementation_symbols` has\n\ @@ -5454,385 +5502,405 @@ packedFileDescriptor \ \"Animal#\" symbol should navigate to the \"Dog#\" symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\218\SOH\STX\ACK\n\ + \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\222\SOH\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\218\SOH\a\CAN\n\ + \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\222\SOH\a\CAN\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\218\SOH\ESC\FS\n\ + \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\222\SOH\ESC\FS\n\ \P\n\ - \\EOT\EOT\b\STX\ETX\DC2\EOT\220\SOH\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\EOT\EOT\b\STX\ETX\DC2\EOT\224\SOH\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\n\ + \\r\n\ + \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\224\SOH\STX\ACK\n\ + \\r\n\ + \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\224\SOH\a\EM\n\ + \\r\n\ + \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\224\SOH\FS\GS\n\ + \\149\ENQ\n\ + \\EOT\EOT\b\STX\EOT\DC2\EOT\237\SOH\STX\EM\SUB\134\ENQ Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ + \ for symbols which do not have a definition of their own or could\n\ + \ potentially have multiple definitions.\n\ + \\n\ + \ For example, in a language with single inheritance and no field overriding,\n\ + \ inherited fields can reuse the same symbol as the ancestor which declares\n\ + \ the field. In such a situation, is_definition is not needed.\n\ + \\n\ + \ On the other hand, in languages with single inheritance and some form\n\ + \ of mixins, you can use is_definition to relate the symbol to the\n\ + \ matching symbol in ancestor classes, and is_reference to relate the\n\ + \ symbol to the matching symbol in mixins.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\220\SOH\STX\ACK\n\ + \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\237\SOH\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\220\SOH\a\EM\n\ + \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\237\SOH\a\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\220\SOH\FS\GS\n\ + \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\237\SOH\ETB\CAN\n\ \\137\ETX\n\ - \\STX\ENQ\STX\DC2\ACK\228\SOH\NUL\244\SOH\SOH\SUB\250\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ + \\STX\ENQ\STX\DC2\ACK\245\SOH\NUL\133\STX\SOH\SUB\250\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ \ encoded as a bitset where each bit represents a different role. For example,\n\ \ to determine if the `Import` role is set, test whether the second bit of the\n\ \ enum value is defined. In pseudocode, this can be implemented with the\n\ \ logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`.\n\ \\n\ \\v\n\ - \\ETX\ENQ\STX\SOH\DC2\EOT\228\SOH\ENQ\SI\n\ + \\ETX\ENQ\STX\SOH\DC2\EOT\245\SOH\ENQ\SI\n\ \v\n\ - \\EOT\ENQ\STX\STX\NUL\DC2\EOT\231\SOH\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ + \\EOT\ENQ\STX\STX\NUL\DC2\EOT\248\SOH\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ \ from the Protobuf code generator.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\NUL\SOH\DC2\EOT\231\SOH\STX\ETB\n\ + \\ENQ\ENQ\STX\STX\NUL\SOH\DC2\EOT\248\SOH\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\NUL\STX\DC2\EOT\231\SOH\SUB\ESC\n\ + \\ENQ\ENQ\STX\STX\NUL\STX\DC2\EOT\248\SOH\SUB\ESC\n\ \T\n\ - \\EOT\ENQ\STX\STX\SOH\DC2\EOT\233\SOH\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ + \\EOT\ENQ\STX\STX\SOH\DC2\EOT\250\SOH\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\SOH\SOH\DC2\EOT\233\SOH\STX\f\n\ + \\ENQ\ENQ\STX\STX\SOH\SOH\DC2\EOT\250\SOH\STX\f\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\SOH\STX\DC2\EOT\233\SOH\SI\DC2\n\ + \\ENQ\ENQ\STX\STX\SOH\STX\DC2\EOT\250\SOH\SI\DC2\n\ \,\n\ - \\EOT\ENQ\STX\STX\STX\DC2\EOT\235\SOH\STX\SI\SUB\RS Is the symbol imported here?\n\ + \\EOT\ENQ\STX\STX\STX\DC2\EOT\252\SOH\STX\SI\SUB\RS Is the symbol imported here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\STX\SOH\DC2\EOT\235\SOH\STX\b\n\ + \\ENQ\ENQ\STX\STX\STX\SOH\DC2\EOT\252\SOH\STX\b\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\STX\STX\DC2\EOT\235\SOH\v\SO\n\ + \\ENQ\ENQ\STX\STX\STX\STX\DC2\EOT\252\SOH\v\SO\n\ \+\n\ - \\EOT\ENQ\STX\STX\ETX\DC2\EOT\237\SOH\STX\DC4\SUB\GS Is the symbol written here?\n\ + \\EOT\ENQ\STX\STX\ETX\DC2\EOT\254\SOH\STX\DC4\SUB\GS Is the symbol written here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ETX\SOH\DC2\EOT\237\SOH\STX\r\n\ + \\ENQ\ENQ\STX\STX\ETX\SOH\DC2\EOT\254\SOH\STX\r\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ETX\STX\DC2\EOT\237\SOH\DLE\DC3\n\ + \\ENQ\ENQ\STX\STX\ETX\STX\DC2\EOT\254\SOH\DLE\DC3\n\ \(\n\ - \\EOT\ENQ\STX\STX\EOT\DC2\EOT\239\SOH\STX\DC3\SUB\SUB Is the symbol read here?\n\ + \\EOT\ENQ\STX\STX\EOT\DC2\EOT\128\STX\STX\DC3\SUB\SUB Is the symbol read here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\EOT\SOH\DC2\EOT\239\SOH\STX\f\n\ + \\ENQ\ENQ\STX\STX\EOT\SOH\DC2\EOT\128\STX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\EOT\STX\DC2\EOT\239\SOH\SI\DC2\n\ + \\ENQ\ENQ\STX\STX\EOT\STX\DC2\EOT\128\STX\SI\DC2\n\ \0\n\ - \\EOT\ENQ\STX\STX\ENQ\DC2\EOT\241\SOH\STX\DC3\SUB\" Is the symbol in generated code?\n\ + \\EOT\ENQ\STX\STX\ENQ\DC2\EOT\130\STX\STX\DC3\SUB\" Is the symbol in generated code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ENQ\SOH\DC2\EOT\241\SOH\STX\v\n\ + \\ENQ\ENQ\STX\STX\ENQ\SOH\DC2\EOT\130\STX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ENQ\STX\DC2\EOT\241\SOH\SO\DC2\n\ + \\ENQ\ENQ\STX\STX\ENQ\STX\DC2\EOT\130\STX\SO\DC2\n\ \+\n\ - \\EOT\ENQ\STX\STX\ACK\DC2\EOT\243\SOH\STX\SO\SUB\GS Is the symbol in test code?\n\ + \\EOT\ENQ\STX\STX\ACK\DC2\EOT\132\STX\STX\SO\SUB\GS Is the symbol in test code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ACK\SOH\DC2\EOT\243\SOH\STX\ACK\n\ + \\ENQ\ENQ\STX\STX\ACK\SOH\DC2\EOT\132\STX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ACK\STX\DC2\EOT\243\SOH\t\r\n\ + \\ENQ\ENQ\STX\STX\ACK\STX\DC2\EOT\132\STX\t\r\n\ \\f\n\ - \\STX\ENQ\ETX\DC2\ACK\246\SOH\NUL\211\STX\SOH\n\ + \\STX\ENQ\ETX\DC2\ACK\135\STX\NUL\228\STX\SOH\n\ \\v\n\ - \\ETX\ENQ\ETX\SOH\DC2\EOT\246\SOH\ENQ\SI\n\ + \\ETX\ENQ\ETX\SOH\DC2\EOT\135\STX\ENQ\SI\n\ \\v\n\ - \\ETX\ENQ\ETX\ETX\DC2\EOT\247\SOH\STX\FS\n\ + \\ETX\ENQ\ETX\ETX\DC2\EOT\136\STX\STX\FS\n\ \\f\n\ - \\EOT\ENQ\ETX\ETX\STX\DC2\EOT\247\SOH\STX\FS\n\ + \\EOT\ENQ\ETX\ETX\STX\DC2\EOT\136\STX\STX\FS\n\ \\f\n\ - \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\249\SOH\STX\FS\n\ + \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\138\STX\STX\FS\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\249\SOH\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\138\STX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\249\SOH\SUB\ESC\n\ + \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\138\STX\SUB\ESC\n\ \;\n\ - \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\252\SOH\STX\SO\SUB- Comment, including comment markers and text\n\ + \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\141\STX\STX\SO\SUB- Comment, including comment markers and text\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\252\SOH\STX\t\n\ + \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\141\STX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\252\SOH\f\r\n\ + \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\141\STX\f\r\n\ \\ESC\n\ - \\EOT\ENQ\ETX\STX\STX\DC2\EOT\255\SOH\STX\ESC\SUB\r `;` `.` `,`\n\ + \\EOT\ENQ\ETX\STX\STX\DC2\EOT\144\STX\STX\ESC\SUB\r `;` `.` `,`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\255\SOH\STX\SYN\n\ + \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\144\STX\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\255\SOH\EM\SUB\n\ + \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\144\STX\EM\SUB\n\ \2\n\ - \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\129\STX\STX\EM\SUB$ (), {}, [] when used syntactically\n\ + \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\146\STX\STX\EM\SUB$ (), {}, [] when used syntactically\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\129\STX\STX\DC4\n\ + \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\146\STX\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\129\STX\ETB\CAN\n\ + \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\146\STX\ETB\CAN\n\ \5\n\ - \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\132\STX\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ + \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\149\STX\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\132\STX\STX\t\n\ + \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\149\STX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\132\STX\f\r\n\ + \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\149\STX\f\r\n\ \\f\n\ - \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\133\STX\STX*\n\ + \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\150\STX\STX*\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\133\STX\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\150\STX\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\133\STX\SYN\ETB\n\ + \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\150\STX\SYN\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\ETX\DC2\EOT\133\STX\CAN)\n\ + \\ENQ\ENQ\ETX\STX\ENQ\ETX\DC2\EOT\150\STX\CAN)\n\ \\SO\n\ - \\ACK\ENQ\ETX\STX\ENQ\ETX\SOH\DC2\EOT\133\STX\EM(\n\ + \\ACK\ENQ\ETX\STX\ENQ\ETX\SOH\DC2\EOT\150\STX\EM(\n\ \\RS\n\ - \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\136\STX\STX\EM\SUB\DLE `+`, `*`, etc.\n\ + \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\153\STX\STX\EM\SUB\DLE `+`, `*`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\136\STX\STX\DC4\n\ + \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\153\STX\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\136\STX\ETB\CAN\n\ + \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\153\STX\ETB\CAN\n\ \X\n\ - \\EOT\ENQ\ETX\STX\a\DC2\EOT\139\STX\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ + \\EOT\ENQ\ETX\STX\a\DC2\EOT\156\STX\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\139\STX\STX\f\n\ + \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\156\STX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\139\STX\SI\DLE\n\ + \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\156\STX\SI\DLE\n\ \N\n\ - \\EOT\ENQ\ETX\STX\b\DC2\EOT\141\STX\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ + \\EOT\ENQ\ETX\STX\b\DC2\EOT\158\STX\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\b\SOH\DC2\EOT\141\STX\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\b\SOH\DC2\EOT\158\STX\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\b\STX\DC2\EOT\141\STX\SYN\ETB\n\ + \\ENQ\ENQ\ETX\STX\b\STX\DC2\EOT\158\STX\SYN\ETB\n\ \[\n\ - \\EOT\ENQ\ETX\STX\t\DC2\EOT\143\STX\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ + \\EOT\ENQ\ETX\STX\t\DC2\EOT\160\STX\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\t\SOH\DC2\EOT\143\STX\STX\DLE\n\ + \\ENQ\ENQ\ETX\STX\t\SOH\DC2\EOT\160\STX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\t\STX\DC2\EOT\143\STX\DC3\DC4\n\ + \\ENQ\ENQ\ETX\STX\t\STX\DC2\EOT\160\STX\DC3\DC4\n\ \.\n\ \\EOT\ENQ\ETX\STX\n\ - \\DC2\EOT\145\STX\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ + \\DC2\EOT\162\STX\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ \\n\ \\r\n\ \\ENQ\ENQ\ETX\STX\n\ - \\SOH\DC2\EOT\145\STX\STX\DC4\n\ + \\SOH\DC2\EOT\162\STX\STX\DC4\n\ \\r\n\ \\ENQ\ENQ\ETX\STX\n\ - \\STX\DC2\EOT\145\STX\ETB\CAN\n\ + \\STX\DC2\EOT\162\STX\ETB\CAN\n\ \'\n\ - \\EOT\ENQ\ETX\STX\v\DC2\EOT\147\STX\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ + \\EOT\ENQ\ETX\STX\v\DC2\EOT\164\STX\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\v\SOH\DC2\EOT\147\STX\STX\EM\n\ + \\ENQ\ENQ\ETX\STX\v\SOH\DC2\EOT\164\STX\STX\EM\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\v\STX\DC2\EOT\147\STX\FS\RS\n\ + \\ENQ\ENQ\ETX\STX\v\STX\DC2\EOT\164\STX\FS\RS\n\ \3\n\ - \\EOT\ENQ\ETX\STX\f\DC2\EOT\149\STX\STX\ESC\SUB% Parameter definition and references\n\ + \\EOT\ENQ\ETX\STX\f\DC2\EOT\166\STX\STX\ESC\SUB% Parameter definition and references\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\f\SOH\DC2\EOT\149\STX\STX\NAK\n\ + \\ENQ\ENQ\ETX\STX\f\SOH\DC2\EOT\166\STX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\f\STX\DC2\EOT\149\STX\CAN\SUB\n\ + \\ENQ\ENQ\ETX\STX\f\STX\DC2\EOT\166\STX\CAN\SUB\n\ \X\n\ - \\EOT\ENQ\ETX\STX\r\DC2\EOT\151\STX\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ + \\EOT\ENQ\ETX\STX\r\DC2\EOT\168\STX\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\r\SOH\DC2\EOT\151\STX\STX\DC1\n\ + \\ENQ\ENQ\ETX\STX\r\SOH\DC2\EOT\168\STX\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\r\STX\DC2\EOT\151\STX\DC4\SYN\n\ + \\ENQ\ENQ\ETX\STX\r\STX\DC2\EOT\168\STX\DC4\SYN\n\ \K\n\ - \\EOT\ENQ\ETX\STX\SO\DC2\EOT\153\STX\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ + \\EOT\ENQ\ETX\STX\SO\DC2\EOT\170\STX\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SO\SOH\DC2\EOT\153\STX\STX\DC4\n\ + \\ENQ\ENQ\ETX\STX\SO\SOH\DC2\EOT\170\STX\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SO\STX\DC2\EOT\153\STX\ETB\EM\n\ + \\ENQ\ENQ\ETX\STX\SO\STX\DC2\EOT\170\STX\ETB\EM\n\ \\205\SOH\n\ - \\EOT\ENQ\ETX\STX\SI\DC2\EOT\158\STX\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ + \\EOT\ENQ\ETX\STX\SI\DC2\EOT\175\STX\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ \\n\ \ NOTE: This corresponds to a package in Go and JVM languages,\n\ \ and a module in languages like Python and JavaScript.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SI\SOH\DC2\EOT\158\STX\STX\NAK\n\ + \\ENQ\ENQ\ETX\STX\SI\SOH\DC2\EOT\175\STX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SI\STX\DC2\EOT\158\STX\CAN\SUB\n\ + \\ENQ\ENQ\ETX\STX\SI\STX\DC2\EOT\175\STX\CAN\SUB\n\ \\f\n\ - \\EOT\ENQ\ETX\STX\DLE\DC2\EOT\159\STX\STX*\n\ + \\EOT\ENQ\ETX\STX\DLE\DC2\EOT\176\STX\STX*\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DLE\SOH\DC2\EOT\159\STX\STX\DC2\n\ + \\ENQ\ENQ\ETX\STX\DLE\SOH\DC2\EOT\176\STX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DLE\STX\DC2\EOT\159\STX\NAK\ETB\n\ + \\ENQ\ENQ\ETX\STX\DLE\STX\DC2\EOT\176\STX\NAK\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DLE\ETX\DC2\EOT\159\STX\CAN)\n\ + \\ENQ\ENQ\ETX\STX\DLE\ETX\DC2\EOT\176\STX\CAN)\n\ \\SO\n\ - \\ACK\ENQ\ETX\STX\DLE\ETX\SOH\DC2\EOT\159\STX\EM(\n\ + \\ACK\ENQ\ETX\STX\DLE\ETX\SOH\DC2\EOT\176\STX\EM(\n\ \4\n\ - \\EOT\ENQ\ETX\STX\DC1\DC2\EOT\162\STX\STX\SUB\SUB& Function references, including calls\n\ + \\EOT\ENQ\ETX\STX\DC1\DC2\EOT\179\STX\STX\SUB\SUB& Function references, including calls\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC1\SOH\DC2\EOT\162\STX\STX\DC4\n\ + \\ENQ\ENQ\ETX\STX\DC1\SOH\DC2\EOT\179\STX\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC1\STX\DC2\EOT\162\STX\ETB\EM\n\ + \\ENQ\ENQ\ETX\STX\DC1\STX\DC2\EOT\179\STX\ETB\EM\n\ \(\n\ - \\EOT\ENQ\ETX\STX\DC2\DC2\EOT\164\STX\STX$\SUB\SUB Function definition only\n\ + \\EOT\ENQ\ETX\STX\DC2\DC2\EOT\181\STX\STX$\SUB\SUB Function definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC2\SOH\DC2\EOT\164\STX\STX\RS\n\ + \\ENQ\ENQ\ETX\STX\DC2\SOH\DC2\EOT\181\STX\STX\RS\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC2\STX\DC2\EOT\164\STX!#\n\ + \\ENQ\ENQ\ETX\STX\DC2\STX\DC2\EOT\181\STX!#\n\ \7\n\ - \\EOT\ENQ\ETX\STX\DC3\DC2\EOT\167\STX\STX\ETB\SUB) Macro references, including invocations\n\ + \\EOT\ENQ\ETX\STX\DC3\DC2\EOT\184\STX\STX\ETB\SUB) Macro references, including invocations\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC3\SOH\DC2\EOT\167\STX\STX\DC1\n\ + \\ENQ\ENQ\ETX\STX\DC3\SOH\DC2\EOT\184\STX\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC3\STX\DC2\EOT\167\STX\DC4\SYN\n\ + \\ENQ\ENQ\ETX\STX\DC3\STX\DC2\EOT\184\STX\DC4\SYN\n\ \%\n\ - \\EOT\ENQ\ETX\STX\DC4\DC2\EOT\169\STX\STX!\SUB\ETB Macro definition only\n\ + \\EOT\ENQ\ETX\STX\DC4\DC2\EOT\186\STX\STX!\SUB\ETB Macro definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC4\SOH\DC2\EOT\169\STX\STX\ESC\n\ + \\ENQ\ENQ\ETX\STX\DC4\SOH\DC2\EOT\186\STX\STX\ESC\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\DC4\STX\DC2\EOT\169\STX\RS \n\ + \\ENQ\ENQ\ETX\STX\DC4\STX\DC2\EOT\186\STX\RS \n\ \!\n\ - \\EOT\ENQ\ETX\STX\NAK\DC2\EOT\172\STX\STX\SYN\SUB\DC3 non-builtin types\n\ + \\EOT\ENQ\ETX\STX\NAK\DC2\EOT\189\STX\STX\SYN\SUB\DC3 non-builtin types\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NAK\SOH\DC2\EOT\172\STX\STX\DLE\n\ + \\ENQ\ENQ\ETX\STX\NAK\SOH\DC2\EOT\189\STX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NAK\STX\DC2\EOT\172\STX\DC3\NAK\n\ + \\ENQ\ENQ\ETX\STX\NAK\STX\DC2\EOT\189\STX\DC3\NAK\n\ \K\n\ - \\EOT\ENQ\ETX\STX\SYN\DC2\EOT\174\STX\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ + \\EOT\ENQ\ETX\STX\SYN\DC2\EOT\191\STX\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SYN\SOH\DC2\EOT\174\STX\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\SYN\SOH\DC2\EOT\191\STX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SYN\STX\DC2\EOT\174\STX\SUB\FS\n\ + \\ENQ\ENQ\ETX\STX\SYN\STX\DC2\EOT\191\STX\SUB\FS\n\ \7\n\ - \\EOT\ENQ\ETX\STX\ETB\DC2\EOT\177\STX\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ + \\EOT\ENQ\ETX\STX\ETB\DC2\EOT\194\STX\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETB\SOH\DC2\EOT\177\STX\STX\NAK\n\ + \\ENQ\ENQ\ETX\STX\ETB\SOH\DC2\EOT\194\STX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETB\STX\DC2\EOT\177\STX\CAN\SUB\n\ + \\ENQ\ENQ\ETX\STX\ETB\STX\DC2\EOT\194\STX\CAN\SUB\n\ \\DC4\n\ - \\EOT\ENQ\ETX\STX\CAN\DC2\EOT\180\STX\STX\DC3\SUB\ACK `\\b`\n\ + \\EOT\ENQ\ETX\STX\CAN\DC2\EOT\197\STX\STX\DC3\SUB\ACK `\\b`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\CAN\SOH\DC2\EOT\180\STX\STX\r\n\ + \\ENQ\ENQ\ETX\STX\CAN\SOH\DC2\EOT\197\STX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\CAN\STX\DC2\EOT\180\STX\DLE\DC2\n\ + \\ENQ\ENQ\ETX\STX\CAN\STX\DC2\EOT\197\STX\DLE\DC2\n\ \\CAN\n\ - \\EOT\ENQ\ETX\STX\EM\DC2\EOT\182\STX\STX\NAK\SUB\n\ + \\EOT\ENQ\ETX\STX\EM\DC2\EOT\199\STX\STX\NAK\SUB\n\ \ `*`, `+`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EM\SOH\DC2\EOT\182\STX\STX\SI\n\ + \\ENQ\ENQ\ETX\STX\EM\SOH\DC2\EOT\199\STX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EM\STX\DC2\EOT\182\STX\DC2\DC4\n\ + \\ENQ\ENQ\ETX\STX\EM\STX\DC2\EOT\199\STX\DC2\DC4\n\ \\DC3\n\ - \\EOT\ENQ\ETX\STX\SUB\DC2\EOT\184\STX\STX\NAK\SUB\ENQ `.`\n\ + \\EOT\ENQ\ETX\STX\SUB\DC2\EOT\201\STX\STX\NAK\SUB\ENQ `.`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SUB\SOH\DC2\EOT\184\STX\STX\SI\n\ + \\ENQ\ENQ\ETX\STX\SUB\SOH\DC2\EOT\201\STX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SUB\STX\DC2\EOT\184\STX\DC2\DC4\n\ + \\ENQ\ENQ\ETX\STX\SUB\STX\DC2\EOT\201\STX\DC2\DC4\n\ \\"\n\ - \\EOT\ENQ\ETX\STX\ESC\DC2\EOT\186\STX\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ + \\EOT\ENQ\ETX\STX\ESC\DC2\EOT\203\STX\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ESC\SOH\DC2\EOT\186\STX\STX\DLE\n\ + \\ENQ\ENQ\ETX\STX\ESC\SOH\DC2\EOT\203\STX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ESC\STX\DC2\EOT\186\STX\DC3\NAK\n\ + \\ENQ\ENQ\ETX\STX\ESC\STX\DC2\EOT\203\STX\DC3\NAK\n\ \\CAN\n\ - \\EOT\ENQ\ETX\STX\FS\DC2\EOT\188\STX\STX\DC1\SUB\n\ + \\EOT\ENQ\ETX\STX\FS\DC2\EOT\205\STX\STX\DC1\SUB\n\ \ `|`, `-`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\FS\SOH\DC2\EOT\188\STX\STX\v\n\ + \\ENQ\ENQ\ETX\STX\FS\SOH\DC2\EOT\205\STX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\FS\STX\DC2\EOT\188\STX\SO\DLE\n\ + \\ENQ\ENQ\ETX\STX\FS\STX\DC2\EOT\205\STX\SO\DLE\n\ \0\n\ - \\EOT\ENQ\ETX\STX\GS\DC2\EOT\191\STX\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ + \\EOT\ENQ\ETX\STX\GS\DC2\EOT\208\STX\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\GS\SOH\DC2\EOT\191\STX\STX\SI\n\ + \\ENQ\ENQ\ETX\STX\GS\SOH\DC2\EOT\208\STX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\GS\STX\DC2\EOT\191\STX\DC2\DC4\n\ + \\ENQ\ENQ\ETX\STX\GS\STX\DC2\EOT\208\STX\DC2\DC4\n\ \-\n\ - \\EOT\ENQ\ETX\STX\RS\DC2\EOT\193\STX\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ + \\EOT\ENQ\ETX\STX\RS\DC2\EOT\210\STX\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\RS\SOH\DC2\EOT\193\STX\STX\NAK\n\ + \\ENQ\ENQ\ETX\STX\RS\SOH\DC2\EOT\210\STX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\RS\STX\DC2\EOT\193\STX\CAN\SUB\n\ + \\ENQ\ENQ\ETX\STX\RS\STX\DC2\EOT\210\STX\CAN\SUB\n\ \_\n\ - \\EOT\ENQ\ETX\STX\US\DC2\EOT\195\STX\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ + \\EOT\ENQ\ETX\STX\US\DC2\EOT\212\STX\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\US\SOH\DC2\EOT\195\STX\STX\SYN\n\ + \\ENQ\ENQ\ETX\STX\US\SOH\DC2\EOT\212\STX\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\US\STX\DC2\EOT\195\STX\EM\ESC\n\ + \\ENQ\ENQ\ETX\STX\US\STX\DC2\EOT\212\STX\EM\ESC\n\ \G\n\ - \\EOT\ENQ\ETX\STX \DC2\EOT\197\STX\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ + \\EOT\ENQ\ETX\STX \DC2\EOT\214\STX\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX \SOH\DC2\EOT\197\STX\STX\DC2\n\ + \\ENQ\ENQ\ETX\STX \SOH\DC2\EOT\214\STX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX \STX\DC2\EOT\197\STX\NAK\ETB\n\ + \\ENQ\ENQ\ETX\STX \STX\DC2\EOT\214\STX\NAK\ETB\n\ \V\n\ - \\EOT\ENQ\ETX\STX!\DC2\EOT\199\STX\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ + \\EOT\ENQ\ETX\STX!\DC2\EOT\216\STX\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX!\SOH\DC2\EOT\199\STX\STX\DC2\n\ + \\ENQ\ENQ\ETX\STX!\SOH\DC2\EOT\216\STX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX!\STX\DC2\EOT\199\STX\NAK\ETB\n\ + \\ENQ\ENQ\ETX\STX!\STX\DC2\EOT\216\STX\NAK\ETB\n\ \9\n\ - \\EOT\ENQ\ETX\STX\"\DC2\EOT\201\STX\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ + \\EOT\ENQ\ETX\STX\"\DC2\EOT\218\STX\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\"\SOH\DC2\EOT\201\STX\STX\DLE\n\ + \\ENQ\ENQ\ETX\STX\"\SOH\DC2\EOT\218\STX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\"\STX\DC2\EOT\201\STX\DC3\NAK\n\ + \\ENQ\ENQ\ETX\STX\"\STX\DC2\EOT\218\STX\DC3\NAK\n\ \\US\n\ - \\EOT\ENQ\ETX\STX#\DC2\EOT\203\STX\STX\SYN\SUB\DC1 `true`, `false`\n\ + \\EOT\ENQ\ETX\STX#\DC2\EOT\220\STX\STX\SYN\SUB\DC1 `true`, `false`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX#\SOH\DC2\EOT\203\STX\STX\DLE\n\ + \\ENQ\ENQ\ETX\STX#\SOH\DC2\EOT\220\STX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX#\STX\DC2\EOT\203\STX\DC3\NAK\n\ + \\ENQ\ENQ\ETX\STX#\STX\DC2\EOT\220\STX\DC3\NAK\n\ \&\n\ - \\EOT\ENQ\ETX\STX$\DC2\EOT\206\STX\STX\v\SUB\CAN Used for XML-like tags\n\ + \\EOT\ENQ\ETX\STX$\DC2\EOT\223\STX\STX\v\SUB\CAN Used for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX$\SOH\DC2\EOT\206\STX\STX\ENQ\n\ + \\ENQ\ENQ\ETX\STX$\SOH\DC2\EOT\223\STX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX$\STX\DC2\EOT\206\STX\b\n\ + \\ENQ\ENQ\ETX\STX$\STX\DC2\EOT\223\STX\b\n\ \\n\ \/\n\ - \\EOT\ENQ\ETX\STX%\DC2\EOT\208\STX\STX\DC4\SUB! Attribute name in XML-like tags\n\ + \\EOT\ENQ\ETX\STX%\DC2\EOT\225\STX\STX\DC4\SUB! Attribute name in XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX%\SOH\DC2\EOT\208\STX\STX\SO\n\ + \\ENQ\ENQ\ETX\STX%\SOH\DC2\EOT\225\STX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX%\STX\DC2\EOT\208\STX\DC1\DC3\n\ + \\ENQ\ENQ\ETX\STX%\STX\DC2\EOT\225\STX\DC1\DC3\n\ \,\n\ - \\EOT\ENQ\ETX\STX&\DC2\EOT\210\STX\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ + \\EOT\ENQ\ETX\STX&\DC2\EOT\227\STX\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX&\SOH\DC2\EOT\210\STX\STX\SO\n\ + \\ENQ\ENQ\ETX\STX&\SOH\DC2\EOT\227\STX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX&\STX\DC2\EOT\210\STX\DC1\DC3\n\ + \\ENQ\ENQ\ETX\STX&\STX\DC2\EOT\227\STX\DC1\DC3\n\ \\249\SOH\n\ - \\STX\EOT\t\DC2\ACK\218\STX\NUL\129\ETX\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ + \\STX\EOT\t\DC2\ACK\235\STX\NUL\146\ETX\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ \ information.\n\ \\n\ \ If possible, indexers should try to bundle logically related information\n\ \ across occurrences into a single occurrence to reduce payload sizes.\n\ \\n\ \\v\n\ - \\ETX\EOT\t\SOH\DC2\EOT\218\STX\b\DC2\n\ + \\ETX\EOT\t\SOH\DC2\EOT\235\STX\b\DC2\n\ \\199\a\n\ - \\EOT\EOT\t\STX\NUL\DC2\EOT\237\STX\STX\ESC\SUB\184\a Source position of this occurrence. Must be exactly three or four\n\ + \\EOT\EOT\t\STX\NUL\DC2\EOT\254\STX\STX\ESC\SUB\184\a Source position of this occurrence. Must be exactly three or four\n\ \ elements:\n\ \\n\ \ - Four elements: `[startLine, startCharacter, endLine, endCharacter]`\n\ @@ -5852,36 +5920,36 @@ packedFileDescriptor \ improvements make up for it.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\237\STX\STX\n\ + \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\254\STX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\237\STX\v\DLE\n\ + \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\254\STX\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\237\STX\DC1\SYN\n\ + \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\254\STX\DC1\SYN\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\237\STX\EM\SUB\n\ + \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\254\STX\EM\SUB\n\ \\138\SOH\n\ - \\EOT\EOT\t\STX\SOH\DC2\EOT\240\STX\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ + \\EOT\EOT\t\STX\SOH\DC2\EOT\129\ETX\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ \ `SymbolInformation.symbol` for how to format symbols as strings.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\240\STX\STX\b\n\ + \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\129\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\240\STX\t\SI\n\ + \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\129\ETX\t\SI\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\240\STX\DC2\DC3\n\ + \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\129\ETX\DC2\DC3\n\ \\151\SOH\n\ - \\EOT\EOT\t\STX\STX\DC2\EOT\243\STX\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ + \\EOT\EOT\t\STX\STX\DC2\EOT\132\ETX\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ \ See `SymbolRole`'s documentation for how to read and write this field.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\243\STX\STX\a\n\ + \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\132\ETX\STX\a\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\243\STX\b\DC4\n\ + \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\132\ETX\b\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\243\STX\ETB\CAN\n\ + \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\132\ETX\ETB\CAN\n\ \\241\ETX\n\ - \\EOT\EOT\t\STX\ETX\DC2\EOT\252\STX\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ + \\EOT\EOT\t\STX\ETX\DC2\EOT\141\ETX\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ \ empty, the `Symbol.documentation` field is used instead. One example\n\ \ where this field might be useful is when the symbol represents a generic\n\ \ function (with abstract type parameters such as `List`) and at this\n\ @@ -5891,173 +5959,173 @@ packedFileDescriptor \ which commonly allow for type-changing assignment.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\252\STX\STX\n\ + \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\141\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\252\STX\v\DC1\n\ + \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\141\ETX\v\DC1\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\252\STX\DC2(\n\ + \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\141\ETX\DC2(\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\252\STX+,\n\ + \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\141\ETX+,\n\ \X\n\ - \\EOT\EOT\t\STX\EOT\DC2\EOT\254\STX\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ + \\EOT\EOT\t\STX\EOT\DC2\EOT\143\ETX\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\254\STX\STX\f\n\ + \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\143\ETX\STX\f\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\254\STX\r\CAN\n\ + \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\143\ETX\r\CAN\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\254\STX\ESC\FS\n\ + \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\143\ETX\ESC\FS\n\ \W\n\ - \\EOT\EOT\t\STX\ENQ\DC2\EOT\128\ETX\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ + \\EOT\EOT\t\STX\ENQ\DC2\EOT\145\ETX\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\128\ETX\STX\n\ + \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\145\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\128\ETX\v\NAK\n\ + \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\145\ETX\v\NAK\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\128\ETX\SYN!\n\ + \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\145\ETX\SYN!\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\128\ETX$%\n\ + \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\145\ETX$%\n\ \w\n\ \\STX\EOT\n\ - \\DC2\ACK\133\ETX\NUL\144\ETX\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ + \\DC2\ACK\150\ETX\NUL\161\ETX\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ \ reported for a document.\n\ \\n\ \\v\n\ \\ETX\EOT\n\ - \\SOH\DC2\EOT\133\ETX\b\DC2\n\ + \\SOH\DC2\EOT\150\ETX\b\DC2\n\ \W\n\ \\EOT\EOT\n\ - \\STX\NUL\DC2\EOT\135\ETX\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ + \\STX\NUL\DC2\EOT\152\ETX\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ACK\DC2\EOT\135\ETX\STX\n\ + \\STX\NUL\ACK\DC2\EOT\152\ETX\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\SOH\DC2\EOT\135\ETX\v\DC3\n\ + \\STX\NUL\SOH\DC2\EOT\152\ETX\v\DC3\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ETX\DC2\EOT\135\ETX\SYN\ETB\n\ + \\STX\NUL\ETX\DC2\EOT\152\ETX\SYN\ETB\n\ \]\n\ \\EOT\EOT\n\ - \\STX\SOH\DC2\EOT\137\ETX\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ + \\STX\SOH\DC2\EOT\154\ETX\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ENQ\DC2\EOT\137\ETX\STX\b\n\ + \\STX\SOH\ENQ\DC2\EOT\154\ETX\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\SOH\DC2\EOT\137\ETX\t\r\n\ + \\STX\SOH\SOH\DC2\EOT\154\ETX\t\r\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ETX\DC2\EOT\137\ETX\DLE\DC1\n\ + \\STX\SOH\ETX\DC2\EOT\154\ETX\DLE\DC1\n\ \+\n\ \\EOT\EOT\n\ - \\STX\STX\DC2\EOT\139\ETX\STX\NAK\SUB\GS Message of this diagnostic.\n\ + \\STX\STX\DC2\EOT\156\ETX\STX\NAK\SUB\GS Message of this diagnostic.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ENQ\DC2\EOT\139\ETX\STX\b\n\ + \\STX\STX\ENQ\DC2\EOT\156\ETX\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\SOH\DC2\EOT\139\ETX\t\DLE\n\ + \\STX\STX\SOH\DC2\EOT\156\ETX\t\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ETX\DC2\EOT\139\ETX\DC3\DC4\n\ + \\STX\STX\ETX\DC2\EOT\156\ETX\DC3\DC4\n\ \~\n\ \\EOT\EOT\n\ - \\STX\ETX\DC2\EOT\142\ETX\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ + \\STX\ETX\DC2\EOT\159\ETX\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ \ 'typescript' or 'super lint'.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ENQ\DC2\EOT\142\ETX\STX\b\n\ + \\STX\ETX\ENQ\DC2\EOT\159\ETX\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\SOH\DC2\EOT\142\ETX\t\SI\n\ + \\STX\ETX\SOH\DC2\EOT\159\ETX\t\SI\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ETX\DC2\EOT\142\ETX\DC2\DC3\n\ + \\STX\ETX\ETX\DC2\EOT\159\ETX\DC2\DC3\n\ \\f\n\ \\EOT\EOT\n\ - \\STX\EOT\DC2\EOT\143\ETX\STX\"\n\ + \\STX\EOT\DC2\EOT\160\ETX\STX\"\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\EOT\DC2\EOT\143\ETX\STX\n\ + \\STX\EOT\EOT\DC2\EOT\160\ETX\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ACK\DC2\EOT\143\ETX\v\CAN\n\ + \\STX\EOT\ACK\DC2\EOT\160\ETX\v\CAN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\SOH\DC2\EOT\143\ETX\EM\GS\n\ + \\STX\EOT\SOH\DC2\EOT\160\ETX\EM\GS\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ETX\DC2\EOT\143\ETX !\n\ + \\STX\EOT\ETX\DC2\EOT\160\ETX !\n\ \\f\n\ - \\STX\ENQ\EOT\DC2\ACK\146\ETX\NUL\152\ETX\SOH\n\ + \\STX\ENQ\EOT\DC2\ACK\163\ETX\NUL\169\ETX\SOH\n\ \\v\n\ - \\ETX\ENQ\EOT\SOH\DC2\EOT\146\ETX\ENQ\r\n\ + \\ETX\ENQ\EOT\SOH\DC2\EOT\163\ETX\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\147\ETX\STX\SUB\n\ + \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\164\ETX\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\147\ETX\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\164\ETX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\147\ETX\CAN\EM\n\ + \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\164\ETX\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\148\ETX\STX\f\n\ + \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\165\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\148\ETX\STX\a\n\ + \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\165\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\148\ETX\n\ + \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\165\ETX\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\STX\DC2\EOT\149\ETX\STX\SO\n\ + \\EOT\ENQ\EOT\STX\STX\DC2\EOT\166\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\149\ETX\STX\t\n\ + \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\166\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\149\ETX\f\r\n\ + \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\166\ETX\f\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\150\ETX\STX\DC2\n\ + \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\167\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\150\ETX\STX\r\n\ + \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\167\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\150\ETX\DLE\DC1\n\ + \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\167\ETX\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\151\ETX\STX\v\n\ + \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\168\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\151\ETX\STX\ACK\n\ + \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\168\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\151\ETX\t\n\ + \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\168\ETX\t\n\ \\n\ \\f\n\ - \\STX\ENQ\ENQ\DC2\ACK\154\ETX\NUL\158\ETX\SOH\n\ + \\STX\ENQ\ENQ\DC2\ACK\171\ETX\NUL\175\ETX\SOH\n\ \\v\n\ - \\ETX\ENQ\ENQ\SOH\DC2\EOT\154\ETX\ENQ\DC2\n\ + \\ETX\ENQ\ENQ\SOH\DC2\EOT\171\ETX\ENQ\DC2\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\155\ETX\STX\US\n\ + \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\172\ETX\STX\US\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\155\ETX\STX\SUB\n\ + \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\172\ETX\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\155\ETX\GS\RS\n\ + \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\172\ETX\GS\RS\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\156\ETX\STX\DC2\n\ + \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\173\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\156\ETX\STX\r\n\ + \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\173\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\156\ETX\DLE\DC1\n\ + \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\173\ETX\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\157\ETX\STX\DC1\n\ + \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\174\ETX\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\157\ETX\STX\f\n\ + \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\174\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\157\ETX\SI\DLE\n\ + \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\174\ETX\SI\DLE\n\ \\214\ETX\n\ - \\STX\ENQ\ACK\DC2\ACK\166\ETX\NUL\140\EOT\SOH\SUB\199\ETX Language standardises names of common programming languages that can be used\n\ + \\STX\ENQ\ACK\DC2\ACK\183\ETX\NUL\157\EOT\SOH\SUB\199\ETX Language standardises names of common programming languages that can be used\n\ \ for the `Document.language` field. The primary purpose of this enum is to\n\ \ prevent a situation where we have a single programming language ends up with\n\ \ multiple string representations. For example, the C++ language uses the name\n\ @@ -6065,605 +6133,605 @@ packedFileDescriptor \ Feel free to send a pull-request to add missing programming languages.\n\ \\n\ \\v\n\ - \\ETX\ENQ\ACK\SOH\DC2\EOT\166\ETX\ENQ\r\n\ + \\ETX\ENQ\ACK\SOH\DC2\EOT\183\ETX\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\167\ETX\STX\SUB\n\ + \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\184\ETX\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\167\ETX\STX\NAK\n\ + \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\184\ETX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\167\ETX\CAN\EM\n\ + \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\184\ETX\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\168\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\185\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\168\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\185\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\168\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\185\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\STX\DC2\EOT\169\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\STX\DC2\EOT\186\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\169\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\186\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\169\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\186\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\ETX\DC2\EOT\170\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\ETX\DC2\EOT\187\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ETX\SOH\DC2\EOT\170\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\ETX\SOH\DC2\EOT\187\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ETX\STX\DC2\EOT\170\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\ETX\STX\DC2\EOT\187\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\EOT\DC2\EOT\171\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX\EOT\DC2\EOT\188\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\EOT\SOH\DC2\EOT\171\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\EOT\SOH\DC2\EOT\188\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\EOT\STX\DC2\EOT\171\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX\EOT\STX\DC2\EOT\188\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\ENQ\DC2\EOT\172\ETX\STX\DLE\n\ + \\EOT\ENQ\ACK\STX\ENQ\DC2\EOT\189\ETX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ENQ\SOH\DC2\EOT\172\ETX\STX\n\ + \\ENQ\ENQ\ACK\STX\ENQ\SOH\DC2\EOT\189\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ENQ\STX\DC2\EOT\172\ETX\r\SI\n\ + \\ENQ\ENQ\ACK\STX\ENQ\STX\DC2\EOT\189\ETX\r\SI\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\ACK\DC2\EOT\173\ETX\STX\DLE\n\ + \\EOT\ENQ\ACK\STX\ACK\DC2\EOT\190\ETX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ACK\SOH\DC2\EOT\173\ETX\STX\n\ + \\ENQ\ENQ\ACK\STX\ACK\SOH\DC2\EOT\190\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ACK\STX\DC2\EOT\173\ETX\r\SI\n\ + \\ENQ\ENQ\ACK\STX\ACK\STX\DC2\EOT\190\ETX\r\SI\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\a\DC2\EOT\174\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\a\DC2\EOT\191\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\a\SOH\DC2\EOT\174\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\a\SOH\DC2\EOT\191\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\a\STX\DC2\EOT\174\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\a\STX\DC2\EOT\191\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\b\DC2\EOT\175\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\b\DC2\EOT\192\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\b\SOH\DC2\EOT\175\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\b\SOH\DC2\EOT\192\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\b\STX\DC2\EOT\175\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\b\STX\DC2\EOT\192\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\t\DC2\EOT\176\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\t\DC2\EOT\193\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\t\SOH\DC2\EOT\176\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\t\SOH\DC2\EOT\193\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\t\STX\DC2\EOT\176\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\t\STX\DC2\EOT\193\ETX\v\r\n\ \\f\n\ \\EOT\ENQ\ACK\STX\n\ - \\DC2\EOT\177\ETX\STX\t\n\ + \\DC2\EOT\194\ETX\STX\t\n\ \\r\n\ \\ENQ\ENQ\ACK\STX\n\ - \\SOH\DC2\EOT\177\ETX\STX\ETX\n\ + \\SOH\DC2\EOT\194\ETX\STX\ETX\n\ \\r\n\ \\ENQ\ENQ\ACK\STX\n\ - \\STX\DC2\EOT\177\ETX\ACK\b\n\ + \\STX\DC2\EOT\194\ETX\ACK\b\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\v\DC2\EOT\178\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX\v\DC2\EOT\195\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\v\SOH\DC2\EOT\178\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX\v\SOH\DC2\EOT\195\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\v\STX\DC2\EOT\178\ETX\n\ + \\ENQ\ENQ\ACK\STX\v\STX\DC2\EOT\195\ETX\n\ \\f\n\ \H\n\ - \\EOT\ENQ\ACK\STX\f\DC2\EOT\179\ETX\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ + \\EOT\ENQ\ACK\STX\f\DC2\EOT\196\ETX\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\f\SOH\DC2\EOT\179\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\f\SOH\DC2\EOT\196\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\f\STX\DC2\EOT\179\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\f\STX\DC2\EOT\196\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\r\DC2\EOT\180\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\r\DC2\EOT\197\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\r\SOH\DC2\EOT\180\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\r\SOH\DC2\EOT\197\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\r\STX\DC2\EOT\180\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\r\STX\DC2\EOT\197\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SO\DC2\EOT\181\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX\SO\DC2\EOT\198\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SO\SOH\DC2\EOT\181\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\SO\SOH\DC2\EOT\198\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SO\STX\DC2\EOT\181\ETX\v\f\n\ + \\ENQ\ENQ\ACK\STX\SO\STX\DC2\EOT\198\ETX\v\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SI\DC2\EOT\182\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\SI\DC2\EOT\199\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SI\SOH\DC2\EOT\182\ETX\STX\t\n\ + \\ENQ\ENQ\ACK\STX\SI\SOH\DC2\EOT\199\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SI\STX\DC2\EOT\182\ETX\f\r\n\ + \\ENQ\ENQ\ACK\STX\SI\STX\DC2\EOT\199\ETX\f\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\DLE\DC2\EOT\183\ETX\STX\DC4\n\ + \\EOT\ENQ\ACK\STX\DLE\DC2\EOT\200\ETX\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DLE\SOH\DC2\EOT\183\ETX\STX\SO\n\ + \\ENQ\ENQ\ACK\STX\DLE\SOH\DC2\EOT\200\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DLE\STX\DC2\EOT\183\ETX\DC1\DC3\n\ + \\ENQ\ENQ\ACK\STX\DLE\STX\DC2\EOT\200\ETX\DC1\DC3\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\DC1\DC2\EOT\184\ETX\STX\DC1\n\ + \\EOT\ENQ\ACK\STX\DC1\DC2\EOT\201\ETX\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC1\SOH\DC2\EOT\184\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX\DC1\SOH\DC2\EOT\201\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC1\STX\DC2\EOT\184\ETX\SI\DLE\n\ + \\ENQ\ENQ\ACK\STX\DC1\STX\DC2\EOT\201\ETX\SI\DLE\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\DC2\DC2\EOT\185\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\DC2\DC2\EOT\202\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC2\SOH\DC2\EOT\185\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX\DC2\SOH\DC2\EOT\202\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC2\STX\DC2\EOT\185\ETX\b\n\ + \\ENQ\ENQ\ACK\STX\DC2\STX\DC2\EOT\202\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\DC3\DC2\EOT\186\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX\DC3\DC2\EOT\203\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC3\SOH\DC2\EOT\186\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\DC3\SOH\DC2\EOT\203\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC3\STX\DC2\EOT\186\ETX\t\n\ + \\ENQ\ENQ\ACK\STX\DC3\STX\DC2\EOT\203\ETX\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\DC4\DC2\EOT\187\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\DC4\DC2\EOT\204\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC4\SOH\DC2\EOT\187\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\DC4\SOH\DC2\EOT\204\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\DC4\STX\DC2\EOT\187\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\DC4\STX\DC2\EOT\204\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NAK\DC2\EOT\188\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX\NAK\DC2\EOT\205\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NAK\SOH\DC2\EOT\188\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\NAK\SOH\DC2\EOT\205\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NAK\STX\DC2\EOT\188\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX\NAK\STX\DC2\EOT\205\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SYN\DC2\EOT\189\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\SYN\DC2\EOT\206\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SYN\SOH\DC2\EOT\189\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX\SYN\SOH\DC2\EOT\206\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SYN\STX\DC2\EOT\189\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX\SYN\STX\DC2\EOT\206\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\ETB\DC2\EOT\190\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\ETB\DC2\EOT\207\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ETB\SOH\DC2\EOT\190\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\ETB\SOH\DC2\EOT\207\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ETB\STX\DC2\EOT\190\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\ETB\STX\DC2\EOT\207\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\CAN\DC2\EOT\191\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\CAN\DC2\EOT\208\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\CAN\SOH\DC2\EOT\191\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\CAN\SOH\DC2\EOT\208\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\CAN\STX\DC2\EOT\191\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\CAN\STX\DC2\EOT\208\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\EM\DC2\EOT\192\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\EM\DC2\EOT\209\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\EM\SOH\DC2\EOT\192\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\EM\SOH\DC2\EOT\209\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\EM\STX\DC2\EOT\192\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\EM\STX\DC2\EOT\209\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SUB\DC2\EOT\193\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX\SUB\DC2\EOT\210\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SUB\SOH\DC2\EOT\193\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\SUB\SOH\DC2\EOT\210\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SUB\STX\DC2\EOT\193\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX\SUB\STX\DC2\EOT\210\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\ESC\DC2\EOT\194\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX\ESC\DC2\EOT\211\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ESC\SOH\DC2\EOT\194\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\ESC\SOH\DC2\EOT\211\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\ESC\STX\DC2\EOT\194\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX\ESC\STX\DC2\EOT\211\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\FS\DC2\EOT\195\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX\FS\DC2\EOT\212\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\FS\SOH\DC2\EOT\195\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\FS\SOH\DC2\EOT\212\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\FS\STX\DC2\EOT\195\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX\FS\STX\DC2\EOT\212\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\GS\DC2\EOT\196\ETX\STX\SI\n\ + \\EOT\ENQ\ACK\STX\GS\DC2\EOT\213\ETX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\GS\SOH\DC2\EOT\196\ETX\STX\t\n\ + \\ENQ\ENQ\ACK\STX\GS\SOH\DC2\EOT\213\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\GS\STX\DC2\EOT\196\ETX\f\SO\n\ + \\ENQ\ENQ\ACK\STX\GS\STX\DC2\EOT\213\ETX\f\SO\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\RS\DC2\EOT\197\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\RS\DC2\EOT\214\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\RS\SOH\DC2\EOT\197\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX\RS\SOH\DC2\EOT\214\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\RS\STX\DC2\EOT\197\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX\RS\STX\DC2\EOT\214\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\US\DC2\EOT\198\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\US\DC2\EOT\215\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\US\SOH\DC2\EOT\198\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX\US\SOH\DC2\EOT\215\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\US\STX\DC2\EOT\198\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX\US\STX\DC2\EOT\215\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX \DC2\EOT\199\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX \DC2\EOT\216\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX \SOH\DC2\EOT\199\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX \SOH\DC2\EOT\216\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX \STX\DC2\EOT\199\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX \STX\DC2\EOT\216\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX!\DC2\EOT\200\ETX\STX\n\ + \\EOT\ENQ\ACK\STX!\DC2\EOT\217\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX!\SOH\DC2\EOT\200\ETX\STX\EOT\n\ + \\ENQ\ENQ\ACK\STX!\SOH\DC2\EOT\217\ETX\STX\EOT\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX!\STX\DC2\EOT\200\ETX\a\t\n\ + \\ENQ\ENQ\ACK\STX!\STX\DC2\EOT\217\ETX\a\t\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\"\DC2\EOT\201\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX\"\DC2\EOT\218\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\"\SOH\DC2\EOT\201\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX\"\SOH\DC2\EOT\218\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\"\STX\DC2\EOT\201\ETX\v\f\n\ + \\ENQ\ENQ\ACK\STX\"\STX\DC2\EOT\218\ETX\v\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX#\DC2\EOT\202\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX#\DC2\EOT\219\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX#\SOH\DC2\EOT\202\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX#\SOH\DC2\EOT\219\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX#\STX\DC2\EOT\202\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX#\STX\DC2\EOT\219\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX$\DC2\EOT\203\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX$\DC2\EOT\220\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX$\SOH\DC2\EOT\203\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX$\SOH\DC2\EOT\220\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX$\STX\DC2\EOT\203\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX$\STX\DC2\EOT\220\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX%\DC2\EOT\204\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX%\DC2\EOT\221\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX%\SOH\DC2\EOT\204\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX%\SOH\DC2\EOT\221\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX%\STX\DC2\EOT\204\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX%\STX\DC2\EOT\221\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX&\DC2\EOT\205\ETX\STX\SI\n\ + \\EOT\ENQ\ACK\STX&\DC2\EOT\222\ETX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX&\SOH\DC2\EOT\205\ETX\STX\t\n\ + \\ENQ\ENQ\ACK\STX&\SOH\DC2\EOT\222\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX&\STX\DC2\EOT\205\ETX\f\SO\n\ + \\ENQ\ENQ\ACK\STX&\STX\DC2\EOT\222\ETX\f\SO\n\ \\f\n\ - \\EOT\ENQ\ACK\STX'\DC2\EOT\206\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX'\DC2\EOT\223\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX'\SOH\DC2\EOT\206\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX'\SOH\DC2\EOT\223\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX'\STX\DC2\EOT\206\ETX\n\ + \\ENQ\ENQ\ACK\STX'\STX\DC2\EOT\223\ETX\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX(\DC2\EOT\207\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX(\DC2\EOT\224\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX(\SOH\DC2\EOT\207\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX(\SOH\DC2\EOT\224\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX(\STX\DC2\EOT\207\ETX\b\n\ + \\ENQ\ENQ\ACK\STX(\STX\DC2\EOT\224\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX)\DC2\EOT\208\ETX\STX\t\n\ + \\EOT\ENQ\ACK\STX)\DC2\EOT\225\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX)\SOH\DC2\EOT\208\ETX\STX\ETX\n\ + \\ENQ\ENQ\ACK\STX)\SOH\DC2\EOT\225\ETX\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX)\STX\DC2\EOT\208\ETX\ACK\b\n\ + \\ENQ\ENQ\ACK\STX)\STX\DC2\EOT\225\ETX\ACK\b\n\ \\f\n\ - \\EOT\ENQ\ACK\STX*\DC2\EOT\209\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX*\DC2\EOT\226\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX*\SOH\DC2\EOT\209\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX*\SOH\DC2\EOT\226\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX*\STX\DC2\EOT\209\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX*\STX\DC2\EOT\226\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX+\DC2\EOT\210\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX+\DC2\EOT\227\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX+\SOH\DC2\EOT\210\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX+\SOH\DC2\EOT\227\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX+\STX\DC2\EOT\210\ETX\t\n\ + \\ENQ\ENQ\ACK\STX+\STX\DC2\EOT\227\ETX\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX,\DC2\EOT\211\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX,\DC2\EOT\228\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX,\SOH\DC2\EOT\211\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX,\SOH\DC2\EOT\228\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX,\STX\DC2\EOT\211\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX,\STX\DC2\EOT\228\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX-\DC2\EOT\212\ETX\STX\ETB\n\ + \\EOT\ENQ\ACK\STX-\DC2\EOT\229\ETX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX-\SOH\DC2\EOT\212\ETX\STX\DC1\n\ + \\ENQ\ENQ\ACK\STX-\SOH\DC2\EOT\229\ETX\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX-\STX\DC2\EOT\212\ETX\DC4\SYN\n\ + \\ENQ\ENQ\ACK\STX-\STX\DC2\EOT\229\ETX\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\ACK\STX.\DC2\EOT\213\ETX\STX\SI\n\ + \\EOT\ENQ\ACK\STX.\DC2\EOT\230\ETX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX.\SOH\DC2\EOT\213\ETX\STX\t\n\ + \\ENQ\ENQ\ACK\STX.\SOH\DC2\EOT\230\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX.\STX\DC2\EOT\213\ETX\f\SO\n\ + \\ENQ\ENQ\ACK\STX.\STX\DC2\EOT\230\ETX\f\SO\n\ \\f\n\ - \\EOT\ENQ\ACK\STX/\DC2\EOT\214\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX/\DC2\EOT\231\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX/\SOH\DC2\EOT\214\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX/\SOH\DC2\EOT\231\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX/\STX\DC2\EOT\214\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX/\STX\DC2\EOT\231\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX0\DC2\EOT\215\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX0\DC2\EOT\232\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX0\SOH\DC2\EOT\215\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX0\SOH\DC2\EOT\232\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX0\STX\DC2\EOT\215\ETX\v\f\n\ + \\ENQ\ENQ\ACK\STX0\STX\DC2\EOT\232\ETX\v\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX1\DC2\EOT\216\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX1\DC2\EOT\233\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX1\SOH\DC2\EOT\216\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX1\SOH\DC2\EOT\233\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX1\STX\DC2\EOT\216\ETX\n\ + \\ENQ\ENQ\ACK\STX1\STX\DC2\EOT\233\ETX\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX2\DC2\EOT\217\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX2\DC2\EOT\234\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX2\SOH\DC2\EOT\217\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX2\SOH\DC2\EOT\234\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX2\STX\DC2\EOT\217\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX2\STX\DC2\EOT\234\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX3\DC2\EOT\218\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX3\DC2\EOT\235\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX3\SOH\DC2\EOT\218\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX3\SOH\DC2\EOT\235\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX3\STX\DC2\EOT\218\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX3\STX\DC2\EOT\235\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX4\DC2\EOT\219\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX4\DC2\EOT\236\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX4\SOH\DC2\EOT\219\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX4\SOH\DC2\EOT\236\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX4\STX\DC2\EOT\219\ETX\b\n\ + \\ENQ\ENQ\ACK\STX4\STX\DC2\EOT\236\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX5\DC2\EOT\220\ETX\STX\DLE\n\ + \\EOT\ENQ\ACK\STX5\DC2\EOT\237\ETX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX5\SOH\DC2\EOT\220\ETX\STX\n\ + \\ENQ\ENQ\ACK\STX5\SOH\DC2\EOT\237\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX5\STX\DC2\EOT\220\ETX\r\SI\n\ + \\ENQ\ENQ\ACK\STX5\STX\DC2\EOT\237\ETX\r\SI\n\ \\f\n\ - \\EOT\ENQ\ACK\STX6\DC2\EOT\221\ETX\STX\DLE\n\ + \\EOT\ENQ\ACK\STX6\DC2\EOT\238\ETX\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX6\SOH\DC2\EOT\221\ETX\STX\n\ + \\ENQ\ENQ\ACK\STX6\SOH\DC2\EOT\238\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX6\STX\DC2\EOT\221\ETX\r\SI\n\ + \\ENQ\ENQ\ACK\STX6\STX\DC2\EOT\238\ETX\r\SI\n\ \\f\n\ - \\EOT\ENQ\ACK\STX7\DC2\EOT\222\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX7\DC2\EOT\239\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX7\SOH\DC2\EOT\222\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX7\SOH\DC2\EOT\239\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX7\STX\DC2\EOT\222\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX7\STX\DC2\EOT\239\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STX8\DC2\EOT\223\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX8\DC2\EOT\240\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX8\SOH\DC2\EOT\223\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX8\SOH\DC2\EOT\240\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX8\STX\DC2\EOT\223\ETX\b\n\ + \\ENQ\ENQ\ACK\STX8\STX\DC2\EOT\240\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX9\DC2\EOT\224\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX9\DC2\EOT\241\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX9\SOH\DC2\EOT\224\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX9\SOH\DC2\EOT\241\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX9\STX\DC2\EOT\224\ETX\n\ + \\ENQ\ENQ\ACK\STX9\STX\DC2\EOT\241\ETX\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX:\DC2\EOT\225\ETX\STX\DC3\n\ + \\EOT\ENQ\ACK\STX:\DC2\EOT\242\ETX\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX:\SOH\DC2\EOT\225\ETX\STX\r\n\ + \\ENQ\ENQ\ACK\STX:\SOH\DC2\EOT\242\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX:\STX\DC2\EOT\225\ETX\DLE\DC2\n\ + \\ENQ\ENQ\ACK\STX:\STX\DC2\EOT\242\ETX\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STX;\DC2\EOT\226\ETX\STX\NAK\n\ + \\EOT\ENQ\ACK\STX;\DC2\EOT\243\ETX\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX;\SOH\DC2\EOT\226\ETX\STX\SI\n\ + \\ENQ\ENQ\ACK\STX;\SOH\DC2\EOT\243\ETX\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX;\STX\DC2\EOT\226\ETX\DC2\DC4\n\ + \\ENQ\ENQ\ACK\STX;\STX\DC2\EOT\243\ETX\DC2\DC4\n\ \\f\n\ - \\EOT\ENQ\ACK\STX<\DC2\EOT\227\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STX<\DC2\EOT\244\ETX\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX<\SOH\DC2\EOT\227\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX<\SOH\DC2\EOT\244\ETX\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX<\STX\DC2\EOT\227\ETX\b\n\ + \\ENQ\ENQ\ACK\STX<\STX\DC2\EOT\244\ETX\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX=\DC2\EOT\228\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STX=\DC2\EOT\245\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX=\SOH\DC2\EOT\228\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STX=\SOH\DC2\EOT\245\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX=\STX\DC2\EOT\228\ETX\n\ + \\ENQ\ENQ\ACK\STX=\STX\DC2\EOT\245\ETX\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STX>\DC2\EOT\229\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STX>\DC2\EOT\246\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX>\SOH\DC2\EOT\229\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX>\SOH\DC2\EOT\246\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX>\STX\DC2\EOT\229\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STX>\STX\DC2\EOT\246\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STX?\DC2\EOT\230\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STX?\DC2\EOT\247\ETX\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX?\SOH\DC2\EOT\230\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STX?\SOH\DC2\EOT\247\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX?\STX\DC2\EOT\230\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STX?\STX\DC2\EOT\247\ETX\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX@\DC2\EOT\231\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STX@\DC2\EOT\248\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX@\SOH\DC2\EOT\231\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STX@\SOH\DC2\EOT\248\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX@\STX\DC2\EOT\231\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STX@\STX\DC2\EOT\248\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STXA\DC2\EOT\232\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STXA\DC2\EOT\249\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXA\SOH\DC2\EOT\232\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STXA\SOH\DC2\EOT\249\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXA\STX\DC2\EOT\232\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STXA\STX\DC2\EOT\249\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STXB\DC2\EOT\233\ETX\STX\t\n\ + \\EOT\ENQ\ACK\STXB\DC2\EOT\250\ETX\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXB\SOH\DC2\EOT\233\ETX\STX\ETX\n\ + \\ENQ\ENQ\ACK\STXB\SOH\DC2\EOT\250\ETX\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXB\STX\DC2\EOT\233\ETX\ACK\b\n\ + \\ENQ\ENQ\ACK\STXB\STX\DC2\EOT\250\ETX\ACK\b\n\ \\f\n\ - \\EOT\ENQ\ACK\STXC\DC2\EOT\234\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STXC\DC2\EOT\251\ETX\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXC\SOH\DC2\EOT\234\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STXC\SOH\DC2\EOT\251\ETX\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXC\STX\DC2\EOT\234\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STXC\STX\DC2\EOT\251\ETX\v\r\n\ \\f\n\ - \\EOT\ENQ\ACK\STXD\DC2\EOT\235\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXD\DC2\EOT\252\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXD\SOH\DC2\EOT\235\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXD\SOH\DC2\EOT\252\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXD\STX\DC2\EOT\235\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXD\STX\DC2\EOT\252\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXE\DC2\EOT\236\ETX\STX\r\n\ + \\EOT\ENQ\ACK\STXE\DC2\EOT\253\ETX\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXE\SOH\DC2\EOT\236\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STXE\SOH\DC2\EOT\253\ETX\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXE\STX\DC2\EOT\236\ETX\n\ + \\ENQ\ENQ\ACK\STXE\STX\DC2\EOT\253\ETX\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\ACK\STXF\DC2\EOT\237\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXF\DC2\EOT\254\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXF\SOH\DC2\EOT\237\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXF\SOH\DC2\EOT\254\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXF\STX\DC2\EOT\237\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXF\STX\DC2\EOT\254\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXG\DC2\EOT\238\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXG\DC2\EOT\255\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXG\SOH\DC2\EOT\238\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXG\SOH\DC2\EOT\255\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXG\STX\DC2\EOT\238\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXG\STX\DC2\EOT\255\ETX\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXH\DC2\EOT\239\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXH\DC2\EOT\128\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXH\SOH\DC2\EOT\239\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXH\SOH\DC2\EOT\128\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXH\STX\DC2\EOT\239\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXH\STX\DC2\EOT\128\EOT\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXI\DC2\EOT\240\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STXI\DC2\EOT\129\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXI\SOH\DC2\EOT\240\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXI\SOH\DC2\EOT\129\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXI\STX\DC2\EOT\240\ETX\b\n\ + \\ENQ\ENQ\ACK\STXI\STX\DC2\EOT\129\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STXJ\DC2\EOT\241\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXJ\DC2\EOT\130\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXJ\SOH\DC2\EOT\241\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXJ\SOH\DC2\EOT\130\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXJ\STX\DC2\EOT\241\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXJ\STX\DC2\EOT\130\EOT\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXK\DC2\EOT\242\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STXK\DC2\EOT\131\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXK\SOH\DC2\EOT\242\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXK\SOH\DC2\EOT\131\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXK\STX\DC2\EOT\242\ETX\b\n\ + \\ENQ\ENQ\ACK\STXK\STX\DC2\EOT\131\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STXL\DC2\EOT\243\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STXL\DC2\EOT\132\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXL\SOH\DC2\EOT\243\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXL\SOH\DC2\EOT\132\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXL\STX\DC2\EOT\243\ETX\b\n\ + \\ENQ\ENQ\ACK\STXL\STX\DC2\EOT\132\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STXM\DC2\EOT\244\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXM\DC2\EOT\133\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXM\SOH\DC2\EOT\244\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXM\SOH\DC2\EOT\133\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXM\STX\DC2\EOT\244\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXM\STX\DC2\EOT\133\EOT\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXN\DC2\EOT\245\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXN\DC2\EOT\134\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXN\SOH\DC2\EOT\245\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STXN\SOH\DC2\EOT\134\EOT\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXN\STX\DC2\EOT\245\ETX\n\ + \\ENQ\ENQ\ACK\STXN\STX\DC2\EOT\134\EOT\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXO\DC2\EOT\246\ETX\STX\SO\n\ + \\EOT\ENQ\ACK\STXO\DC2\EOT\135\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXO\SOH\DC2\EOT\246\ETX\STX\b\n\ + \\ENQ\ENQ\ACK\STXO\SOH\DC2\EOT\135\EOT\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXO\STX\DC2\EOT\246\ETX\v\r\n\ + \\ENQ\ENQ\ACK\STXO\STX\DC2\EOT\135\EOT\v\r\n\ \\DC4\n\ - \\EOT\ENQ\ACK\STXP\DC2\EOT\247\ETX\STX\DC3\"\ACK Bash\n\ + \\EOT\ENQ\ACK\STXP\DC2\EOT\136\EOT\STX\DC3\"\ACK Bash\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXP\SOH\DC2\EOT\247\ETX\STX\r\n\ + \\ENQ\ENQ\ACK\STXP\SOH\DC2\EOT\136\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXP\STX\DC2\EOT\247\ETX\DLE\DC2\n\ + \\ENQ\ENQ\ACK\STXP\STX\DC2\EOT\136\EOT\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STXQ\DC2\EOT\248\ETX\STX\SI\n\ + \\EOT\ENQ\ACK\STXQ\DC2\EOT\137\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXQ\SOH\DC2\EOT\248\ETX\STX\t\n\ + \\ENQ\ENQ\ACK\STXQ\SOH\DC2\EOT\137\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXQ\STX\DC2\EOT\248\ETX\f\SO\n\ + \\ENQ\ENQ\ACK\STXQ\STX\DC2\EOT\137\EOT\f\SO\n\ \\f\n\ - \\EOT\ENQ\ACK\STXR\DC2\EOT\249\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXR\DC2\EOT\138\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXR\SOH\DC2\EOT\249\ETX\STX\a\n\ + \\ENQ\ENQ\ACK\STXR\SOH\DC2\EOT\138\EOT\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXR\STX\DC2\EOT\249\ETX\n\ + \\ENQ\ENQ\ACK\STXR\STX\DC2\EOT\138\EOT\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXS\DC2\EOT\250\ETX\STX\f\n\ + \\EOT\ENQ\ACK\STXS\DC2\EOT\139\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXS\SOH\DC2\EOT\250\ETX\STX\ACK\n\ + \\ENQ\ENQ\ACK\STXS\SOH\DC2\EOT\139\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXS\STX\DC2\EOT\250\ETX\t\v\n\ + \\ENQ\ENQ\ACK\STXS\STX\DC2\EOT\139\EOT\t\v\n\ \\f\n\ - \\EOT\ENQ\ACK\STXT\DC2\EOT\251\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STXT\DC2\EOT\140\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXT\SOH\DC2\EOT\251\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXT\SOH\DC2\EOT\140\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXT\STX\DC2\EOT\251\ETX\b\n\ + \\ENQ\ENQ\ACK\STXT\STX\DC2\EOT\140\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STXU\DC2\EOT\252\ETX\STX\DC2\n\ + \\EOT\ENQ\ACK\STXU\DC2\EOT\141\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXU\SOH\DC2\EOT\252\ETX\STX\f\n\ + \\ENQ\ENQ\ACK\STXU\SOH\DC2\EOT\141\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXU\STX\DC2\EOT\252\ETX\SI\DC1\n\ + \\ENQ\ENQ\ACK\STXU\STX\DC2\EOT\141\EOT\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STXV\DC2\EOT\253\ETX\STX\ETB\n\ + \\EOT\ENQ\ACK\STXV\DC2\EOT\142\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXV\SOH\DC2\EOT\253\ETX\STX\DC1\n\ + \\ENQ\ENQ\ACK\STXV\SOH\DC2\EOT\142\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXV\STX\DC2\EOT\253\ETX\DC4\SYN\n\ + \\ENQ\ENQ\ACK\STXV\STX\DC2\EOT\142\EOT\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\ACK\STXW\DC2\EOT\254\ETX\STX\DC3\n\ + \\EOT\ENQ\ACK\STXW\DC2\EOT\143\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXW\SOH\DC2\EOT\254\ETX\STX\r\n\ + \\ENQ\ENQ\ACK\STXW\SOH\DC2\EOT\143\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXW\STX\DC2\EOT\254\ETX\DLE\DC2\n\ + \\ENQ\ENQ\ACK\STXW\STX\DC2\EOT\143\EOT\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STXX\DC2\EOT\255\ETX\STX\v\n\ + \\EOT\ENQ\ACK\STXX\DC2\EOT\144\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXX\SOH\DC2\EOT\255\ETX\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXX\SOH\DC2\EOT\144\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXX\STX\DC2\EOT\255\ETX\b\n\ + \\ENQ\ENQ\ACK\STXX\STX\DC2\EOT\144\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STXY\DC2\EOT\128\EOT\STX\SI\n\ + \\EOT\ENQ\ACK\STXY\DC2\EOT\145\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXY\SOH\DC2\EOT\128\EOT\STX\t\n\ + \\ENQ\ENQ\ACK\STXY\SOH\DC2\EOT\145\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXY\STX\DC2\EOT\128\EOT\f\SO\n\ + \\ENQ\ENQ\ACK\STXY\STX\DC2\EOT\145\EOT\f\SO\n\ \\f\n\ - \\EOT\ENQ\ACK\STXZ\DC2\EOT\129\EOT\STX\v\n\ + \\EOT\ENQ\ACK\STXZ\DC2\EOT\146\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXZ\SOH\DC2\EOT\129\EOT\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STXZ\SOH\DC2\EOT\146\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STXZ\STX\DC2\EOT\129\EOT\b\n\ + \\ENQ\ENQ\ACK\STXZ\STX\DC2\EOT\146\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX[\DC2\EOT\130\EOT\STX\v\n\ + \\EOT\ENQ\ACK\STX[\DC2\EOT\147\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX[\SOH\DC2\EOT\130\EOT\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX[\SOH\DC2\EOT\147\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX[\STX\DC2\EOT\130\EOT\b\n\ + \\ENQ\ENQ\ACK\STX[\STX\DC2\EOT\147\EOT\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\\\DC2\EOT\131\EOT\STX\f\n\ + \\EOT\ENQ\ACK\STX\\\DC2\EOT\148\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\\\SOH\DC2\EOT\131\EOT\STX\ACK\n\ + \\ENQ\ENQ\ACK\STX\\\SOH\DC2\EOT\148\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\\\STX\DC2\EOT\131\EOT\t\v\n\ + \\ENQ\ENQ\ACK\STX\\\STX\DC2\EOT\148\EOT\t\v\n\ \\146\ETX\n\ - \\EOT\ENQ\ACK\STX]\DC2\EOT\132\EOT\STX\v\"\131\ETX NextLanguage = 95;\n\ + \\EOT\ENQ\ACK\STX]\DC2\EOT\149\EOT\STX\v\"\131\ETX NextLanguage = 95;\n\ \ Steps add a new language:\n\ \ 1. Copy-paste the \"NextLanguage = N\" line above\n\ \ 2. Increment \"NextLanguage = N\" to \"NextLanguage = N+1\"\n\ @@ -6672,7 +6740,7 @@ packedFileDescriptor \ 5. (optional) Add a brief comment behind the language if the name is not self-explanatory\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX]\SOH\DC2\EOT\132\EOT\STX\ENQ\n\ + \\ENQ\ENQ\ACK\STX]\SOH\DC2\EOT\149\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX]\STX\DC2\EOT\132\EOT\b\n\ + \\ENQ\ENQ\ACK\STX]\STX\DC2\EOT\149\EOT\b\n\ \b\ACKproto3" \ No newline at end of file diff --git a/bindings/haskell/src/Proto/Scip_Fields.hs b/bindings/haskell/src/Proto/Scip_Fields.hs index 0bfd799d..e2ba8c6e 100644 --- a/bindings/haskell/src/Proto/Scip_Fields.hs +++ b/bindings/haskell/src/Proto/Scip_Fields.hs @@ -74,6 +74,12 @@ externalSymbols :: Data.ProtoLens.Field.HasField s "externalSymbols" a) => Lens.Family2.LensLike' f s a externalSymbols = Data.ProtoLens.Field.field @"externalSymbols" +isDefinition :: + forall f s a. + (Prelude.Functor f, + Data.ProtoLens.Field.HasField s "isDefinition" a) => + Lens.Family2.LensLike' f s a +isDefinition = Data.ProtoLens.Field.field @"isDefinition" isImplementation :: forall f s a. (Prelude.Functor f, diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 81395f0b..bfa79772 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -560,7 +560,11 @@ pub struct Document { /// Occurrences that appear in this file. // @@protoc_insertion_point(field:scip.Document.occurrences) pub occurrences: ::std::vec::Vec, - /// Symbols that are defined within this document. + /// Symbols that are "defined" within this document. + /// + /// This should include symbols which technically do not have any definition, + /// but have a reference and are defined by some other symbol (see + /// Relationship.is_definition). // @@protoc_insertion_point(field:scip.Document.symbols) pub symbols: ::std::vec::Vec, // special fields @@ -1562,6 +1566,20 @@ pub struct Relationship { /// Similar to `references_symbols` but for "Go to type definition". // @@protoc_insertion_point(field:scip.Relationship.is_type_definition) pub is_type_definition: bool, + /// Allows overriding the behavior of "Go to definition" and "Find references" + /// for symbols which do not have a definition of their own or could + /// potentially have multiple definitions. + /// + /// For example, in a language with single inheritance and no field overriding, + /// inherited fields can reuse the same symbol as the ancestor which declares + /// the field. In such a situation, is_definition is not needed. + /// + /// On the other hand, in languages with single inheritance and some form + /// of mixins, you can use is_definition to relate the symbol to the + /// matching symbol in ancestor classes, and is_reference to relate the + /// symbol to the matching symbol in mixins. + // @@protoc_insertion_point(field:scip.Relationship.is_definition) + pub is_definition: bool, // special fields // @@protoc_insertion_point(special_field:scip.Relationship.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1579,7 +1597,7 @@ impl Relationship { } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(4); + let mut fields = ::std::vec::Vec::with_capacity(5); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>( "symbol", @@ -1601,6 +1619,11 @@ impl Relationship { |m: &Relationship| { &m.is_type_definition }, |m: &mut Relationship| { &mut m.is_type_definition }, )); + fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>( + "is_definition", + |m: &Relationship| { &m.is_definition }, + |m: &mut Relationship| { &mut m.is_definition }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "Relationship", fields, @@ -1631,6 +1654,9 @@ impl ::protobuf::Message for Relationship { 32 => { self.is_type_definition = is.read_bool()?; }, + 40 => { + self.is_definition = is.read_bool()?; + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -1655,6 +1681,9 @@ impl ::protobuf::Message for Relationship { if self.is_type_definition != false { my_size += 1 + 1; } + if self.is_definition != false { + my_size += 1 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -1673,6 +1702,9 @@ impl ::protobuf::Message for Relationship { if self.is_type_definition != false { os.write_bool(4, self.is_type_definition)?; } + if self.is_definition != false { + os.write_bool(5, self.is_definition)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -1694,6 +1726,7 @@ impl ::protobuf::Message for Relationship { self.is_reference = false; self.is_implementation = false; self.is_type_definition = false; + self.is_definition = false; self.special_fields.clear(); } @@ -1703,6 +1736,7 @@ impl ::protobuf::Message for Relationship { is_reference: false, is_implementation: false, is_type_definition: false, + is_definition: false, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -3350,35 +3384,36 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ocal\x10\x08\x1a\x02\x10\x01\"\x8b\x01\n\x11SymbolInformation\x12\x16\n\ \x06symbol\x18\x01\x20\x01(\tR\x06symbol\x12$\n\rdocumentation\x18\x03\ \x20\x03(\tR\rdocumentation\x128\n\rrelationships\x18\x04\x20\x03(\x0b2\ - \x12.scip.RelationshipR\rrelationships\"\xa4\x01\n\x0cRelationship\x12\ + \x12.scip.RelationshipR\rrelationships\"\xc9\x01\n\x0cRelationship\x12\ \x16\n\x06symbol\x18\x01\x20\x01(\tR\x06symbol\x12!\n\x0cis_reference\ \x18\x02\x20\x01(\x08R\x0bisReference\x12+\n\x11is_implementation\x18\ \x03\x20\x01(\x08R\x10isImplementation\x12,\n\x12is_type_definition\x18\ - \x04\x20\x01(\x08R\x10isTypeDefinition\"\xfb\x01\n\nOccurrence\x12\x14\n\ - \x05range\x18\x01\x20\x03(\x05R\x05range\x12\x16\n\x06symbol\x18\x02\x20\ - \x01(\tR\x06symbol\x12!\n\x0csymbol_roles\x18\x03\x20\x01(\x05R\x0bsymbo\ - lRoles\x125\n\x16override_documentation\x18\x04\x20\x03(\tR\x15overrideD\ - ocumentation\x121\n\x0bsyntax_kind\x18\x05\x20\x01(\x0e2\x10.scip.Syntax\ - KindR\nsyntaxKind\x122\n\x0bdiagnostics\x18\x06\x20\x03(\x0b2\x10.scip.D\ - iagnosticR\x0bdiagnostics\"\xa7\x01\n\nDiagnostic\x12*\n\x08severity\x18\ - \x01\x20\x01(\x0e2\x0e.scip.SeverityR\x08severity\x12\x12\n\x04code\x18\ - \x02\x20\x01(\tR\x04code\x12\x18\n\x07message\x18\x03\x20\x01(\tR\x07mes\ - sage\x12\x16\n\x06source\x18\x04\x20\x01(\tR\x06source\x12'\n\x04tags\ - \x18\x05\x20\x03(\x0e2\x13.scip.DiagnosticTagR\x04tags*1\n\x0fProtocolVe\ - rsion\x12\x1e\n\x1aUnspecifiedProtocolVersion\x10\0*@\n\x0cTextEncoding\ - \x12\x1b\n\x17UnspecifiedTextEncoding\x10\0\x12\x08\n\x04UTF8\x10\x01\ - \x12\t\n\x05UTF16\x10\x02*}\n\nSymbolRole\x12\x19\n\x15UnspecifiedSymbol\ - Role\x10\0\x12\x0e\n\nDefinition\x10\x01\x12\n\n\x06Import\x10\x02\x12\ - \x0f\n\x0bWriteAccess\x10\x04\x12\x0e\n\nReadAccess\x10\x08\x12\r\n\tGen\ - erated\x10\x10\x12\x08\n\x04Test\x10\x20*\xea\x06\n\nSyntaxKind\x12\x19\ - \n\x15UnspecifiedSyntaxKind\x10\0\x12\x0b\n\x07Comment\x10\x01\x12\x18\n\ - \x14PunctuationDelimiter\x10\x02\x12\x16\n\x12PunctuationBracket\x10\x03\ - \x12\x0b\n\x07Keyword\x10\x04\x12\x19\n\x11IdentifierKeyword\x10\x04\x1a\ - \x02\x08\x01\x12\x16\n\x12IdentifierOperator\x10\x05\x12\x0e\n\nIdentifi\ - er\x10\x06\x12\x15\n\x11IdentifierBuiltin\x10\x07\x12\x12\n\x0eIdentifie\ - rNull\x10\x08\x12\x16\n\x12IdentifierConstant\x10\t\x12\x1b\n\x17Identif\ - ierMutableGlobal\x10\n\x12\x17\n\x13IdentifierParameter\x10\x0b\x12\x13\ - \n\x0fIdentifierLocal\x10\x0c\x12\x16\n\x12IdentifierShadowed\x10\r\x12\ + \x04\x20\x01(\x08R\x10isTypeDefinition\x12#\n\ris_definition\x18\x05\x20\ + \x01(\x08R\x0cisDefinition\"\xfb\x01\n\nOccurrence\x12\x14\n\x05range\ + \x18\x01\x20\x03(\x05R\x05range\x12\x16\n\x06symbol\x18\x02\x20\x01(\tR\ + \x06symbol\x12!\n\x0csymbol_roles\x18\x03\x20\x01(\x05R\x0bsymbolRoles\ + \x125\n\x16override_documentation\x18\x04\x20\x03(\tR\x15overrideDocumen\ + tation\x121\n\x0bsyntax_kind\x18\x05\x20\x01(\x0e2\x10.scip.SyntaxKindR\ + \nsyntaxKind\x122\n\x0bdiagnostics\x18\x06\x20\x03(\x0b2\x10.scip.Diagno\ + sticR\x0bdiagnostics\"\xa7\x01\n\nDiagnostic\x12*\n\x08severity\x18\x01\ + \x20\x01(\x0e2\x0e.scip.SeverityR\x08severity\x12\x12\n\x04code\x18\x02\ + \x20\x01(\tR\x04code\x12\x18\n\x07message\x18\x03\x20\x01(\tR\x07message\ + \x12\x16\n\x06source\x18\x04\x20\x01(\tR\x06source\x12'\n\x04tags\x18\ + \x05\x20\x03(\x0e2\x13.scip.DiagnosticTagR\x04tags*1\n\x0fProtocolVersio\ + n\x12\x1e\n\x1aUnspecifiedProtocolVersion\x10\0*@\n\x0cTextEncoding\x12\ + \x1b\n\x17UnspecifiedTextEncoding\x10\0\x12\x08\n\x04UTF8\x10\x01\x12\t\ + \n\x05UTF16\x10\x02*}\n\nSymbolRole\x12\x19\n\x15UnspecifiedSymbolRole\ + \x10\0\x12\x0e\n\nDefinition\x10\x01\x12\n\n\x06Import\x10\x02\x12\x0f\n\ + \x0bWriteAccess\x10\x04\x12\x0e\n\nReadAccess\x10\x08\x12\r\n\tGenerated\ + \x10\x10\x12\x08\n\x04Test\x10\x20*\xea\x06\n\nSyntaxKind\x12\x19\n\x15U\ + nspecifiedSyntaxKind\x10\0\x12\x0b\n\x07Comment\x10\x01\x12\x18\n\x14Pun\ + ctuationDelimiter\x10\x02\x12\x16\n\x12PunctuationBracket\x10\x03\x12\ + \x0b\n\x07Keyword\x10\x04\x12\x19\n\x11IdentifierKeyword\x10\x04\x1a\x02\ + \x08\x01\x12\x16\n\x12IdentifierOperator\x10\x05\x12\x0e\n\nIdentifier\ + \x10\x06\x12\x15\n\x11IdentifierBuiltin\x10\x07\x12\x12\n\x0eIdentifierN\ + ull\x10\x08\x12\x16\n\x12IdentifierConstant\x10\t\x12\x1b\n\x17Identifie\ + rMutableGlobal\x10\n\x12\x17\n\x13IdentifierParameter\x10\x0b\x12\x13\n\ + \x0fIdentifierLocal\x10\x0c\x12\x16\n\x12IdentifierShadowed\x10\r\x12\ \x17\n\x13IdentifierNamespace\x10\x0e\x12\x18\n\x10IdentifierModule\x10\ \x0e\x1a\x02\x08\x01\x12\x16\n\x12IdentifierFunction\x10\x0f\x12\x20\n\ \x1cIdentifierFunctionDefinition\x10\x10\x12\x13\n\x0fIdentifierMacro\ @@ -3429,8 +3464,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \nTypeScript\x10\x17\x12\x13\n\x0fTypeScriptReact\x10^\x12\x0f\n\x0bVisu\ alBasic\x10?\x12\x07\n\x03Vue\x10\x19\x12\x0b\n\x07Wolfram\x105\x12\x07\ \n\x03XML\x10\x1f\x12\x07\n\x03XSL\x10\x20\x12\x08\n\x04YAML\x10J\x12\ - \x07\n\x03Zig\x10&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\x9d\ - \xb8\x01\n\x07\x12\x05\n\0\x8c\x04\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\ + \x07\n\x03Zig\x10&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\x90\ + \xbf\x01\n\x07\x12\x05\n\0\x9d\x04\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\ \x122\xf7\x03\x20An\x20index\x20contains\x20one\x20or\x20more\x20pieces\ \x20of\x20information\x20about\x20a\x20given\x20piece\x20of\n\x20source\ \x20code\x20or\x20software\x20artifact.\x20Complementary\x20information\ @@ -3515,7 +3550,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x05\x04\x02\x02\x02\x04\x12\x03A\x02\n\n\x0c\n\x05\x04\x02\x02\x02\ \x05\x12\x03A\x0b\x11\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03A\x12\x1b\n\ \x0c\n\x05\x04\x02\x02\x02\x03\x12\x03A\x1e\x1f\nH\n\x02\x04\x03\x12\x04\ - E\0Y\x01\x1a<\x20Document\x20defines\x20the\x20metadata\x20about\x20a\ + E\0]\x01\x1a<\x20Document\x20defines\x20the\x20metadata\x20about\x20a\ \x20source\x20file\x20on\x20disk.\n\n\n\n\x03\x04\x03\x01\x12\x03E\x08\ \x10\n\xa5\x02\n\x04\x04\x03\x02\0\x12\x03J\x02\x16\x1a\x97\x02\x20The\ \x20string\x20ID\x20for\x20the\x20programming\x20language\x20this\x20fil\ @@ -3541,687 +3576,707 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x04\x04\x03\x02\x02\x12\x03V\x02&\x1a'\x20Occurrences\x20that\x20appe\ ar\x20in\x20this\x20file.\n\n\x0c\n\x05\x04\x03\x02\x02\x04\x12\x03V\x02\ \n\n\x0c\n\x05\x04\x03\x02\x02\x06\x12\x03V\x0b\x15\n\x0c\n\x05\x04\x03\ - \x02\x02\x01\x12\x03V\x16!\n\x0c\n\x05\x04\x03\x02\x02\x03\x12\x03V$%\n=\ - \n\x04\x04\x03\x02\x03\x12\x03X\x02)\x1a0\x20Symbols\x20that\x20are\x20d\ - efined\x20within\x20this\x20document.\n\n\x0c\n\x05\x04\x03\x02\x03\x04\ - \x12\x03X\x02\n\n\x0c\n\x05\x04\x03\x02\x03\x06\x12\x03X\x0b\x1c\n\x0c\n\ - \x05\x04\x03\x02\x03\x01\x12\x03X\x1d$\n\x0c\n\x05\x04\x03\x02\x03\x03\ - \x12\x03X'(\n\xee\x0f\n\x02\x04\x04\x12\x06\x80\x01\0\x84\x01\x01\x1a\ - \xdf\x0f\x20Symbol\x20is\x20similar\x20to\x20a\x20URI,\x20it\x20identifi\ - es\x20a\x20class,\x20method,\x20or\x20a\x20local\n\x20variable.\x20`Symb\ - olInformation`\x20contains\x20rich\x20metadata\x20about\x20symbols\x20su\ - ch\x20as\n\x20the\x20docstring.\n\n\x20Symbol\x20has\x20a\x20standardize\ - d\x20string\x20representation,\x20which\x20can\x20be\x20used\n\x20interc\ - hangeably\x20with\x20`Symbol`.\x20The\x20syntax\x20for\x20Symbol\x20is\ - \x20the\x20following:\n\x20```\n\x20\x20\x20#\x20()+\x20stands\x20for\ - \x20one\x20or\x20more\x20repetitions\x20of\x20\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\x20'\x20\x20'\x20'\x20()+\x20|\x20'local\ - \x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\x20'\x20\ - \x20'\x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20any\x20UTF-8,\x20escape\x20sp\ - aces\x20with\x20double\x20space.\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above,\x20u\ - se\x20the\x20placeholder\x20'.'\x20to\x20indicate\x20an\x20empty\x20valu\ - e\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ - same\x20as\x20above\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ - \x20|\x20\x20|\x20\x20|\x20\x20|\x20\ - \x20|\x20\x20|\x20\n\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'/'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - ::=\x20\x20'#'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'.'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - ::=\x20\x20':'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'('\x20\x20').'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - ::=\x20'['\x20\x20']'\n\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20::=\x20'('\x20\x20')'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\ - :=\x20\n\x20\x20\x20\x20::=\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20::=\x20\x20|\x20\n\ - \x20\x20\x20\x20\x20\x20\x20::=\x20()+\n\x20\x20\x20\x20::=\x20'_'\x20|\x20'+'\ - \x20|\x20'-'\x20|\x20'$'\x20|\x20ASCII\x20letter\x20or\x20digit\n\x20\ - \x20\x20\x20\x20\x20::=\x20'`'\x20()+\x20'`'\n\x20\x20\x20\x20\x20\x20::=\x20any\x20U\ - TF-8\x20character,\x20escape\x20backticks\x20with\x20double\x20backtick.\ - \n\x20```\n\n\x20The\x20list\x20of\x20descriptors\x20for\x20a\x20symbol\ - \x20should\x20together\x20form\x20a\x20fully\n\x20qualified\x20name\x20f\ - or\x20the\x20symbol.\x20That\x20is,\x20it\x20should\x20serve\x20as\x20a\ - \x20unique\n\x20identifier\x20across\x20the\x20package.\x20Typically,\ - \x20it\x20will\x20include\x20one\x20descriptor\n\x20for\x20every\x20node\ - \x20in\x20the\x20AST\x20(along\x20the\x20ancestry\x20path)\x20between\ - \x20the\x20root\x20of\n\x20the\x20file\x20and\x20the\x20node\x20correspo\ - nding\x20to\x20the\x20symbol.\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x80\x01\ - \x08\x0e\n\x0c\n\x04\x04\x04\x02\0\x12\x04\x81\x01\x02\x14\n\r\n\x05\x04\ - \x04\x02\0\x05\x12\x04\x81\x01\x02\x08\n\r\n\x05\x04\x04\x02\0\x01\x12\ - \x04\x81\x01\t\x0f\n\r\n\x05\x04\x04\x02\0\x03\x12\x04\x81\x01\x12\x13\n\ - \x0c\n\x04\x04\x04\x02\x01\x12\x04\x82\x01\x02\x16\n\r\n\x05\x04\x04\x02\ - \x01\x06\x12\x04\x82\x01\x02\t\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\x82\ - \x01\n\x11\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\x82\x01\x14\x15\n\x0c\n\ - \x04\x04\x04\x02\x02\x12\x04\x83\x01\x02&\n\r\n\x05\x04\x04\x02\x02\x04\ - \x12\x04\x83\x01\x02\n\n\r\n\x05\x04\x04\x02\x02\x06\x12\x04\x83\x01\x0b\ - \x15\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\x83\x01\x16!\n\r\n\x05\x04\ - \x04\x02\x02\x03\x12\x04\x83\x01$%\nq\n\x02\x04\x05\x12\x06\x89\x01\0\ - \x8d\x01\x01\x1ac\x20Unit\x20of\x20packaging\x20and\x20distribution.\n\n\ - \x20NOTE:\x20This\x20corresponds\x20to\x20a\x20module\x20in\x20Go\x20and\ - \x20JVM\x20languages.\n\n\x0b\n\x03\x04\x05\x01\x12\x04\x89\x01\x08\x0f\ - \n\x0c\n\x04\x04\x05\x02\0\x12\x04\x8a\x01\x02\x15\n\r\n\x05\x04\x05\x02\ - \0\x05\x12\x04\x8a\x01\x02\x08\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\x8a\ - \x01\t\x10\n\r\n\x05\x04\x05\x02\0\x03\x12\x04\x8a\x01\x13\x14\n\x0c\n\ - \x04\x04\x05\x02\x01\x12\x04\x8b\x01\x02\x12\n\r\n\x05\x04\x05\x02\x01\ - \x05\x12\x04\x8b\x01\x02\x08\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\x8b\ - \x01\t\r\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\x8b\x01\x10\x11\n\x0c\n\ - \x04\x04\x05\x02\x02\x12\x04\x8c\x01\x02\x15\n\r\n\x05\x04\x05\x02\x02\ - \x05\x12\x04\x8c\x01\x02\x08\n\r\n\x05\x04\x05\x02\x02\x01\x12\x04\x8c\ - \x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\x8c\x01\x13\x14\n\x0c\n\ - \x02\x04\x06\x12\x06\x8f\x01\0\xa6\x01\x01\n\x0b\n\x03\x04\x06\x01\x12\ - \x04\x8f\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\x06\x90\x01\x02\xa2\ - \x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\x90\x01\x07\r\n\r\n\x05\x04\ - \x06\x04\0\x03\x12\x04\x91\x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x03\x02\ - \x12\x04\x91\x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x02\0\x12\x04\x92\x01\ - \x04\x1a\n\x0f\n\x07\x04\x06\x04\0\x02\0\x01\x12\x04\x92\x01\x04\x15\n\ - \x0f\n\x07\x04\x06\x04\0\x02\0\x02\x12\x04\x92\x01\x18\x19\n}\n\x06\x04\ - \x06\x04\0\x02\x01\x12\x04\x96\x01\x04\x12\x1am\x20Unit\x20of\x20code\ + \x02\x02\x01\x12\x03V\x16!\n\x0c\n\x05\x04\x03\x02\x02\x03\x12\x03V$%\n\ + \xea\x01\n\x04\x04\x03\x02\x03\x12\x03\\\x02)\x1a\xdc\x01\x20Symbols\x20\ + that\x20are\x20\"defined\"\x20within\x20this\x20document.\n\n\x20This\ + \x20should\x20include\x20symbols\x20which\x20technically\x20do\x20not\ + \x20have\x20any\x20definition,\n\x20but\x20have\x20a\x20reference\x20and\ + \x20are\x20defined\x20by\x20some\x20other\x20symbol\x20(see\n\x20Relatio\ + nship.is_definition).\n\n\x0c\n\x05\x04\x03\x02\x03\x04\x12\x03\\\x02\n\ + \n\x0c\n\x05\x04\x03\x02\x03\x06\x12\x03\\\x0b\x1c\n\x0c\n\x05\x04\x03\ + \x02\x03\x01\x12\x03\\\x1d$\n\x0c\n\x05\x04\x03\x02\x03\x03\x12\x03\\'(\ + \n\xee\x0f\n\x02\x04\x04\x12\x06\x84\x01\0\x88\x01\x01\x1a\xdf\x0f\x20Sy\ + mbol\x20is\x20similar\x20to\x20a\x20URI,\x20it\x20identifies\x20a\x20cla\ + ss,\x20method,\x20or\x20a\x20local\n\x20variable.\x20`SymbolInformation`\ + \x20contains\x20rich\x20metadata\x20about\x20symbols\x20such\x20as\n\x20\ + the\x20docstring.\n\n\x20Symbol\x20has\x20a\x20standardized\x20string\ + \x20representation,\x20which\x20can\x20be\x20used\n\x20interchangeably\ + \x20with\x20`Symbol`.\x20The\x20syntax\x20for\x20Symbol\x20is\x20the\x20\ + following:\n\x20```\n\x20\x20\x20#\x20()+\x20stands\x20for\x20one\x20\ + or\x20more\x20repetitions\x20of\x20\n\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\x20\ + '\x20\x20'\x20'\x20()+\x20|\x20'local\x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20::=\x20\x20'\x20'\x20\x20'\x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20any\x20UTF-8,\x20escape\x20spaces\x20with\x20\ + double\x20space.\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above,\x20use\x20the\x20pla\ + ceholder\x20'.'\x20to\x20indicate\x20an\x20empty\x20value\n\x20\x20\x20<\ + package-name>\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20ab\ + ove\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20::=\x20same\x20as\x20above\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20|\x20\ + \x20|\x20\x20|\x20\x20|\x20\x20|\x20\x20|\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20\x20'/'\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'#'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20\x20'.'\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20':'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20\x20'('\x20\x20')\ + .'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20'['\ + \x20\x20']'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20'('\x20\x20')'\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20<\ + identifier>\n\x20\x20\x20\x20::=\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20::=\x20\x20|\x20\n\x20\x20\ + \x20\x20\x20\x20\x20::=\x20()+\ + \n\x20\x20\x20\x20::=\x20'_'\x20|\x20'+'\x20|\x20'\ + -'\x20|\x20'$'\x20|\x20ASCII\x20letter\x20or\x20digit\n\x20\x20\x20\x20\x20\x20::=\x20'`'\x20()+\x20'`'\n\ + \x20\x20\x20\x20\x20\x20::=\x20any\x20UTF-8\x20chara\ + cter,\x20escape\x20backticks\x20with\x20double\x20backtick.\n\x20```\n\n\ + \x20The\x20list\x20of\x20descriptors\x20for\x20a\x20symbol\x20should\x20\ + together\x20form\x20a\x20fully\n\x20qualified\x20name\x20for\x20the\x20s\ + ymbol.\x20That\x20is,\x20it\x20should\x20serve\x20as\x20a\x20unique\n\ + \x20identifier\x20across\x20the\x20package.\x20Typically,\x20it\x20will\ + \x20include\x20one\x20descriptor\n\x20for\x20every\x20node\x20in\x20the\ + \x20AST\x20(along\x20the\x20ancestry\x20path)\x20between\x20the\x20root\ + \x20of\n\x20the\x20file\x20and\x20the\x20node\x20corresponding\x20to\x20\ + the\x20symbol.\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x84\x01\x08\x0e\n\x0c\n\ + \x04\x04\x04\x02\0\x12\x04\x85\x01\x02\x14\n\r\n\x05\x04\x04\x02\0\x05\ + \x12\x04\x85\x01\x02\x08\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\x85\x01\t\ + \x0f\n\r\n\x05\x04\x04\x02\0\x03\x12\x04\x85\x01\x12\x13\n\x0c\n\x04\x04\ + \x04\x02\x01\x12\x04\x86\x01\x02\x16\n\r\n\x05\x04\x04\x02\x01\x06\x12\ + \x04\x86\x01\x02\t\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\x86\x01\n\x11\n\ + \r\n\x05\x04\x04\x02\x01\x03\x12\x04\x86\x01\x14\x15\n\x0c\n\x04\x04\x04\ + \x02\x02\x12\x04\x87\x01\x02&\n\r\n\x05\x04\x04\x02\x02\x04\x12\x04\x87\ + \x01\x02\n\n\r\n\x05\x04\x04\x02\x02\x06\x12\x04\x87\x01\x0b\x15\n\r\n\ + \x05\x04\x04\x02\x02\x01\x12\x04\x87\x01\x16!\n\r\n\x05\x04\x04\x02\x02\ + \x03\x12\x04\x87\x01$%\nq\n\x02\x04\x05\x12\x06\x8d\x01\0\x91\x01\x01\ + \x1ac\x20Unit\x20of\x20packaging\x20and\x20distribution.\n\n\x20NOTE:\ + \x20This\x20corresponds\x20to\x20a\x20module\x20in\x20Go\x20and\x20JVM\ + \x20languages.\n\n\x0b\n\x03\x04\x05\x01\x12\x04\x8d\x01\x08\x0f\n\x0c\n\ + \x04\x04\x05\x02\0\x12\x04\x8e\x01\x02\x15\n\r\n\x05\x04\x05\x02\0\x05\ + \x12\x04\x8e\x01\x02\x08\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\x8e\x01\t\ + \x10\n\r\n\x05\x04\x05\x02\0\x03\x12\x04\x8e\x01\x13\x14\n\x0c\n\x04\x04\ + \x05\x02\x01\x12\x04\x8f\x01\x02\x12\n\r\n\x05\x04\x05\x02\x01\x05\x12\ + \x04\x8f\x01\x02\x08\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\x8f\x01\t\r\n\ + \r\n\x05\x04\x05\x02\x01\x03\x12\x04\x8f\x01\x10\x11\n\x0c\n\x04\x04\x05\ + \x02\x02\x12\x04\x90\x01\x02\x15\n\r\n\x05\x04\x05\x02\x02\x05\x12\x04\ + \x90\x01\x02\x08\n\r\n\x05\x04\x05\x02\x02\x01\x12\x04\x90\x01\t\x10\n\r\ + \n\x05\x04\x05\x02\x02\x03\x12\x04\x90\x01\x13\x14\n\x0c\n\x02\x04\x06\ + \x12\x06\x93\x01\0\xaa\x01\x01\n\x0b\n\x03\x04\x06\x01\x12\x04\x93\x01\ + \x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\x06\x94\x01\x02\xa6\x01\x03\n\r\n\ + \x05\x04\x06\x04\0\x01\x12\x04\x94\x01\x07\r\n\r\n\x05\x04\x06\x04\0\x03\ + \x12\x04\x95\x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x03\x02\x12\x04\x95\ + \x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x02\0\x12\x04\x96\x01\x04\x1a\n\ + \x0f\n\x07\x04\x06\x04\0\x02\0\x01\x12\x04\x96\x01\x04\x15\n\x0f\n\x07\ + \x04\x06\x04\0\x02\0\x02\x12\x04\x96\x01\x18\x19\n}\n\x06\x04\x06\x04\0\ + \x02\x01\x12\x04\x9a\x01\x04\x12\x1am\x20Unit\x20of\x20code\x20abstracti\ + on\x20and/or\x20namespacing.\n\n\x20NOTE:\x20This\x20corresponds\x20to\ + \x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages.\n\n\x0f\n\x07\ + \x04\x06\x04\0\x02\x01\x01\x12\x04\x9a\x01\x04\r\n\x0f\n\x07\x04\x06\x04\ + \0\x02\x01\x02\x12\x04\x9a\x01\x10\x11\n(\n\x06\x04\x06\x04\0\x02\x02\ + \x12\x04\x9c\x01\x04\"\x1a\x18\x20Use\x20Namespace\x20instead.\n\n\x0f\n\ + \x07\x04\x06\x04\0\x02\x02\x01\x12\x04\x9c\x01\x04\x0b\n\x0f\n\x07\x04\ + \x06\x04\0\x02\x02\x02\x12\x04\x9c\x01\x0e\x0f\n\x0f\n\x07\x04\x06\x04\0\ + \x02\x02\x03\x12\x04\x9c\x01\x10!\n\x10\n\x08\x04\x06\x04\0\x02\x02\x03\ + \x01\x12\x04\x9c\x01\x11\x20\n\x0e\n\x06\x04\x06\x04\0\x02\x03\x12\x04\ + \x9d\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x01\x12\x04\x9d\x01\x04\ + \x08\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x02\x12\x04\x9d\x01\x0b\x0c\n\x0e\ + \n\x06\x04\x06\x04\0\x02\x04\x12\x04\x9e\x01\x04\r\n\x0f\n\x07\x04\x06\ + \x04\0\x02\x04\x01\x12\x04\x9e\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\ + \x04\x02\x12\x04\x9e\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x05\x12\ + \x04\x9f\x01\x04\x0f\n\x0f\n\x07\x04\x06\x04\0\x02\x05\x01\x12\x04\x9f\ + \x01\x04\n\n\x0f\n\x07\x04\x06\x04\0\x02\x05\x02\x12\x04\x9f\x01\r\x0e\n\ + \x0e\n\x06\x04\x06\x04\0\x02\x06\x12\x04\xa0\x01\x04\x16\n\x0f\n\x07\x04\ + \x06\x04\0\x02\x06\x01\x12\x04\xa0\x01\x04\x11\n\x0f\n\x07\x04\x06\x04\0\ + \x02\x06\x02\x12\x04\xa0\x01\x14\x15\n\x0e\n\x06\x04\x06\x04\0\x02\x07\ + \x12\x04\xa1\x01\x04\x12\n\x0f\n\x07\x04\x06\x04\0\x02\x07\x01\x12\x04\ + \xa1\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x07\x02\x12\x04\xa1\x01\x10\ + \x11\n\x0e\n\x06\x04\x06\x04\0\x02\x08\x12\x04\xa2\x01\x04\x0e\n\x0f\n\ + \x07\x04\x06\x04\0\x02\x08\x01\x12\x04\xa2\x01\x04\t\n\x0f\n\x07\x04\x06\ + \x04\0\x02\x08\x02\x12\x04\xa2\x01\x0c\r\n.\n\x06\x04\x06\x04\0\x02\t\ + \x12\x04\xa4\x01\x04\r\x1a\x1e\x20Can\x20be\x20used\x20for\x20any\x20pur\ + pose.\n\n\x0f\n\x07\x04\x06\x04\0\x02\t\x01\x12\x04\xa4\x01\x04\x08\n\ + \x0f\n\x07\x04\x06\x04\0\x02\t\x02\x12\x04\xa4\x01\x0b\x0c\n\x0e\n\x06\ + \x04\x06\x04\0\x02\n\x12\x04\xa5\x01\x04\x0e\n\x0f\n\x07\x04\x06\x04\0\ + \x02\n\x01\x12\x04\xa5\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\n\x02\x12\ + \x04\xa5\x01\x0c\r\n\x0c\n\x04\x04\x06\x02\0\x12\x04\xa7\x01\x02\x12\n\r\ + \n\x05\x04\x06\x02\0\x05\x12\x04\xa7\x01\x02\x08\n\r\n\x05\x04\x06\x02\0\ + \x01\x12\x04\xa7\x01\t\r\n\r\n\x05\x04\x06\x02\0\x03\x12\x04\xa7\x01\x10\ + \x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xa8\x01\x02\x1b\n\r\n\x05\x04\ + \x06\x02\x01\x05\x12\x04\xa8\x01\x02\x08\n\r\n\x05\x04\x06\x02\x01\x01\ + \x12\x04\xa8\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\xa8\x01\x19\ + \x1a\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xa9\x01\x02\x14\n\r\n\x05\x04\ + \x06\x02\x02\x06\x12\x04\xa9\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\ + \x12\x04\xa9\x01\t\x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xa9\x01\x12\ + \x13\n\x83\x01\n\x02\x04\x07\x12\x06\xae\x01\0\xb9\x01\x01\x1au\x20Symbo\ + lInformation\x20defines\x20metadata\x20about\x20a\x20symbol,\x20such\x20\ + as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20package\x20it's\ + \x20defined\x20it.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xae\x01\x08\x19\n\ + \xa0\x01\n\x04\x04\x07\x02\0\x12\x04\xb1\x01\x02\x14\x1a\x91\x01\x20Iden\ + tifier\x20of\x20this\x20symbol,\x20which\x20can\x20be\x20referenced\x20f\ + rom\x20`Occurence.symbol`.\n\x20The\x20string\x20must\x20be\x20formatted\ + \x20according\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\n\r\n\x05\x04\ + \x07\x02\0\x05\x12\x04\xb1\x01\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\ + \x04\xb1\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xb1\x01\x12\x13\n\ + \xb6\x02\n\x04\x04\x07\x02\x01\x12\x04\xb6\x01\x02$\x1a\xa7\x02\x20(opti\ + onal,\x20but\x20strongly\x20recommended)\x20The\x20markdown-formatted\ + \x20documentation\n\x20for\x20this\x20symbol.\x20This\x20field\x20is\x20\ + repeated\x20to\x20allow\x20different\x20kinds\x20of\n\x20documentation.\ + \x20\x20For\x20example,\x20it's\x20nice\x20to\x20include\x20both\x20the\ + \x20signature\x20of\x20a\n\x20method\x20(parameters\x20and\x20return\x20\ + type)\x20along\x20with\x20the\x20accompanying\x20docstring.\n\n\r\n\x05\ + \x04\x07\x02\x01\x04\x12\x04\xb6\x01\x02\n\n\r\n\x05\x04\x07\x02\x01\x05\ + \x12\x04\xb6\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xb6\x01\ + \x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xb6\x01\"#\n^\n\x04\x04\ + \x07\x02\x02\x12\x04\xb8\x01\x02*\x1aP\x20(optional)\x20Relationships\ + \x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\x20definitio\ + n).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xb8\x01\x02\n\n\r\n\x05\x04\ + \x07\x02\x02\x06\x12\x04\xb8\x01\x0b\x17\n\r\n\x05\x04\x07\x02\x02\x01\ + \x12\x04\xb8\x01\x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xb8\x01()\n\ + \x0c\n\x02\x04\x08\x12\x06\xbb\x01\0\xee\x01\x01\n\x0b\n\x03\x04\x08\x01\ + \x12\x04\xbb\x01\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\xbc\x01\x02\ + \x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xbc\x01\x02\x08\n\r\n\x05\x04\ + \x08\x02\0\x01\x12\x04\xbc\x01\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\ + \xbc\x01\x12\x13\n\x8f\x08\n\x04\x04\x08\x02\x01\x12\x04\xd5\x01\x02\x18\ + \x1a\x80\x08\x20When\x20resolving\x20\"Find\x20references\",\x20this\x20\ + field\x20documents\x20what\x20other\x20symbols\n\x20should\x20be\x20incl\ + uded\x20together\x20with\x20this\x20symbol.\x20For\x20example,\x20consid\ + er\x20the\n\x20following\x20TypeScript\x20code\x20that\x20defines\x20two\ + \x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\n\x20```ts\n\ + \x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\x20string\n\ + \x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\x20class\x20D\ + og\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20^^^\x20defi\ + nition\x20Dog#,\x20implementation_symbols\x20=\x20Animal#\n\x20\x20\x20p\ + ublic\x20sound():\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\x20r\ + eferences_symbols\x20=\x20Animal#sound(),\x20implementation_symbols\x20=\ + \x20Animal#sound()\n\x20}\n\x20const\x20animal:\x20Animal\x20=\x20new\ + \x20Dog()\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\ + ^^^^^\x20reference\x20Animal#\n\x20console.log(animal.sound())\n\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + ^^^^^\x20reference\x20Animal#sound()\n\x20```\n\x20Doing\x20\"Find\x20re\ + ferences\"\x20on\x20the\x20symbol\x20`Animal#sound()`\x20should\x20retur\ + n\n\x20references\x20to\x20the\x20`Dog#sound()`\x20method\x20as\x20well.\ + \x20Vice-versa,\x20doing\x20\"Find\n\x20references\"\x20on\x20the\x20`Do\ + g#sound()`\x20method\x20should\x20include\x20references\x20to\x20the\n\ + \x20`Animal#sound()`\x20method\x20as\x20well.\n\n\r\n\x05\x04\x08\x02\ + \x01\x05\x12\x04\xd5\x01\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\ + \xd5\x01\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd5\x01\x16\x17\n\ + \xba\x04\n\x04\x04\x08\x02\x02\x12\x04\xde\x01\x02\x1d\x1a\xab\x04\x20Si\ + milar\x20to\x20`references_symbols`\x20but\x20for\x20\"Go\x20to\x20imple\ + mentation\".\n\x20It's\x20common\x20for\x20the\x20`implementation_symbol\ + s`\x20and\x20`references_symbols`\x20fields\n\x20have\x20the\x20same\x20\ + values\x20but\x20that's\x20not\x20always\x20the\x20case.\n\x20In\x20the\ + \x20TypeScript\x20example\x20above,\x20observe\x20that\x20`implementatio\ + n_symbols`\x20has\n\x20the\x20value\x20`\"Animal#\"`\x20for\x20the\x20\"\ + Dog#\"\x20symbol\x20while\x20`references_symbols`\x20is\n\x20empty.\x20W\ + hen\x20requesting\x20\"Find\x20references\"\x20on\x20the\x20\"Animal#\"\ + \x20symbol\x20we\x20don't\n\x20want\x20to\x20include\x20references\x20to\ + \x20\"Dog#\"\x20even\x20if\x20\"Go\x20to\x20implementation\"\x20on\x20th\ + e\n\x20\"Animal#\"\x20symbol\x20should\x20navigate\x20to\x20the\x20\"Dog\ + #\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xde\x01\x02\x06\n\ + \r\n\x05\x04\x08\x02\x02\x01\x12\x04\xde\x01\x07\x18\n\r\n\x05\x04\x08\ + \x02\x02\x03\x12\x04\xde\x01\x1b\x1c\nP\n\x04\x04\x08\x02\x03\x12\x04\ + \xe0\x01\x02\x1e\x1aB\x20Similar\x20to\x20`references_symbols`\x20but\ + \x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\r\n\x05\x04\x08\x02\ + \x03\x05\x12\x04\xe0\x01\x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\ + \xe0\x01\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xe0\x01\x1c\x1d\n\ + \x95\x05\n\x04\x04\x08\x02\x04\x12\x04\xed\x01\x02\x19\x1a\x86\x05\x20Al\ + lows\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20definition\ + \"\x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20which\x20do\ + \x20not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\x20could\ + \n\x20potentially\x20have\x20multiple\x20definitions.\n\n\x20For\x20exam\ + ple,\x20in\x20a\x20language\x20with\x20single\x20inheritance\x20and\x20n\ + o\x20field\x20overriding,\n\x20inherited\x20fields\x20can\x20reuse\x20th\ + e\x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20declares\n\x20t\ + he\x20field.\x20In\x20such\x20a\x20situation,\x20is_definition\x20is\x20\ + not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\x20languages\x20\ + with\x20single\x20inheritance\x20and\x20some\x20form\n\x20of\x20mixins,\ + \x20you\x20can\x20use\x20is_definition\x20to\x20relate\x20the\x20symbol\ + \x20to\x20the\n\x20matching\x20symbol\x20in\x20ancestor\x20classes,\x20a\ + nd\x20is_reference\x20to\x20relate\x20the\n\x20symbol\x20to\x20the\x20ma\ + tching\x20symbol\x20in\x20mixins.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\ + \x04\xed\x01\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xed\x01\x07\ + \x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xed\x01\x17\x18\n\x89\x03\n\ + \x02\x05\x02\x12\x06\xf5\x01\0\x85\x02\x01\x1a\xfa\x02\x20SymbolRole\x20\ + declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20occurr\ + ence.\x20\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20where\ + \x20each\x20bit\x20represents\x20a\x20different\x20role.\x20For\x20examp\ + le,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20set,\ + \x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\x20va\ + lue\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\x20imple\ + mented\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20=\x20(rol\ + e.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\ + \x02\x01\x12\x04\xf5\x01\x05\x0f\nv\n\x04\x05\x02\x02\0\x12\x04\xf8\x01\ + \x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\x20used;\ + \x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20from\x20the\ + \x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x02\x02\0\x01\x12\x04\ + \xf8\x01\x02\x17\n\r\n\x05\x05\x02\x02\0\x02\x12\x04\xf8\x01\x1a\x1b\nT\ + \n\x04\x05\x02\x02\x01\x12\x04\xfa\x01\x02\x13\x1aF\x20Is\x20the\x20symb\ + ol\x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbo\ + l\x20reference.\n\n\r\n\x05\x05\x02\x02\x01\x01\x12\x04\xfa\x01\x02\x0c\ + \n\r\n\x05\x05\x02\x02\x01\x02\x12\x04\xfa\x01\x0f\x12\n,\n\x04\x05\x02\ + \x02\x02\x12\x04\xfc\x01\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ + ted\x20here?\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\x04\xfc\x01\x02\x08\n\r\ + \n\x05\x05\x02\x02\x02\x02\x12\x04\xfc\x01\x0b\x0e\n+\n\x04\x05\x02\x02\ + \x03\x12\x04\xfe\x01\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ + \x20here?\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\xfe\x01\x02\r\n\r\n\ + \x05\x05\x02\x02\x03\x02\x12\x04\xfe\x01\x10\x13\n(\n\x04\x05\x02\x02\ + \x04\x12\x04\x80\x02\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ + ere?\n\n\r\n\x05\x05\x02\x02\x04\x01\x12\x04\x80\x02\x02\x0c\n\r\n\x05\ + \x05\x02\x02\x04\x02\x12\x04\x80\x02\x0f\x12\n0\n\x04\x05\x02\x02\x05\ + \x12\x04\x82\x02\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ + \x20code?\n\n\r\n\x05\x05\x02\x02\x05\x01\x12\x04\x82\x02\x02\x0b\n\r\n\ + \x05\x05\x02\x02\x05\x02\x12\x04\x82\x02\x0e\x12\n+\n\x04\x05\x02\x02\ + \x06\x12\x04\x84\x02\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ + t\x20code?\n\n\r\n\x05\x05\x02\x02\x06\x01\x12\x04\x84\x02\x02\x06\n\r\n\ + \x05\x05\x02\x02\x06\x02\x12\x04\x84\x02\t\r\n\x0c\n\x02\x05\x03\x12\x06\ + \x87\x02\0\xe4\x02\x01\n\x0b\n\x03\x05\x03\x01\x12\x04\x87\x02\x05\x0f\n\ + \x0b\n\x03\x05\x03\x03\x12\x04\x88\x02\x02\x1c\n\x0c\n\x04\x05\x03\x03\ + \x02\x12\x04\x88\x02\x02\x1c\n\x0c\n\x04\x05\x03\x02\0\x12\x04\x8a\x02\ + \x02\x1c\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\x8a\x02\x02\x17\n\r\n\x05\ + \x05\x03\x02\0\x02\x12\x04\x8a\x02\x1a\x1b\n;\n\x04\x05\x03\x02\x01\x12\ + \x04\x8d\x02\x02\x0e\x1a-\x20Comment,\x20including\x20comment\x20markers\ + \x20and\x20text\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\x8d\x02\x02\t\n\ + \r\n\x05\x05\x03\x02\x01\x02\x12\x04\x8d\x02\x0c\r\n\x1b\n\x04\x05\x03\ + \x02\x02\x12\x04\x90\x02\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,`\n\n\r\n\x05\ + \x05\x03\x02\x02\x01\x12\x04\x90\x02\x02\x16\n\r\n\x05\x05\x03\x02\x02\ + \x02\x12\x04\x90\x02\x19\x1a\n2\n\x04\x05\x03\x02\x03\x12\x04\x92\x02\ + \x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntactically\n\n\r\ + \n\x05\x05\x03\x02\x03\x01\x12\x04\x92\x02\x02\x14\n\r\n\x05\x05\x03\x02\ + \x03\x02\x12\x04\x92\x02\x17\x18\n5\n\x04\x05\x03\x02\x04\x12\x04\x95\ + \x02\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class`,\x20etc.\n\ + \n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x95\x02\x02\t\n\r\n\x05\x05\x03\ + \x02\x04\x02\x12\x04\x95\x02\x0c\r\n\x0c\n\x04\x05\x03\x02\x05\x12\x04\ + \x96\x02\x02*\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x96\x02\x02\x13\n\r\ + \n\x05\x05\x03\x02\x05\x02\x12\x04\x96\x02\x16\x17\n\r\n\x05\x05\x03\x02\ + \x05\x03\x12\x04\x96\x02\x18)\n\x0e\n\x06\x05\x03\x02\x05\x03\x01\x12\ + \x04\x96\x02\x19(\n\x1e\n\x04\x05\x03\x02\x06\x12\x04\x99\x02\x02\x19\ + \x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\ + \x99\x02\x02\x14\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x99\x02\x17\x18\n\ + X\n\x04\x05\x03\x02\x07\x12\x04\x9c\x02\x02\x11\x1aJ\x20non-specific\x20\ + catch-all\x20for\x20any\x20identifier\x20not\x20better\x20described\x20e\ + lsewhere\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\x9c\x02\x02\x0c\n\r\n\ + \x05\x05\x03\x02\x07\x02\x12\x04\x9c\x02\x0f\x10\nN\n\x04\x05\x03\x02\ + \x08\x12\x04\x9e\x02\x02\x18\x1a@\x20Identifiers\x20builtin\x20to\x20the\ + \x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\x05\x05\x03\ + \x02\x08\x01\x12\x04\x9e\x02\x02\x13\n\r\n\x05\x05\x03\x02\x08\x02\x12\ + \x04\x9e\x02\x16\x17\n[\n\x04\x05\x03\x02\t\x12\x04\xa0\x02\x02\x15\x1aM\ + \x20Identifiers\x20representing\x20`null`-like\x20values:\x20`None`\x20i\ + n\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x03\x02\t\x01\x12\x04\ + \xa0\x02\x02\x10\n\r\n\x05\x05\x03\x02\t\x02\x12\x04\xa0\x02\x13\x14\n.\ + \n\x04\x05\x03\x02\n\x12\x04\xa2\x02\x02\x19\x1a\x20\x20`xyz`\x20in\x20`\ + const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x03\x02\n\x01\x12\x04\ + \xa2\x02\x02\x14\n\r\n\x05\x05\x03\x02\n\x02\x12\x04\xa2\x02\x17\x18\n'\ + \n\x04\x05\x03\x02\x0b\x12\x04\xa4\x02\x02\x1f\x1a\x19\x20`var\x20X\x20=\ + \x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\x0b\x01\x12\x04\xa4\ + \x02\x02\x19\n\r\n\x05\x05\x03\x02\x0b\x02\x12\x04\xa4\x02\x1c\x1e\n3\n\ + \x04\x05\x03\x02\x0c\x12\x04\xa6\x02\x02\x1b\x1a%\x20Parameter\x20defini\ + tion\x20and\x20references\n\n\r\n\x05\x05\x03\x02\x0c\x01\x12\x04\xa6\ + \x02\x02\x15\n\r\n\x05\x05\x03\x02\x0c\x02\x12\x04\xa6\x02\x18\x1a\nX\n\ + \x04\x05\x03\x02\r\x12\x04\xa8\x02\x02\x17\x1aJ\x20Identifiers\x20for\ + \x20variable\x20definitions\x20and\x20references\x20within\x20a\x20local\ + \x20scope\n\n\r\n\x05\x05\x03\x02\r\x01\x12\x04\xa8\x02\x02\x11\n\r\n\ + \x05\x05\x03\x02\r\x02\x12\x04\xa8\x02\x14\x16\nK\n\x04\x05\x03\x02\x0e\ + \x12\x04\xaa\x02\x02\x1a\x1a=\x20Identifiers\x20that\x20shadow\x20other\ + \x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\x05\x05\x03\x02\ + \x0e\x01\x12\x04\xaa\x02\x02\x14\n\r\n\x05\x05\x03\x02\x0e\x02\x12\x04\ + \xaa\x02\x17\x19\n\xcd\x01\n\x04\x05\x03\x02\x0f\x12\x04\xaf\x02\x02\x1b\ + \x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\x20of\x20code\ \x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20This\x20corres\ - ponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages.\n\n\ - \x0f\n\x07\x04\x06\x04\0\x02\x01\x01\x12\x04\x96\x01\x04\r\n\x0f\n\x07\ - \x04\x06\x04\0\x02\x01\x02\x12\x04\x96\x01\x10\x11\n(\n\x06\x04\x06\x04\ - \0\x02\x02\x12\x04\x98\x01\x04\"\x1a\x18\x20Use\x20Namespace\x20instead.\ - \n\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x01\x12\x04\x98\x01\x04\x0b\n\x0f\n\ - \x07\x04\x06\x04\0\x02\x02\x02\x12\x04\x98\x01\x0e\x0f\n\x0f\n\x07\x04\ - \x06\x04\0\x02\x02\x03\x12\x04\x98\x01\x10!\n\x10\n\x08\x04\x06\x04\0\ - \x02\x02\x03\x01\x12\x04\x98\x01\x11\x20\n\x0e\n\x06\x04\x06\x04\0\x02\ - \x03\x12\x04\x99\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x01\x12\x04\ - \x99\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x02\x12\x04\x99\x01\ - \x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x04\x12\x04\x9a\x01\x04\r\n\x0f\n\ - \x07\x04\x06\x04\0\x02\x04\x01\x12\x04\x9a\x01\x04\x08\n\x0f\n\x07\x04\ - \x06\x04\0\x02\x04\x02\x12\x04\x9a\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\ - \x02\x05\x12\x04\x9b\x01\x04\x0f\n\x0f\n\x07\x04\x06\x04\0\x02\x05\x01\ - \x12\x04\x9b\x01\x04\n\n\x0f\n\x07\x04\x06\x04\0\x02\x05\x02\x12\x04\x9b\ - \x01\r\x0e\n\x0e\n\x06\x04\x06\x04\0\x02\x06\x12\x04\x9c\x01\x04\x16\n\ - \x0f\n\x07\x04\x06\x04\0\x02\x06\x01\x12\x04\x9c\x01\x04\x11\n\x0f\n\x07\ - \x04\x06\x04\0\x02\x06\x02\x12\x04\x9c\x01\x14\x15\n\x0e\n\x06\x04\x06\ - \x04\0\x02\x07\x12\x04\x9d\x01\x04\x12\n\x0f\n\x07\x04\x06\x04\0\x02\x07\ - \x01\x12\x04\x9d\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x07\x02\x12\x04\ - \x9d\x01\x10\x11\n\x0e\n\x06\x04\x06\x04\0\x02\x08\x12\x04\x9e\x01\x04\ - \x0e\n\x0f\n\x07\x04\x06\x04\0\x02\x08\x01\x12\x04\x9e\x01\x04\t\n\x0f\n\ - \x07\x04\x06\x04\0\x02\x08\x02\x12\x04\x9e\x01\x0c\r\n.\n\x06\x04\x06\ - \x04\0\x02\t\x12\x04\xa0\x01\x04\r\x1a\x1e\x20Can\x20be\x20used\x20for\ - \x20any\x20purpose.\n\n\x0f\n\x07\x04\x06\x04\0\x02\t\x01\x12\x04\xa0\ - \x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\t\x02\x12\x04\xa0\x01\x0b\x0c\ - \n\x0e\n\x06\x04\x06\x04\0\x02\n\x12\x04\xa1\x01\x04\x0e\n\x0f\n\x07\x04\ - \x06\x04\0\x02\n\x01\x12\x04\xa1\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\ - \n\x02\x12\x04\xa1\x01\x0c\r\n\x0c\n\x04\x04\x06\x02\0\x12\x04\xa3\x01\ - \x02\x12\n\r\n\x05\x04\x06\x02\0\x05\x12\x04\xa3\x01\x02\x08\n\r\n\x05\ - \x04\x06\x02\0\x01\x12\x04\xa3\x01\t\r\n\r\n\x05\x04\x06\x02\0\x03\x12\ - \x04\xa3\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xa4\x01\x02\x1b\ - \n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xa4\x01\x02\x08\n\r\n\x05\x04\x06\ - \x02\x01\x01\x12\x04\xa4\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\ - \xa4\x01\x19\x1a\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xa5\x01\x02\x14\n\r\ - \n\x05\x04\x06\x02\x02\x06\x12\x04\xa5\x01\x02\x08\n\r\n\x05\x04\x06\x02\ - \x02\x01\x12\x04\xa5\x01\t\x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xa5\ - \x01\x12\x13\n\x83\x01\n\x02\x04\x07\x12\x06\xaa\x01\0\xb5\x01\x01\x1au\ - \x20SymbolInformation\x20defines\x20metadata\x20about\x20a\x20symbol,\ - \x20such\x20as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20packag\ - e\x20it's\x20defined\x20it.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xaa\x01\ - \x08\x19\n\xa0\x01\n\x04\x04\x07\x02\0\x12\x04\xad\x01\x02\x14\x1a\x91\ - \x01\x20Identifier\x20of\x20this\x20symbol,\x20which\x20can\x20be\x20ref\ - erenced\x20from\x20`Occurence.symbol`.\n\x20The\x20string\x20must\x20be\ - \x20formatted\x20according\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\ - \n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xad\x01\x02\x08\n\r\n\x05\x04\x07\ - \x02\0\x01\x12\x04\xad\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xad\ - \x01\x12\x13\n\xb6\x02\n\x04\x04\x07\x02\x01\x12\x04\xb2\x01\x02$\x1a\ - \xa7\x02\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ - down-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20This\x20f\ - ield\x20is\x20repeated\x20to\x20allow\x20different\x20kinds\x20of\n\x20d\ - ocumentation.\x20\x20For\x20example,\x20it's\x20nice\x20to\x20include\ - \x20both\x20the\x20signature\x20of\x20a\n\x20method\x20(parameters\x20an\ - d\x20return\x20type)\x20along\x20with\x20the\x20accompanying\x20docstrin\ - g.\n\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\xb2\x01\x02\n\n\r\n\x05\x04\ - \x07\x02\x01\x05\x12\x04\xb2\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\ - \x12\x04\xb2\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xb2\x01\"\ - #\n^\n\x04\x04\x07\x02\x02\x12\x04\xb4\x01\x02*\x1aP\x20(optional)\x20Re\ - lationships\x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\ - \x20definition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xb4\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x02\x06\x12\x04\xb4\x01\x0b\x17\n\r\n\x05\x04\x07\ - \x02\x02\x01\x12\x04\xb4\x01\x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\ - \xb4\x01()\n\x0c\n\x02\x04\x08\x12\x06\xb7\x01\0\xdd\x01\x01\n\x0b\n\x03\ - \x04\x08\x01\x12\x04\xb7\x01\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\ - \xb8\x01\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xb8\x01\x02\x08\n\r\ - \n\x05\x04\x08\x02\0\x01\x12\x04\xb8\x01\t\x0f\n\r\n\x05\x04\x08\x02\0\ - \x03\x12\x04\xb8\x01\x12\x13\n\x8f\x08\n\x04\x04\x08\x02\x01\x12\x04\xd1\ - \x01\x02\x18\x1a\x80\x08\x20When\x20resolving\x20\"Find\x20references\",\ - \x20this\x20field\x20documents\x20what\x20other\x20symbols\n\x20should\ - \x20be\x20included\x20together\x20with\x20this\x20symbol.\x20For\x20exam\ - ple,\x20consider\x20the\n\x20following\x20TypeScript\x20code\x20that\x20\ - defines\x20two\x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\ - \n\x20```ts\n\x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\ - \x20string\n\x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\ - \x20class\x20Dog\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\ - \x20^^^\x20definition\x20Dog#,\x20implementation_symbols\x20=\x20Animal#\ - \n\x20\x20\x20public\x20sound():\x20string\x20{\x20return\x20\"woof\"\ - \x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20Do\ - g#sound(),\x20references_symbols\x20=\x20Animal#sound(),\x20implementati\ - on_symbols\x20=\x20Animal#sound()\n\x20}\n\x20const\x20animal:\x20Animal\ - \x20=\x20new\x20Dog()\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20^^^^^^\x20reference\x20Animal#\n\x20console.log(animal.sound\ - ())\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^\x20reference\x20Animal#sound()\n\x20```\n\x20Doing\ - \x20\"Find\x20references\"\x20on\x20the\x20symbol\x20`Animal#sound()`\ - \x20should\x20return\n\x20references\x20to\x20the\x20`Dog#sound()`\x20me\ - thod\x20as\x20well.\x20Vice-versa,\x20doing\x20\"Find\n\x20references\"\ - \x20on\x20the\x20`Dog#sound()`\x20method\x20should\x20include\x20referen\ - ces\x20to\x20the\n\x20`Animal#sound()`\x20method\x20as\x20well.\n\n\r\n\ - \x05\x04\x08\x02\x01\x05\x12\x04\xd1\x01\x02\x06\n\r\n\x05\x04\x08\x02\ - \x01\x01\x12\x04\xd1\x01\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\ - \xd1\x01\x16\x17\n\xba\x04\n\x04\x04\x08\x02\x02\x12\x04\xda\x01\x02\x1d\ - \x1a\xab\x04\x20Similar\x20to\x20`references_symbols`\x20but\x20for\x20\ - \"Go\x20to\x20implementation\".\n\x20It's\x20common\x20for\x20the\x20`im\ - plementation_symbols`\x20and\x20`references_symbols`\x20fields\n\x20have\ - \x20the\x20same\x20values\x20but\x20that's\x20not\x20always\x20the\x20ca\ - se.\n\x20In\x20the\x20TypeScript\x20example\x20above,\x20observe\x20that\ - \x20`implementation_symbols`\x20has\n\x20the\x20value\x20`\"Animal#\"`\ - \x20for\x20the\x20\"Dog#\"\x20symbol\x20while\x20`references_symbols`\ - \x20is\n\x20empty.\x20When\x20requesting\x20\"Find\x20references\"\x20on\ - \x20the\x20\"Animal#\"\x20symbol\x20we\x20don't\n\x20want\x20to\x20inclu\ - de\x20references\x20to\x20\"Dog#\"\x20even\x20if\x20\"Go\x20to\x20implem\ - entation\"\x20on\x20the\n\x20\"Animal#\"\x20symbol\x20should\x20navigate\ - \x20to\x20the\x20\"Dog#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\ - \x04\xda\x01\x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xda\x01\x07\ - \x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xda\x01\x1b\x1c\nP\n\x04\x04\ - \x08\x02\x03\x12\x04\xdc\x01\x02\x1e\x1aB\x20Similar\x20to\x20`reference\ - s_symbols`\x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\r\n\ - \x05\x04\x08\x02\x03\x05\x12\x04\xdc\x01\x02\x06\n\r\n\x05\x04\x08\x02\ - \x03\x01\x12\x04\xdc\x01\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\ - \xdc\x01\x1c\x1d\n\x89\x03\n\x02\x05\x02\x12\x06\xe4\x01\0\xf4\x01\x01\ - \x1a\xfa\x02\x20SymbolRole\x20declares\x20what\x20\"role\"\x20a\x20symbo\ - l\x20has\x20in\x20an\x20occurrence.\x20\x20A\x20role\x20is\n\x20encoded\ - \x20as\x20a\x20bitset\x20where\x20each\x20bit\x20represents\x20a\x20diff\ - erent\x20role.\x20For\x20example,\n\x20to\x20determine\x20if\x20the\x20`\ - Import`\x20role\x20is\x20set,\x20test\x20whether\x20the\x20second\x20bit\ - \x20of\x20the\n\x20enum\x20value\x20is\x20defined.\x20In\x20pseudocode,\ - \x20this\x20can\x20be\x20implemented\x20with\x20the\n\x20logic:\x20`cons\ - t\x20isImportRole\x20=\x20(role.value\x20&\x20SymbolRole.Import.value)\ - \x20>\x200`.\n\n\x0b\n\x03\x05\x02\x01\x12\x04\xe4\x01\x05\x0f\nv\n\x04\ - \x05\x02\x02\0\x12\x04\xe7\x01\x02\x1c\x1ah\x20This\x20case\x20is\x20not\ - \x20meant\x20to\x20be\x20used;\x20it\x20only\x20exists\x20to\x20avoid\ - \x20an\x20error\n\x20from\x20the\x20Protobuf\x20code\x20generator.\n\n\r\ - \n\x05\x05\x02\x02\0\x01\x12\x04\xe7\x01\x02\x17\n\r\n\x05\x05\x02\x02\0\ - \x02\x12\x04\xe7\x01\x1a\x1b\nT\n\x04\x05\x02\x02\x01\x12\x04\xe9\x01\ - \x02\x13\x1aF\x20Is\x20the\x20symbol\x20defined\x20here?\x20If\x20not,\ - \x20then\x20this\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\x05\x02\ - \x02\x01\x01\x12\x04\xe9\x01\x02\x0c\n\r\n\x05\x05\x02\x02\x01\x02\x12\ - \x04\xe9\x01\x0f\x12\n,\n\x04\x05\x02\x02\x02\x12\x04\xeb\x01\x02\x0f\ - \x1a\x1e\x20Is\x20the\x20symbol\x20imported\x20here?\n\n\r\n\x05\x05\x02\ - \x02\x02\x01\x12\x04\xeb\x01\x02\x08\n\r\n\x05\x05\x02\x02\x02\x02\x12\ - \x04\xeb\x01\x0b\x0e\n+\n\x04\x05\x02\x02\x03\x12\x04\xed\x01\x02\x14\ - \x1a\x1d\x20Is\x20the\x20symbol\x20written\x20here?\n\n\r\n\x05\x05\x02\ - \x02\x03\x01\x12\x04\xed\x01\x02\r\n\r\n\x05\x05\x02\x02\x03\x02\x12\x04\ - \xed\x01\x10\x13\n(\n\x04\x05\x02\x02\x04\x12\x04\xef\x01\x02\x13\x1a\ - \x1a\x20Is\x20the\x20symbol\x20read\x20here?\n\n\r\n\x05\x05\x02\x02\x04\ - \x01\x12\x04\xef\x01\x02\x0c\n\r\n\x05\x05\x02\x02\x04\x02\x12\x04\xef\ - \x01\x0f\x12\n0\n\x04\x05\x02\x02\x05\x12\x04\xf1\x01\x02\x13\x1a\"\x20I\ - s\x20the\x20symbol\x20in\x20generated\x20code?\n\n\r\n\x05\x05\x02\x02\ - \x05\x01\x12\x04\xf1\x01\x02\x0b\n\r\n\x05\x05\x02\x02\x05\x02\x12\x04\ - \xf1\x01\x0e\x12\n+\n\x04\x05\x02\x02\x06\x12\x04\xf3\x01\x02\x0e\x1a\ - \x1d\x20Is\x20the\x20symbol\x20in\x20test\x20code?\n\n\r\n\x05\x05\x02\ - \x02\x06\x01\x12\x04\xf3\x01\x02\x06\n\r\n\x05\x05\x02\x02\x06\x02\x12\ - \x04\xf3\x01\t\r\n\x0c\n\x02\x05\x03\x12\x06\xf6\x01\0\xd3\x02\x01\n\x0b\ - \n\x03\x05\x03\x01\x12\x04\xf6\x01\x05\x0f\n\x0b\n\x03\x05\x03\x03\x12\ - \x04\xf7\x01\x02\x1c\n\x0c\n\x04\x05\x03\x03\x02\x12\x04\xf7\x01\x02\x1c\ - \n\x0c\n\x04\x05\x03\x02\0\x12\x04\xf9\x01\x02\x1c\n\r\n\x05\x05\x03\x02\ - \0\x01\x12\x04\xf9\x01\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\xf9\ - \x01\x1a\x1b\n;\n\x04\x05\x03\x02\x01\x12\x04\xfc\x01\x02\x0e\x1a-\x20Co\ - mment,\x20including\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\ - \x03\x02\x01\x01\x12\x04\xfc\x01\x02\t\n\r\n\x05\x05\x03\x02\x01\x02\x12\ - \x04\xfc\x01\x0c\r\n\x1b\n\x04\x05\x03\x02\x02\x12\x04\xff\x01\x02\x1b\ - \x1a\r\x20`;`\x20`.`\x20`,`\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\xff\ - \x01\x02\x16\n\r\n\x05\x05\x03\x02\x02\x02\x12\x04\xff\x01\x19\x1a\n2\n\ - \x04\x05\x03\x02\x03\x12\x04\x81\x02\x02\x19\x1a$\x20(),\x20{},\x20[]\ - \x20when\x20used\x20syntactically\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\ - \x04\x81\x02\x02\x14\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x81\x02\x17\ - \x18\n5\n\x04\x05\x03\x02\x04\x12\x04\x84\x02\x02\x0e\x1a'\x20`if`,\x20`\ - else`,\x20`return`,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x04\x01\ - \x12\x04\x84\x02\x02\t\n\r\n\x05\x05\x03\x02\x04\x02\x12\x04\x84\x02\x0c\ - \r\n\x0c\n\x04\x05\x03\x02\x05\x12\x04\x85\x02\x02*\n\r\n\x05\x05\x03\ - \x02\x05\x01\x12\x04\x85\x02\x02\x13\n\r\n\x05\x05\x03\x02\x05\x02\x12\ - \x04\x85\x02\x16\x17\n\r\n\x05\x05\x03\x02\x05\x03\x12\x04\x85\x02\x18)\ - \n\x0e\n\x06\x05\x03\x02\x05\x03\x01\x12\x04\x85\x02\x19(\n\x1e\n\x04\ - \x05\x03\x02\x06\x12\x04\x88\x02\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\ - \n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x88\x02\x02\x14\n\r\n\x05\x05\ - \x03\x02\x06\x02\x12\x04\x88\x02\x17\x18\nX\n\x04\x05\x03\x02\x07\x12\ - \x04\x8b\x02\x02\x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20\ - identifier\x20not\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\ - \x03\x02\x07\x01\x12\x04\x8b\x02\x02\x0c\n\r\n\x05\x05\x03\x02\x07\x02\ - \x12\x04\x8b\x02\x0f\x10\nN\n\x04\x05\x03\x02\x08\x12\x04\x8d\x02\x02\ - \x18\x1a@\x20Identifiers\x20builtin\x20to\x20the\x20language:\x20`min`,\ - \x20`print`\x20in\x20Python.\n\n\r\n\x05\x05\x03\x02\x08\x01\x12\x04\x8d\ - \x02\x02\x13\n\r\n\x05\x05\x03\x02\x08\x02\x12\x04\x8d\x02\x16\x17\n[\n\ - \x04\x05\x03\x02\t\x12\x04\x8f\x02\x02\x15\x1aM\x20Identifiers\x20repres\ - enting\x20`null`-like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20\ - in\x20Go.\n\n\r\n\x05\x05\x03\x02\t\x01\x12\x04\x8f\x02\x02\x10\n\r\n\ - \x05\x05\x03\x02\t\x02\x12\x04\x8f\x02\x13\x14\n.\n\x04\x05\x03\x02\n\ - \x12\x04\x91\x02\x02\x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\ - \x20\"hello\"`\n\n\r\n\x05\x05\x03\x02\n\x01\x12\x04\x91\x02\x02\x14\n\r\ - \n\x05\x05\x03\x02\n\x02\x12\x04\x91\x02\x17\x18\n'\n\x04\x05\x03\x02\ - \x0b\x12\x04\x93\x02\x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20\ - in\x20Go\n\n\r\n\x05\x05\x03\x02\x0b\x01\x12\x04\x93\x02\x02\x19\n\r\n\ - \x05\x05\x03\x02\x0b\x02\x12\x04\x93\x02\x1c\x1e\n3\n\x04\x05\x03\x02\ - \x0c\x12\x04\x95\x02\x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20r\ - eferences\n\n\r\n\x05\x05\x03\x02\x0c\x01\x12\x04\x95\x02\x02\x15\n\r\n\ - \x05\x05\x03\x02\x0c\x02\x12\x04\x95\x02\x18\x1a\nX\n\x04\x05\x03\x02\r\ - \x12\x04\x97\x02\x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20defin\ - itions\x20and\x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\ - \x05\x03\x02\r\x01\x12\x04\x97\x02\x02\x11\n\r\n\x05\x05\x03\x02\r\x02\ - \x12\x04\x97\x02\x14\x16\nK\n\x04\x05\x03\x02\x0e\x12\x04\x99\x02\x02\ - \x1a\x1a=\x20Identifiers\x20that\x20shadow\x20other\x20identifiers\x20in\ - \x20an\x20outer\x20scope\n\n\r\n\x05\x05\x03\x02\x0e\x01\x12\x04\x99\x02\ - \x02\x14\n\r\n\x05\x05\x03\x02\x0e\x02\x12\x04\x99\x02\x17\x19\n\xcd\x01\ - \n\x04\x05\x03\x02\x0f\x12\x04\x9e\x02\x02\x1b\x1a\xbe\x01\x20Identifier\ - \x20representing\x20a\x20unit\x20of\x20code\x20abstraction\x20and/or\x20\ - namespacing.\n\n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\ - \x20in\x20Go\x20and\x20JVM\x20languages,\n\x20and\x20a\x20module\x20in\ - \x20languages\x20like\x20Python\x20and\x20JavaScript.\n\n\r\n\x05\x05\ - \x03\x02\x0f\x01\x12\x04\x9e\x02\x02\x15\n\r\n\x05\x05\x03\x02\x0f\x02\ - \x12\x04\x9e\x02\x18\x1a\n\x0c\n\x04\x05\x03\x02\x10\x12\x04\x9f\x02\x02\ - *\n\r\n\x05\x05\x03\x02\x10\x01\x12\x04\x9f\x02\x02\x12\n\r\n\x05\x05\ - \x03\x02\x10\x02\x12\x04\x9f\x02\x15\x17\n\r\n\x05\x05\x03\x02\x10\x03\ - \x12\x04\x9f\x02\x18)\n\x0e\n\x06\x05\x03\x02\x10\x03\x01\x12\x04\x9f\ - \x02\x19(\n4\n\x04\x05\x03\x02\x11\x12\x04\xa2\x02\x02\x1a\x1a&\x20Funct\ - ion\x20references,\x20including\x20calls\n\n\r\n\x05\x05\x03\x02\x11\x01\ - \x12\x04\xa2\x02\x02\x14\n\r\n\x05\x05\x03\x02\x11\x02\x12\x04\xa2\x02\ - \x17\x19\n(\n\x04\x05\x03\x02\x12\x12\x04\xa4\x02\x02$\x1a\x1a\x20Functi\ - on\x20definition\x20only\n\n\r\n\x05\x05\x03\x02\x12\x01\x12\x04\xa4\x02\ - \x02\x1e\n\r\n\x05\x05\x03\x02\x12\x02\x12\x04\xa4\x02!#\n7\n\x04\x05\ - \x03\x02\x13\x12\x04\xa7\x02\x02\x17\x1a)\x20Macro\x20references,\x20inc\ - luding\x20invocations\n\n\r\n\x05\x05\x03\x02\x13\x01\x12\x04\xa7\x02\ - \x02\x11\n\r\n\x05\x05\x03\x02\x13\x02\x12\x04\xa7\x02\x14\x16\n%\n\x04\ - \x05\x03\x02\x14\x12\x04\xa9\x02\x02!\x1a\x17\x20Macro\x20definition\x20\ - only\n\n\r\n\x05\x05\x03\x02\x14\x01\x12\x04\xa9\x02\x02\x1b\n\r\n\x05\ - \x05\x03\x02\x14\x02\x12\x04\xa9\x02\x1e\x20\n!\n\x04\x05\x03\x02\x15\ - \x12\x04\xac\x02\x02\x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\ - \x03\x02\x15\x01\x12\x04\xac\x02\x02\x10\n\r\n\x05\x05\x03\x02\x15\x02\ - \x12\x04\xac\x02\x13\x15\nK\n\x04\x05\x03\x02\x16\x12\x04\xae\x02\x02\ - \x1d\x1a=\x20builtin\x20types\x20only,\x20such\x20as\x20`str`\x20for\x20\ - Python\x20or\x20`int`\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\x16\x01\x12\ - \x04\xae\x02\x02\x17\n\r\n\x05\x05\x03\x02\x16\x02\x12\x04\xae\x02\x1a\ - \x1c\n7\n\x04\x05\x03\x02\x17\x12\x04\xb1\x02\x02\x1b\x1a)\x20Python\x20\ - decorators,\x20c-like\x20__attribute__\n\n\r\n\x05\x05\x03\x02\x17\x01\ - \x12\x04\xb1\x02\x02\x15\n\r\n\x05\x05\x03\x02\x17\x02\x12\x04\xb1\x02\ - \x18\x1a\n\x14\n\x04\x05\x03\x02\x18\x12\x04\xb4\x02\x02\x13\x1a\x06\x20\ - `\\b`\n\n\r\n\x05\x05\x03\x02\x18\x01\x12\x04\xb4\x02\x02\r\n\r\n\x05\ - \x05\x03\x02\x18\x02\x12\x04\xb4\x02\x10\x12\n\x18\n\x04\x05\x03\x02\x19\ - \x12\x04\xb6\x02\x02\x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x03\x02\ - \x19\x01\x12\x04\xb6\x02\x02\x0f\n\r\n\x05\x05\x03\x02\x19\x02\x12\x04\ - \xb6\x02\x12\x14\n\x13\n\x04\x05\x03\x02\x1a\x12\x04\xb8\x02\x02\x15\x1a\ - \x05\x20`.`\n\n\r\n\x05\x05\x03\x02\x1a\x01\x12\x04\xb8\x02\x02\x0f\n\r\ - \n\x05\x05\x03\x02\x1a\x02\x12\x04\xb8\x02\x12\x14\n\"\n\x04\x05\x03\x02\ - \x1b\x12\x04\xba\x02\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\ - \r\n\x05\x05\x03\x02\x1b\x01\x12\x04\xba\x02\x02\x10\n\r\n\x05\x05\x03\ - \x02\x1b\x02\x12\x04\xba\x02\x13\x15\n\x18\n\x04\x05\x03\x02\x1c\x12\x04\ - \xbc\x02\x02\x11\x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x03\x02\x1c\x01\ - \x12\x04\xbc\x02\x02\x0b\n\r\n\x05\x05\x03\x02\x1c\x02\x12\x04\xbc\x02\ - \x0e\x10\n0\n\x04\x05\x03\x02\x1d\x12\x04\xbf\x02\x02\x15\x1a\"\x20Liter\ - al\x20strings:\x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x03\x02\x1d\x01\ - \x12\x04\xbf\x02\x02\x0f\n\r\n\x05\x05\x03\x02\x1d\x02\x12\x04\xbf\x02\ - \x12\x14\n-\n\x04\x05\x03\x02\x1e\x12\x04\xc1\x02\x02\x1b\x1a\x1f\x20non\ - -regex\x20escapes:\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x03\x02\x1e\ - \x01\x12\x04\xc1\x02\x02\x15\n\r\n\x05\x05\x03\x02\x1e\x02\x12\x04\xc1\ - \x02\x18\x1a\n_\n\x04\x05\x03\x02\x1f\x12\x04\xc3\x02\x02\x1c\x1aQ\x20da\ - tetimes\x20within\x20strings,\x20special\x20words\x20within\x20a\x20stri\ - ng,\x20`{}`\x20in\x20format\x20strings\n\n\r\n\x05\x05\x03\x02\x1f\x01\ - \x12\x04\xc3\x02\x02\x16\n\r\n\x05\x05\x03\x02\x1f\x02\x12\x04\xc3\x02\ - \x19\x1b\nG\n\x04\x05\x03\x02\x20\x12\x04\xc5\x02\x02\x18\x1a9\x20\"key\ - \"\x20in\x20{\x20\"key\":\x20\"value\"\x20},\x20useful\x20for\x20example\ - \x20in\x20JSON\n\n\r\n\x05\x05\x03\x02\x20\x01\x12\x04\xc5\x02\x02\x12\n\ - \r\n\x05\x05\x03\x02\x20\x02\x12\x04\xc5\x02\x15\x17\nV\n\x04\x05\x03\ - \x02!\x12\x04\xc7\x02\x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20lan\ - guages\x20that\x20differentiate\x20strings\x20and\x20characters\n\n\r\n\ - \x05\x05\x03\x02!\x01\x12\x04\xc7\x02\x02\x12\n\r\n\x05\x05\x03\x02!\x02\ - \x12\x04\xc7\x02\x15\x17\n9\n\x04\x05\x03\x02\"\x12\x04\xc9\x02\x02\x16\ - \x1a+\x20Literal\x20numbers,\x20both\x20floats\x20and\x20integers\n\n\r\ - \n\x05\x05\x03\x02\"\x01\x12\x04\xc9\x02\x02\x10\n\r\n\x05\x05\x03\x02\"\ - \x02\x12\x04\xc9\x02\x13\x15\n\x1f\n\x04\x05\x03\x02#\x12\x04\xcb\x02\ - \x02\x16\x1a\x11\x20`true`,\x20`false`\n\n\r\n\x05\x05\x03\x02#\x01\x12\ - \x04\xcb\x02\x02\x10\n\r\n\x05\x05\x03\x02#\x02\x12\x04\xcb\x02\x13\x15\ - \n&\n\x04\x05\x03\x02$\x12\x04\xce\x02\x02\x0b\x1a\x18\x20Used\x20for\ - \x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02$\x01\x12\x04\xce\x02\x02\ - \x05\n\r\n\x05\x05\x03\x02$\x02\x12\x04\xce\x02\x08\n\n/\n\x04\x05\x03\ - \x02%\x12\x04\xd0\x02\x02\x14\x1a!\x20Attribute\x20name\x20in\x20XML-lik\ - e\x20tags\n\n\r\n\x05\x05\x03\x02%\x01\x12\x04\xd0\x02\x02\x0e\n\r\n\x05\ - \x05\x03\x02%\x02\x12\x04\xd0\x02\x11\x13\n,\n\x04\x05\x03\x02&\x12\x04\ - \xd2\x02\x02\x14\x1a\x1e\x20Delimiters\x20for\x20XML-like\x20tags\n\n\r\ - \n\x05\x05\x03\x02&\x01\x12\x04\xd2\x02\x02\x0e\n\r\n\x05\x05\x03\x02&\ - \x02\x12\x04\xd2\x02\x11\x13\n\xf9\x01\n\x02\x04\t\x12\x06\xda\x02\0\x81\ - \x03\x01\x1a\xea\x01\x20Occurrence\x20associates\x20a\x20source\x20posit\ - ion\x20with\x20a\x20symbol\x20and/or\x20highlighting\n\x20information.\n\ - \n\x20If\x20possible,\x20indexers\x20should\x20try\x20to\x20bundle\x20lo\ - gically\x20related\x20information\n\x20across\x20occurrences\x20into\x20\ - a\x20single\x20occurrence\x20to\x20reduce\x20payload\x20sizes.\n\n\x0b\n\ - \x03\x04\t\x01\x12\x04\xda\x02\x08\x12\n\xc7\x07\n\x04\x04\t\x02\0\x12\ - \x04\xed\x02\x02\x1b\x1a\xb8\x07\x20Source\x20position\x20of\x20this\x20\ - occurrence.\x20Must\x20be\x20exactly\x20three\x20or\x20four\n\x20element\ - s:\n\n\x20-\x20Four\x20elements:\x20`[startLine,\x20startCharacter,\x20e\ - ndLine,\x20endCharacter]`\n\x20-\x20Three\x20elements:\x20`[startLine,\ - \x20startCharacter,\x20endCharacter]`.\x20The\x20end\x20line\n\x20\x20\ - \x20is\x20inferred\x20to\x20have\x20the\x20same\x20value\x20as\x20the\ - \x20start\x20line.\n\n\x20Line\x20numbers\x20and\x20characters\x20are\ - \x20always\x200-based.\x20Make\x20sure\x20to\x20increment\x20the\n\x20li\ - ne/character\x20values\x20before\x20displaying\x20them\x20in\x20an\x20ed\ - itor-like\x20UI\x20because\n\x20editors\x20conventionally\x20use\x201-ba\ - sed\x20numbers.\n\n\x20Historical\x20note:\x20the\x20original\x20draft\ - \x20of\x20this\x20schema\x20had\x20a\x20`Range`\x20message\n\x20type\x20\ - with\x20`start`\x20and\x20`end`\x20fields\x20of\x20type\x20`Position`,\ - \x20mirroring\x20LSP.\n\x20Benchmarks\x20revealed\x20that\x20this\x20enc\ - oding\x20was\x20inefficient\x20and\x20that\x20we\x20could\n\x20reduce\ - \x20the\x20total\x20payload\x20size\x20of\x20an\x20index\x20by\x2050%\ - \x20by\x20using\x20`repeated\x20int32`\n\x20instead.\x20\x20The\x20`repe\ - ated\x20int32`\x20encoding\x20is\x20admittedly\x20more\x20embarrassing\ - \x20to\n\x20work\x20with\x20in\x20some\x20programming\x20languages\x20bu\ - t\x20we\x20hope\x20the\x20performance\n\x20improvements\x20make\x20up\ - \x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\xed\x02\x02\n\n\r\n\ - \x05\x04\t\x02\0\x05\x12\x04\xed\x02\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\ - \x12\x04\xed\x02\x11\x16\n\r\n\x05\x04\t\x02\0\x03\x12\x04\xed\x02\x19\ - \x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\xf0\x02\x02\x14\x1a|\x20(opti\ - onal)\x20The\x20symbol\x20that\x20appears\x20at\x20this\x20position.\x20\ - See\n\x20`SymbolInformation.symbol`\x20for\x20how\x20to\x20format\x20sym\ - bols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\x01\x05\x12\x04\xf0\x02\x02\ - \x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\xf0\x02\t\x0f\n\r\n\x05\x04\t\ - \x02\x01\x03\x12\x04\xf0\x02\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\ - \x04\xf3\x02\x02\x19\x1a\x88\x01\x20(optional)\x20Bitset\x20containing\ - \x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\x20See\x20`SymbolRole`'\ - s\x20documentation\x20for\x20how\x20to\x20read\x20and\x20write\x20this\ - \x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\xf3\x02\x02\x07\n\r\n\ - \x05\x04\t\x02\x02\x01\x12\x04\xf3\x02\x08\x14\n\r\n\x05\x04\t\x02\x02\ - \x03\x12\x04\xf3\x02\x17\x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\xfc\ - \x02\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-formatted\x20documenta\ - tion\x20for\x20this\x20specific\x20range.\x20If\n\x20empty,\x20the\x20`S\ - ymbol.documentation`\x20field\x20is\x20used\x20instead.\x20One\x20exampl\ - e\n\x20where\x20this\x20field\x20might\x20be\x20useful\x20is\x20when\x20\ - the\x20symbol\x20represents\x20a\x20generic\n\x20function\x20(with\x20ab\ - stract\x20type\x20parameters\x20such\x20as\x20`List`)\x20and\x20at\ - \x20this\n\x20occurrence\x20we\x20know\x20the\x20exact\x20values\x20(suc\ - h\x20as\x20`List`).\n\n\x20This\x20field\x20can\x20also\x20be\ - \x20used\x20for\x20dynamically\x20or\x20gradually\x20typed\x20languages,\ - \n\x20which\x20commonly\x20allow\x20for\x20type-changing\x20assignment.\ - \n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\xfc\x02\x02\n\n\r\n\x05\x04\t\x02\ - \x03\x05\x12\x04\xfc\x02\x0b\x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\xfc\ - \x02\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\xfc\x02+,\nX\n\x04\x04\t\ - \x02\x04\x12\x04\xfe\x02\x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\ - \x20highlighting\x20class\x20should\x20be\x20used\x20for\x20this\x20rang\ - e?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\xfe\x02\x02\x0c\n\r\n\x05\x04\t\ - \x02\x04\x01\x12\x04\xfe\x02\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\ - \xfe\x02\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\x80\x03\x02&\x1aI\x20(op\ - tional)\x20Diagnostics\x20that\x20have\x20been\x20reported\x20for\x20thi\ - s\x20specific\x20range.\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\x80\x03\ - \x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\x80\x03\x0b\x15\n\r\n\x05\x04\ - \t\x02\x05\x01\x12\x04\x80\x03\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\ - \x80\x03$%\nw\n\x02\x04\n\x12\x06\x85\x03\0\x90\x03\x01\x1ai\x20Represen\ - ts\x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20\ - warning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\ - \n\n\x0b\n\x03\x04\n\x01\x12\x04\x85\x03\x08\x12\nW\n\x04\x04\n\x02\0\ - \x12\x04\x87\x03\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20r\ - eported\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20hint?\n\n\r\ - \n\x05\x04\n\x02\0\x06\x12\x04\x87\x03\x02\n\n\r\n\x05\x04\n\x02\0\x01\ - \x12\x04\x87\x03\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\x87\x03\x16\ - \x17\n]\n\x04\x04\n\x02\x01\x12\x04\x89\x03\x02\x12\x1aO\x20(optional)\ - \x20Code\x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\x20in\ - \x20the\x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\x89\ - \x03\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\x89\x03\t\r\n\r\n\x05\ - \x04\n\x02\x01\x03\x12\x04\x89\x03\x10\x11\n+\n\x04\x04\n\x02\x02\x12\ - \x04\x8b\x03\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\n\n\ - \r\n\x05\x04\n\x02\x02\x05\x12\x04\x8b\x03\x02\x08\n\r\n\x05\x04\n\x02\ - \x02\x01\x12\x04\x8b\x03\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\x8b\ - \x03\x13\x14\n~\n\x04\x04\n\x02\x03\x12\x04\x8e\x03\x02\x14\x1ap\x20(opt\ - ional)\x20Human-readable\x20string\x20describing\x20the\x20source\x20of\ - \x20this\x20diagnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\x20lin\ - t'.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\x8e\x03\x02\x08\n\r\n\x05\x04\ - \n\x02\x03\x01\x12\x04\x8e\x03\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\ - \x8e\x03\x12\x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\x8f\x03\x02\"\n\r\n\ - \x05\x04\n\x02\x04\x04\x12\x04\x8f\x03\x02\n\n\r\n\x05\x04\n\x02\x04\x06\ - \x12\x04\x8f\x03\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\x8f\x03\x19\ - \x1d\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\x8f\x03\x20!\n\x0c\n\x02\x05\ - \x04\x12\x06\x92\x03\0\x98\x03\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\x92\ - \x03\x05\r\n\x0c\n\x04\x05\x04\x02\0\x12\x04\x93\x03\x02\x1a\n\r\n\x05\ - \x05\x04\x02\0\x01\x12\x04\x93\x03\x02\x15\n\r\n\x05\x05\x04\x02\0\x02\ - \x12\x04\x93\x03\x18\x19\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\x94\x03\x02\ - \x0c\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\x94\x03\x02\x07\n\r\n\x05\x05\ - \x04\x02\x01\x02\x12\x04\x94\x03\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\x12\ - \x04\x95\x03\x02\x0e\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x95\x03\x02\t\ - \n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\x95\x03\x0c\r\n\x0c\n\x04\x05\x04\ - \x02\x03\x12\x04\x96\x03\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\ - \x96\x03\x02\r\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\x96\x03\x10\x11\n\ - \x0c\n\x04\x05\x04\x02\x04\x12\x04\x97\x03\x02\x0b\n\r\n\x05\x05\x04\x02\ - \x04\x01\x12\x04\x97\x03\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\ - \x97\x03\t\n\n\x0c\n\x02\x05\x05\x12\x06\x9a\x03\0\x9e\x03\x01\n\x0b\n\ - \x03\x05\x05\x01\x12\x04\x9a\x03\x05\x12\n\x0c\n\x04\x05\x05\x02\0\x12\ - \x04\x9b\x03\x02\x1f\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\x9b\x03\x02\x1a\ - \n\r\n\x05\x05\x05\x02\0\x02\x12\x04\x9b\x03\x1d\x1e\n\x0c\n\x04\x05\x05\ - \x02\x01\x12\x04\x9c\x03\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\x04\ - \x9c\x03\x02\r\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\x9c\x03\x10\x11\n\ - \x0c\n\x04\x05\x05\x02\x02\x12\x04\x9d\x03\x02\x11\n\r\n\x05\x05\x05\x02\ - \x02\x01\x12\x04\x9d\x03\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\x04\ - \x9d\x03\x0f\x10\n\xd6\x03\n\x02\x05\x06\x12\x06\xa6\x03\0\x8c\x04\x01\ - \x1a\xc7\x03\x20Language\x20standardises\x20names\x20of\x20common\x20pro\ - gramming\x20languages\x20that\x20can\x20be\x20used\n\x20for\x20the\x20`D\ - ocument.language`\x20field.\x20The\x20primary\x20purpose\x20of\x20this\ - \x20enum\x20is\x20to\n\x20prevent\x20a\x20situation\x20where\x20we\x20ha\ - ve\x20a\x20single\x20programming\x20language\x20ends\x20up\x20with\n\x20\ - multiple\x20string\x20representations.\x20For\x20example,\x20the\x20C++\ - \x20language\x20uses\x20the\x20name\n\x20\"CPlusPlus\"\x20in\x20this\x20\ - enum\x20and\x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20incompa\ - tible.\n\x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\x20add\ - \x20missing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x06\x01\x12\ - \x04\xa6\x03\x05\r\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xa7\x03\x02\x1a\n\r\ - \n\x05\x05\x06\x02\0\x01\x12\x04\xa7\x03\x02\x15\n\r\n\x05\x05\x06\x02\0\ - \x02\x12\x04\xa7\x03\x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\x04\xa8\x03\ - \x02\x0c\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xa8\x03\x02\x06\n\r\n\x05\ - \x05\x06\x02\x01\x02\x12\x04\xa8\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x02\ - \x12\x04\xa9\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\x04\xa9\x03\ - \x02\x05\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xa9\x03\x08\n\n\x0c\n\x04\ - \x05\x06\x02\x03\x12\x04\xaa\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x03\x01\ - \x12\x04\xaa\x03\x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\x04\xaa\x03\ - \x08\n\n\x0c\n\x04\x05\x06\x02\x04\x12\x04\xab\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02\x04\x01\x12\x04\xab\x03\x02\x06\n\r\n\x05\x05\x06\x02\x04\x02\ - \x12\x04\xab\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\xac\x03\x02\ - \x10\n\r\n\x05\x05\x06\x02\x05\x01\x12\x04\xac\x03\x02\n\n\r\n\x05\x05\ - \x06\x02\x05\x02\x12\x04\xac\x03\r\x0f\n\x0c\n\x04\x05\x06\x02\x06\x12\ - \x04\xad\x03\x02\x10\n\r\n\x05\x05\x06\x02\x06\x01\x12\x04\xad\x03\x02\n\ - \n\r\n\x05\x05\x06\x02\x06\x02\x12\x04\xad\x03\r\x0f\n\x0c\n\x04\x05\x06\ - \x02\x07\x12\x04\xae\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x07\x01\x12\x04\ - \xae\x03\x02\x05\n\r\n\x05\x05\x06\x02\x07\x02\x12\x04\xae\x03\x08\n\n\ - \x0c\n\x04\x05\x06\x02\x08\x12\x04\xaf\x03\x02\x0b\n\r\n\x05\x05\x06\x02\ - \x08\x01\x12\x04\xaf\x03\x02\x05\n\r\n\x05\x05\x06\x02\x08\x02\x12\x04\ - \xaf\x03\x08\n\n\x0c\n\x04\x05\x06\x02\t\x12\x04\xb0\x03\x02\x0e\n\r\n\ - \x05\x05\x06\x02\t\x01\x12\x04\xb0\x03\x02\x08\n\r\n\x05\x05\x06\x02\t\ - \x02\x12\x04\xb0\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\xb1\x03\x02\ - \t\n\r\n\x05\x05\x06\x02\n\x01\x12\x04\xb1\x03\x02\x03\n\r\n\x05\x05\x06\ - \x02\n\x02\x12\x04\xb1\x03\x06\x08\n\x0c\n\x04\x05\x06\x02\x0b\x12\x04\ - \xb2\x03\x02\r\n\r\n\x05\x05\x06\x02\x0b\x01\x12\x04\xb2\x03\x02\x07\n\r\ - \n\x05\x05\x06\x02\x0b\x02\x12\x04\xb2\x03\n\x0c\nH\n\x04\x05\x06\x02\ - \x0c\x12\x04\xb3\x03\x02\x0b\":\x20C++\x20(the\x20name\x20\"CPP\"\x20was\ - \x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\x05\x06\x02\ - \x0c\x01\x12\x04\xb3\x03\x02\x05\n\r\n\x05\x05\x06\x02\x0c\x02\x12\x04\ - \xb3\x03\x08\n\n\x0c\n\x04\x05\x06\x02\r\x12\x04\xb4\x03\x02\x0b\n\r\n\ - \x05\x05\x06\x02\r\x01\x12\x04\xb4\x03\x02\x05\n\r\n\x05\x05\x06\x02\r\ - \x02\x12\x04\xb4\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x0e\x12\x04\xb5\x03\ - \x02\r\n\r\n\x05\x05\x06\x02\x0e\x01\x12\x04\xb5\x03\x02\x08\n\r\n\x05\ - \x05\x06\x02\x0e\x02\x12\x04\xb5\x03\x0b\x0c\n\x0c\n\x04\x05\x06\x02\x0f\ - \x12\x04\xb6\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x0f\x01\x12\x04\xb6\x03\ - \x02\t\n\r\n\x05\x05\x06\x02\x0f\x02\x12\x04\xb6\x03\x0c\r\n\x0c\n\x04\ - \x05\x06\x02\x10\x12\x04\xb7\x03\x02\x14\n\r\n\x05\x05\x06\x02\x10\x01\ - \x12\x04\xb7\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x10\x02\x12\x04\xb7\x03\ - \x11\x13\n\x0c\n\x04\x05\x06\x02\x11\x12\x04\xb8\x03\x02\x11\n\r\n\x05\ - \x05\x06\x02\x11\x01\x12\x04\xb8\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x11\ - \x02\x12\x04\xb8\x03\x0f\x10\n\x0c\n\x04\x05\x06\x02\x12\x12\x04\xb9\x03\ - \x02\x0b\n\r\n\x05\x05\x06\x02\x12\x01\x12\x04\xb9\x03\x02\x05\n\r\n\x05\ - \x05\x06\x02\x12\x02\x12\x04\xb9\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x13\ - \x12\x04\xba\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x13\x01\x12\x04\xba\x03\ - \x02\x06\n\r\n\x05\x05\x06\x02\x13\x02\x12\x04\xba\x03\t\n\n\x0c\n\x04\ - \x05\x06\x02\x14\x12\x04\xbb\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x14\x01\ - \x12\x04\xbb\x03\x02\x08\n\r\n\x05\x05\x06\x02\x14\x02\x12\x04\xbb\x03\ - \x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\x04\xbc\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02\x15\x01\x12\x04\xbc\x03\x02\x06\n\r\n\x05\x05\x06\x02\x15\x02\ - \x12\x04\xbc\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x16\x12\x04\xbd\x03\x02\ - \x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\x04\xbd\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02\x16\x02\x12\x04\xbd\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x17\x12\ - \x04\xbe\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x17\x01\x12\x04\xbe\x03\x02\ - \x08\n\r\n\x05\x05\x06\x02\x17\x02\x12\x04\xbe\x03\x0b\r\n\x0c\n\x04\x05\ - \x06\x02\x18\x12\x04\xbf\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x18\x01\x12\ - \x04\xbf\x03\x02\x08\n\r\n\x05\x05\x06\x02\x18\x02\x12\x04\xbf\x03\x0b\r\ - \n\x0c\n\x04\x05\x06\x02\x19\x12\x04\xc0\x03\x02\x0e\n\r\n\x05\x05\x06\ - \x02\x19\x01\x12\x04\xc0\x03\x02\x08\n\r\n\x05\x05\x06\x02\x19\x02\x12\ - \x04\xc0\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1a\x12\x04\xc1\x03\x02\x0e\n\ - \r\n\x05\x05\x06\x02\x1a\x01\x12\x04\xc1\x03\x02\x08\n\r\n\x05\x05\x06\ - \x02\x1a\x02\x12\x04\xc1\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1b\x12\x04\ - \xc2\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1b\x01\x12\x04\xc2\x03\x02\x06\n\ - \r\n\x05\x05\x06\x02\x1b\x02\x12\x04\xc2\x03\t\x0b\n\x0c\n\x04\x05\x06\ - \x02\x1c\x12\x04\xc3\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1c\x01\x12\x04\ - \xc3\x03\x02\x06\n\r\n\x05\x05\x06\x02\x1c\x02\x12\x04\xc3\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x02\x1d\x12\x04\xc4\x03\x02\x0f\n\r\n\x05\x05\x06\x02\ - \x1d\x01\x12\x04\xc4\x03\x02\t\n\r\n\x05\x05\x06\x02\x1d\x02\x12\x04\xc4\ - \x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02\x1e\x12\x04\xc5\x03\x02\x12\n\r\n\ - \x05\x05\x06\x02\x1e\x01\x12\x04\xc5\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ - \x1e\x02\x12\x04\xc5\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x1f\x12\x04\xc6\ - \x03\x02\x12\n\r\n\x05\x05\x06\x02\x1f\x01\x12\x04\xc6\x03\x02\x0c\n\r\n\ - \x05\x05\x06\x02\x1f\x02\x12\x04\xc6\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\ - \x20\x12\x04\xc7\x03\x02\x12\n\r\n\x05\x05\x06\x02\x20\x01\x12\x04\xc7\ - \x03\x02\x0c\n\r\n\x05\x05\x06\x02\x20\x02\x12\x04\xc7\x03\x0f\x11\n\x0c\ - \n\x04\x05\x06\x02!\x12\x04\xc8\x03\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\ - \x04\xc8\x03\x02\x04\n\r\n\x05\x05\x06\x02!\x02\x12\x04\xc8\x03\x07\t\n\ - \x0c\n\x04\x05\x06\x02\"\x12\x04\xc9\x03\x02\r\n\r\n\x05\x05\x06\x02\"\ - \x01\x12\x04\xc9\x03\x02\x08\n\r\n\x05\x05\x06\x02\"\x02\x12\x04\xc9\x03\ - \x0b\x0c\n\x0c\n\x04\x05\x06\x02#\x12\x04\xca\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02#\x01\x12\x04\xca\x03\x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\ - \xca\x03\t\x0b\n\x0c\n\x04\x05\x06\x02$\x12\x04\xcb\x03\x02\x0c\n\r\n\ - \x05\x05\x06\x02$\x01\x12\x04\xcb\x03\x02\x06\n\r\n\x05\x05\x06\x02$\x02\ - \x12\x04\xcb\x03\t\x0b\n\x0c\n\x04\x05\x06\x02%\x12\x04\xcc\x03\x02\x12\ - \n\r\n\x05\x05\x06\x02%\x01\x12\x04\xcc\x03\x02\x0c\n\r\n\x05\x05\x06\ - \x02%\x02\x12\x04\xcc\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\xcd\ - \x03\x02\x0f\n\r\n\x05\x05\x06\x02&\x01\x12\x04\xcd\x03\x02\t\n\r\n\x05\ - \x05\x06\x02&\x02\x12\x04\xcd\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\ - \x04\xce\x03\x02\r\n\r\n\x05\x05\x06\x02'\x01\x12\x04\xce\x03\x02\x07\n\ - \r\n\x05\x05\x06\x02'\x02\x12\x04\xce\x03\n\x0c\n\x0c\n\x04\x05\x06\x02(\ - \x12\x04\xcf\x03\x02\x0b\n\r\n\x05\x05\x06\x02(\x01\x12\x04\xcf\x03\x02\ - \x05\n\r\n\x05\x05\x06\x02(\x02\x12\x04\xcf\x03\x08\n\n\x0c\n\x04\x05\ - \x06\x02)\x12\x04\xd0\x03\x02\t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\xd0\ - \x03\x02\x03\n\r\n\x05\x05\x06\x02)\x02\x12\x04\xd0\x03\x06\x08\n\x0c\n\ - \x04\x05\x06\x02*\x12\x04\xd1\x03\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\ - \x04\xd1\x03\x02\x06\n\r\n\x05\x05\x06\x02*\x02\x12\x04\xd1\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x02+\x12\x04\xd2\x03\x02\x0b\n\r\n\x05\x05\x06\x02+\ - \x01\x12\x04\xd2\x03\x02\x06\n\r\n\x05\x05\x06\x02+\x02\x12\x04\xd2\x03\ - \t\n\n\x0c\n\x04\x05\x06\x02,\x12\x04\xd3\x03\x02\x12\n\r\n\x05\x05\x06\ - \x02,\x01\x12\x04\xd3\x03\x02\x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\xd3\ - \x03\x0f\x11\n\x0c\n\x04\x05\x06\x02-\x12\x04\xd4\x03\x02\x17\n\r\n\x05\ - \x05\x06\x02-\x01\x12\x04\xd4\x03\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\ - \x04\xd4\x03\x14\x16\n\x0c\n\x04\x05\x06\x02.\x12\x04\xd5\x03\x02\x0f\n\ - \r\n\x05\x05\x06\x02.\x01\x12\x04\xd5\x03\x02\t\n\r\n\x05\x05\x06\x02.\ - \x02\x12\x04\xd5\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02/\x12\x04\xd6\x03\ - \x02\x0e\n\r\n\x05\x05\x06\x02/\x01\x12\x04\xd6\x03\x02\x07\n\r\n\x05\ - \x05\x06\x02/\x02\x12\x04\xd6\x03\x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\ - \xd7\x03\x02\r\n\r\n\x05\x05\x06\x020\x01\x12\x04\xd7\x03\x02\x08\n\r\n\ - \x05\x05\x06\x020\x02\x12\x04\xd7\x03\x0b\x0c\n\x0c\n\x04\x05\x06\x021\ - \x12\x04\xd8\x03\x02\r\n\r\n\x05\x05\x06\x021\x01\x12\x04\xd8\x03\x02\ - \x07\n\r\n\x05\x05\x06\x021\x02\x12\x04\xd8\x03\n\x0c\n\x0c\n\x04\x05\ - \x06\x022\x12\x04\xd9\x03\x02\x0c\n\r\n\x05\x05\x06\x022\x01\x12\x04\xd9\ - \x03\x02\x06\n\r\n\x05\x05\x06\x022\x02\x12\x04\xd9\x03\t\x0b\n\x0c\n\ - \x04\x05\x06\x023\x12\x04\xda\x03\x02\x0c\n\r\n\x05\x05\x06\x023\x01\x12\ - \x04\xda\x03\x02\x06\n\r\n\x05\x05\x06\x023\x02\x12\x04\xda\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x024\x12\x04\xdb\x03\x02\x0b\n\r\n\x05\x05\x06\x024\ - \x01\x12\x04\xdb\x03\x02\x05\n\r\n\x05\x05\x06\x024\x02\x12\x04\xdb\x03\ - \x08\n\n\x0c\n\x04\x05\x06\x025\x12\x04\xdc\x03\x02\x10\n\r\n\x05\x05\ - \x06\x025\x01\x12\x04\xdc\x03\x02\n\n\r\n\x05\x05\x06\x025\x02\x12\x04\ - \xdc\x03\r\x0f\n\x0c\n\x04\x05\x06\x026\x12\x04\xdd\x03\x02\x10\n\r\n\ - \x05\x05\x06\x026\x01\x12\x04\xdd\x03\x02\n\n\r\n\x05\x05\x06\x026\x02\ - \x12\x04\xdd\x03\r\x0f\n\x0c\n\x04\x05\x06\x027\x12\x04\xde\x03\x02\x0e\ - \n\r\n\x05\x05\x06\x027\x01\x12\x04\xde\x03\x02\x08\n\r\n\x05\x05\x06\ - \x027\x02\x12\x04\xde\x03\x0b\r\n\x0c\n\x04\x05\x06\x028\x12\x04\xdf\x03\ - \x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\xdf\x03\x02\x05\n\r\n\x05\ - \x05\x06\x028\x02\x12\x04\xdf\x03\x08\n\n\x0c\n\x04\x05\x06\x029\x12\x04\ - \xe0\x03\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\x04\xe0\x03\x02\x07\n\r\n\ - \x05\x05\x06\x029\x02\x12\x04\xe0\x03\n\x0c\n\x0c\n\x04\x05\x06\x02:\x12\ - \x04\xe1\x03\x02\x13\n\r\n\x05\x05\x06\x02:\x01\x12\x04\xe1\x03\x02\r\n\ - \r\n\x05\x05\x06\x02:\x02\x12\x04\xe1\x03\x10\x12\n\x0c\n\x04\x05\x06\ - \x02;\x12\x04\xe2\x03\x02\x15\n\r\n\x05\x05\x06\x02;\x01\x12\x04\xe2\x03\ - \x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\xe2\x03\x12\x14\n\x0c\n\x04\ - \x05\x06\x02<\x12\x04\xe3\x03\x02\x0b\n\r\n\x05\x05\x06\x02<\x01\x12\x04\ - \xe3\x03\x02\x05\n\r\n\x05\x05\x06\x02<\x02\x12\x04\xe3\x03\x08\n\n\x0c\ - \n\x04\x05\x06\x02=\x12\x04\xe4\x03\x02\r\n\r\n\x05\x05\x06\x02=\x01\x12\ - \x04\xe4\x03\x02\x07\n\r\n\x05\x05\x06\x02=\x02\x12\x04\xe4\x03\n\x0c\n\ - \x0c\n\x04\x05\x06\x02>\x12\x04\xe5\x03\x02\x0c\n\r\n\x05\x05\x06\x02>\ - \x01\x12\x04\xe5\x03\x02\x06\n\r\n\x05\x05\x06\x02>\x02\x12\x04\xe5\x03\ - \t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xe6\x03\x02\x12\n\r\n\x05\x05\ - \x06\x02?\x01\x12\x04\xe6\x03\x02\x0c\n\r\n\x05\x05\x06\x02?\x02\x12\x04\ - \xe6\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02@\x12\x04\xe7\x03\x02\x0e\n\r\n\ - \x05\x05\x06\x02@\x01\x12\x04\xe7\x03\x02\x08\n\r\n\x05\x05\x06\x02@\x02\ - \x12\x04\xe7\x03\x0b\r\n\x0c\n\x04\x05\x06\x02A\x12\x04\xe8\x03\x02\x0e\ - \n\r\n\x05\x05\x06\x02A\x01\x12\x04\xe8\x03\x02\x08\n\r\n\x05\x05\x06\ - \x02A\x02\x12\x04\xe8\x03\x0b\r\n\x0c\n\x04\x05\x06\x02B\x12\x04\xe9\x03\ - \x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\x04\xe9\x03\x02\x03\n\r\n\x05\x05\ - \x06\x02B\x02\x12\x04\xe9\x03\x06\x08\n\x0c\n\x04\x05\x06\x02C\x12\x04\ - \xea\x03\x02\x0e\n\r\n\x05\x05\x06\x02C\x01\x12\x04\xea\x03\x02\x08\n\r\ - \n\x05\x05\x06\x02C\x02\x12\x04\xea\x03\x0b\r\n\x0c\n\x04\x05\x06\x02D\ - \x12\x04\xeb\x03\x02\x0c\n\r\n\x05\x05\x06\x02D\x01\x12\x04\xeb\x03\x02\ - \x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\xeb\x03\t\x0b\n\x0c\n\x04\x05\ - \x06\x02E\x12\x04\xec\x03\x02\r\n\r\n\x05\x05\x06\x02E\x01\x12\x04\xec\ - \x03\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\x04\xec\x03\n\x0c\n\x0c\n\ - \x04\x05\x06\x02F\x12\x04\xed\x03\x02\x0c\n\r\n\x05\x05\x06\x02F\x01\x12\ - \x04\xed\x03\x02\x06\n\r\n\x05\x05\x06\x02F\x02\x12\x04\xed\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x02G\x12\x04\xee\x03\x02\x0c\n\r\n\x05\x05\x06\x02G\ - \x01\x12\x04\xee\x03\x02\x06\n\r\n\x05\x05\x06\x02G\x02\x12\x04\xee\x03\ - \t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\xef\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02H\x01\x12\x04\xef\x03\x02\x06\n\r\n\x05\x05\x06\x02H\x02\x12\x04\ - \xef\x03\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\x04\xf0\x03\x02\x0b\n\r\n\ - \x05\x05\x06\x02I\x01\x12\x04\xf0\x03\x02\x05\n\r\n\x05\x05\x06\x02I\x02\ - \x12\x04\xf0\x03\x08\n\n\x0c\n\x04\x05\x06\x02J\x12\x04\xf1\x03\x02\x0c\ - \n\r\n\x05\x05\x06\x02J\x01\x12\x04\xf1\x03\x02\x06\n\r\n\x05\x05\x06\ - \x02J\x02\x12\x04\xf1\x03\t\x0b\n\x0c\n\x04\x05\x06\x02K\x12\x04\xf2\x03\ - \x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\xf2\x03\x02\x05\n\r\n\x05\ - \x05\x06\x02K\x02\x12\x04\xf2\x03\x08\n\n\x0c\n\x04\x05\x06\x02L\x12\x04\ - \xf3\x03\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\x12\x04\xf3\x03\x02\x05\n\r\ - \n\x05\x05\x06\x02L\x02\x12\x04\xf3\x03\x08\n\n\x0c\n\x04\x05\x06\x02M\ - \x12\x04\xf4\x03\x02\x0c\n\r\n\x05\x05\x06\x02M\x01\x12\x04\xf4\x03\x02\ - \x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\xf4\x03\t\x0b\n\x0c\n\x04\x05\ - \x06\x02N\x12\x04\xf5\x03\x02\x0c\n\r\n\x05\x05\x06\x02N\x01\x12\x04\xf5\ - \x03\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\x04\xf5\x03\n\x0b\n\x0c\n\ - \x04\x05\x06\x02O\x12\x04\xf6\x03\x02\x0e\n\r\n\x05\x05\x06\x02O\x01\x12\ - \x04\xf6\x03\x02\x08\n\r\n\x05\x05\x06\x02O\x02\x12\x04\xf6\x03\x0b\r\n\ - \x14\n\x04\x05\x06\x02P\x12\x04\xf7\x03\x02\x13\"\x06\x20Bash\n\n\r\n\ - \x05\x05\x06\x02P\x01\x12\x04\xf7\x03\x02\r\n\r\n\x05\x05\x06\x02P\x02\ - \x12\x04\xf7\x03\x10\x12\n\x0c\n\x04\x05\x06\x02Q\x12\x04\xf8\x03\x02\ - \x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\xf8\x03\x02\t\n\r\n\x05\x05\x06\ - \x02Q\x02\x12\x04\xf8\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02R\x12\x04\xf9\ - \x03\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\xf9\x03\x02\x07\n\r\n\ - \x05\x05\x06\x02R\x02\x12\x04\xf9\x03\n\x0b\n\x0c\n\x04\x05\x06\x02S\x12\ - \x04\xfa\x03\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\x12\x04\xfa\x03\x02\x06\ - \n\r\n\x05\x05\x06\x02S\x02\x12\x04\xfa\x03\t\x0b\n\x0c\n\x04\x05\x06\ - \x02T\x12\x04\xfb\x03\x02\x0b\n\r\n\x05\x05\x06\x02T\x01\x12\x04\xfb\x03\ - \x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\xfb\x03\x08\n\n\x0c\n\x04\ - \x05\x06\x02U\x12\x04\xfc\x03\x02\x12\n\r\n\x05\x05\x06\x02U\x01\x12\x04\ - \xfc\x03\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\x04\xfc\x03\x0f\x11\n\ - \x0c\n\x04\x05\x06\x02V\x12\x04\xfd\x03\x02\x17\n\r\n\x05\x05\x06\x02V\ - \x01\x12\x04\xfd\x03\x02\x11\n\r\n\x05\x05\x06\x02V\x02\x12\x04\xfd\x03\ - \x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\xfe\x03\x02\x13\n\r\n\x05\x05\ - \x06\x02W\x01\x12\x04\xfe\x03\x02\r\n\r\n\x05\x05\x06\x02W\x02\x12\x04\ - \xfe\x03\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\xff\x03\x02\x0b\n\r\n\ - \x05\x05\x06\x02X\x01\x12\x04\xff\x03\x02\x05\n\r\n\x05\x05\x06\x02X\x02\ - \x12\x04\xff\x03\x08\n\n\x0c\n\x04\x05\x06\x02Y\x12\x04\x80\x04\x02\x0f\ - \n\r\n\x05\x05\x06\x02Y\x01\x12\x04\x80\x04\x02\t\n\r\n\x05\x05\x06\x02Y\ - \x02\x12\x04\x80\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02Z\x12\x04\x81\x04\ - \x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\x81\x04\x02\x05\n\r\n\x05\ - \x05\x06\x02Z\x02\x12\x04\x81\x04\x08\n\n\x0c\n\x04\x05\x06\x02[\x12\x04\ - \x82\x04\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\x04\x82\x04\x02\x05\n\r\ - \n\x05\x05\x06\x02[\x02\x12\x04\x82\x04\x08\n\n\x0c\n\x04\x05\x06\x02\\\ - \x12\x04\x83\x04\x02\x0c\n\r\n\x05\x05\x06\x02\\\x01\x12\x04\x83\x04\x02\ - \x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\x83\x04\t\x0b\n\x92\x03\n\x04\ - \x05\x06\x02]\x12\x04\x84\x04\x02\x0b\"\x83\x03\x20NextLanguage\x20=\x20\ + ponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages,\n\ + \x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\x20and\x20Ja\ + vaScript.\n\n\r\n\x05\x05\x03\x02\x0f\x01\x12\x04\xaf\x02\x02\x15\n\r\n\ + \x05\x05\x03\x02\x0f\x02\x12\x04\xaf\x02\x18\x1a\n\x0c\n\x04\x05\x03\x02\ + \x10\x12\x04\xb0\x02\x02*\n\r\n\x05\x05\x03\x02\x10\x01\x12\x04\xb0\x02\ + \x02\x12\n\r\n\x05\x05\x03\x02\x10\x02\x12\x04\xb0\x02\x15\x17\n\r\n\x05\ + \x05\x03\x02\x10\x03\x12\x04\xb0\x02\x18)\n\x0e\n\x06\x05\x03\x02\x10\ + \x03\x01\x12\x04\xb0\x02\x19(\n4\n\x04\x05\x03\x02\x11\x12\x04\xb3\x02\ + \x02\x1a\x1a&\x20Function\x20references,\x20including\x20calls\n\n\r\n\ + \x05\x05\x03\x02\x11\x01\x12\x04\xb3\x02\x02\x14\n\r\n\x05\x05\x03\x02\ + \x11\x02\x12\x04\xb3\x02\x17\x19\n(\n\x04\x05\x03\x02\x12\x12\x04\xb5\ + \x02\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\r\n\x05\x05\x03\ + \x02\x12\x01\x12\x04\xb5\x02\x02\x1e\n\r\n\x05\x05\x03\x02\x12\x02\x12\ + \x04\xb5\x02!#\n7\n\x04\x05\x03\x02\x13\x12\x04\xb8\x02\x02\x17\x1a)\x20\ + Macro\x20references,\x20including\x20invocations\n\n\r\n\x05\x05\x03\x02\ + \x13\x01\x12\x04\xb8\x02\x02\x11\n\r\n\x05\x05\x03\x02\x13\x02\x12\x04\ + \xb8\x02\x14\x16\n%\n\x04\x05\x03\x02\x14\x12\x04\xba\x02\x02!\x1a\x17\ + \x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x03\x02\x14\x01\x12\x04\ + \xba\x02\x02\x1b\n\r\n\x05\x05\x03\x02\x14\x02\x12\x04\xba\x02\x1e\x20\n\ + !\n\x04\x05\x03\x02\x15\x12\x04\xbd\x02\x02\x16\x1a\x13\x20non-builtin\ + \x20types\n\n\r\n\x05\x05\x03\x02\x15\x01\x12\x04\xbd\x02\x02\x10\n\r\n\ + \x05\x05\x03\x02\x15\x02\x12\x04\xbd\x02\x13\x15\nK\n\x04\x05\x03\x02\ + \x16\x12\x04\xbf\x02\x02\x1d\x1a=\x20builtin\x20types\x20only,\x20such\ + \x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\x20Go\n\n\r\n\x05\ + \x05\x03\x02\x16\x01\x12\x04\xbf\x02\x02\x17\n\r\n\x05\x05\x03\x02\x16\ + \x02\x12\x04\xbf\x02\x1a\x1c\n7\n\x04\x05\x03\x02\x17\x12\x04\xc2\x02\ + \x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__attribute__\n\n\r\ + \n\x05\x05\x03\x02\x17\x01\x12\x04\xc2\x02\x02\x15\n\r\n\x05\x05\x03\x02\ + \x17\x02\x12\x04\xc2\x02\x18\x1a\n\x14\n\x04\x05\x03\x02\x18\x12\x04\xc5\ + \x02\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x03\x02\x18\x01\x12\x04\ + \xc5\x02\x02\r\n\r\n\x05\x05\x03\x02\x18\x02\x12\x04\xc5\x02\x10\x12\n\ + \x18\n\x04\x05\x03\x02\x19\x12\x04\xc7\x02\x02\x15\x1a\n\x20`*`,\x20`+`\ + \n\n\r\n\x05\x05\x03\x02\x19\x01\x12\x04\xc7\x02\x02\x0f\n\r\n\x05\x05\ + \x03\x02\x19\x02\x12\x04\xc7\x02\x12\x14\n\x13\n\x04\x05\x03\x02\x1a\x12\ + \x04\xc9\x02\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x03\x02\x1a\x01\x12\ + \x04\xc9\x02\x02\x0f\n\r\n\x05\x05\x03\x02\x1a\x02\x12\x04\xc9\x02\x12\ + \x14\n\"\n\x04\x05\x03\x02\x1b\x12\x04\xcb\x02\x02\x16\x1a\x14\x20`(`,\ + \x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x03\x02\x1b\x01\x12\x04\xcb\x02\ + \x02\x10\n\r\n\x05\x05\x03\x02\x1b\x02\x12\x04\xcb\x02\x13\x15\n\x18\n\ + \x04\x05\x03\x02\x1c\x12\x04\xcd\x02\x02\x11\x1a\n\x20`|`,\x20`-`\n\n\r\ + \n\x05\x05\x03\x02\x1c\x01\x12\x04\xcd\x02\x02\x0b\n\r\n\x05\x05\x03\x02\ + \x1c\x02\x12\x04\xcd\x02\x0e\x10\n0\n\x04\x05\x03\x02\x1d\x12\x04\xd0\ + \x02\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\x20world!\"\n\n\r\ + \n\x05\x05\x03\x02\x1d\x01\x12\x04\xd0\x02\x02\x0f\n\r\n\x05\x05\x03\x02\ + \x1d\x02\x12\x04\xd0\x02\x12\x14\n-\n\x04\x05\x03\x02\x1e\x12\x04\xd2\ + \x02\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\",\x20\"\\n\"\n\n\ + \r\n\x05\x05\x03\x02\x1e\x01\x12\x04\xd2\x02\x02\x15\n\r\n\x05\x05\x03\ + \x02\x1e\x02\x12\x04\xd2\x02\x18\x1a\n_\n\x04\x05\x03\x02\x1f\x12\x04\ + \xd4\x02\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20special\x20w\ + ords\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20strings\n\n\r\ + \n\x05\x05\x03\x02\x1f\x01\x12\x04\xd4\x02\x02\x16\n\r\n\x05\x05\x03\x02\ + \x1f\x02\x12\x04\xd4\x02\x19\x1b\nG\n\x04\x05\x03\x02\x20\x12\x04\xd6\ + \x02\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"value\"\x20},\ + \x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x03\x02\x20\ + \x01\x12\x04\xd6\x02\x02\x12\n\r\n\x05\x05\x03\x02\x20\x02\x12\x04\xd6\ + \x02\x15\x17\nV\n\x04\x05\x03\x02!\x12\x04\xd8\x02\x02\x18\x1aH\x20'c'\ + \x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\x20string\ + s\x20and\x20characters\n\n\r\n\x05\x05\x03\x02!\x01\x12\x04\xd8\x02\x02\ + \x12\n\r\n\x05\x05\x03\x02!\x02\x12\x04\xd8\x02\x15\x17\n9\n\x04\x05\x03\ + \x02\"\x12\x04\xda\x02\x02\x16\x1a+\x20Literal\x20numbers,\x20both\x20fl\ + oats\x20and\x20integers\n\n\r\n\x05\x05\x03\x02\"\x01\x12\x04\xda\x02\ + \x02\x10\n\r\n\x05\x05\x03\x02\"\x02\x12\x04\xda\x02\x13\x15\n\x1f\n\x04\ + \x05\x03\x02#\x12\x04\xdc\x02\x02\x16\x1a\x11\x20`true`,\x20`false`\n\n\ + \r\n\x05\x05\x03\x02#\x01\x12\x04\xdc\x02\x02\x10\n\r\n\x05\x05\x03\x02#\ + \x02\x12\x04\xdc\x02\x13\x15\n&\n\x04\x05\x03\x02$\x12\x04\xdf\x02\x02\ + \x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02$\ + \x01\x12\x04\xdf\x02\x02\x05\n\r\n\x05\x05\x03\x02$\x02\x12\x04\xdf\x02\ + \x08\n\n/\n\x04\x05\x03\x02%\x12\x04\xe1\x02\x02\x14\x1a!\x20Attribute\ + \x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02%\x01\x12\x04\ + \xe1\x02\x02\x0e\n\r\n\x05\x05\x03\x02%\x02\x12\x04\xe1\x02\x11\x13\n,\n\ + \x04\x05\x03\x02&\x12\x04\xe3\x02\x02\x14\x1a\x1e\x20Delimiters\x20for\ + \x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02&\x01\x12\x04\xe3\x02\x02\ + \x0e\n\r\n\x05\x05\x03\x02&\x02\x12\x04\xe3\x02\x11\x13\n\xf9\x01\n\x02\ + \x04\t\x12\x06\xeb\x02\0\x92\x03\x01\x1a\xea\x01\x20Occurrence\x20associ\ + ates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/or\x20high\ + lighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\x20should\ + \x20try\x20to\x20bundle\x20logically\x20related\x20information\n\x20acro\ + ss\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\x20reduce\ + \x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xeb\x02\x08\x12\n\ + \xc7\x07\n\x04\x04\t\x02\0\x12\x04\xfe\x02\x02\x1b\x1a\xb8\x07\x20Source\ + \x20position\x20of\x20this\x20occurrence.\x20Must\x20be\x20exactly\x20th\ + ree\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20elements:\x20`[star\ + tLine,\x20startCharacter,\x20endLine,\x20endCharacter]`\n\x20-\x20Three\ + \x20elements:\x20`[startLine,\x20startCharacter,\x20endCharacter]`.\x20T\ + he\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\x20have\x20the\x20sa\ + me\x20value\x20as\x20the\x20start\x20line.\n\n\x20Line\x20numbers\x20and\ + \x20characters\x20are\x20always\x200-based.\x20Make\x20sure\x20to\x20inc\ + rement\x20the\n\x20line/character\x20values\x20before\x20displaying\x20t\ + hem\x20in\x20an\x20editor-like\x20UI\x20because\n\x20editors\x20conventi\ + onally\x20use\x201-based\x20numbers.\n\n\x20Historical\x20note:\x20the\ + \x20original\x20draft\x20of\x20this\x20schema\x20had\x20a\x20`Range`\x20\ + message\n\x20type\x20with\x20`start`\x20and\x20`end`\x20fields\x20of\x20\ + type\x20`Position`,\x20mirroring\x20LSP.\n\x20Benchmarks\x20revealed\x20\ + that\x20this\x20encoding\x20was\x20inefficient\x20and\x20that\x20we\x20c\ + ould\n\x20reduce\x20the\x20total\x20payload\x20size\x20of\x20an\x20index\ + \x20by\x2050%\x20by\x20using\x20`repeated\x20int32`\n\x20instead.\x20\ + \x20The\x20`repeated\x20int32`\x20encoding\x20is\x20admittedly\x20more\ + \x20embarrassing\x20to\n\x20work\x20with\x20in\x20some\x20programming\ + \x20languages\x20but\x20we\x20hope\x20the\x20performance\n\x20improvemen\ + ts\x20make\x20up\x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\xfe\ + \x02\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\x04\xfe\x02\x0b\x10\n\r\n\x05\ + \x04\t\x02\0\x01\x12\x04\xfe\x02\x11\x16\n\r\n\x05\x04\t\x02\0\x03\x12\ + \x04\xfe\x02\x19\x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\x81\x03\x02\ + \x14\x1a|\x20(optional)\x20The\x20symbol\x20that\x20appears\x20at\x20thi\ + s\x20position.\x20See\n\x20`SymbolInformation.symbol`\x20for\x20how\x20t\ + o\x20format\x20symbols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\x01\x05\ + \x12\x04\x81\x03\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x81\x03\t\ + \x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x81\x03\x12\x13\n\x97\x01\n\x04\ + \x04\t\x02\x02\x12\x04\x84\x03\x02\x19\x1a\x88\x01\x20(optional)\x20Bits\ + et\x20containing\x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\x20See\ + \x20`SymbolRole`'s\x20documentation\x20for\x20how\x20to\x20read\x20and\ + \x20write\x20this\x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\x84\ + \x03\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\x84\x03\x08\x14\n\r\n\ + \x05\x04\t\x02\x02\x03\x12\x04\x84\x03\x17\x18\n\xf1\x03\n\x04\x04\t\x02\ + \x03\x12\x04\x8d\x03\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-format\ + ted\x20documentation\x20for\x20this\x20specific\x20range.\x20If\n\x20emp\ + ty,\x20the\x20`Symbol.documentation`\x20field\x20is\x20used\x20instead.\ + \x20One\x20example\n\x20where\x20this\x20field\x20might\x20be\x20useful\ + \x20is\x20when\x20the\x20symbol\x20represents\x20a\x20generic\n\x20funct\ + ion\x20(with\x20abstract\x20type\x20parameters\x20such\x20as\x20`List\ + `)\x20and\x20at\x20this\n\x20occurrence\x20we\x20know\x20the\x20exact\ + \x20values\x20(such\x20as\x20`List`).\n\n\x20This\x20field\x20ca\ + n\x20also\x20be\x20used\x20for\x20dynamically\x20or\x20gradually\x20type\ + d\x20languages,\n\x20which\x20commonly\x20allow\x20for\x20type-changing\ + \x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\x8d\x03\x02\n\n\r\ + \n\x05\x04\t\x02\x03\x05\x12\x04\x8d\x03\x0b\x11\n\r\n\x05\x04\t\x02\x03\ + \x01\x12\x04\x8d\x03\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\x8d\x03+,\ + \nX\n\x04\x04\t\x02\x04\x12\x04\x8f\x03\x02\x1d\x1aJ\x20(optional)\x20Wh\ + at\x20syntax\x20highlighting\x20class\x20should\x20be\x20used\x20for\x20\ + this\x20range?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\x8f\x03\x02\x0c\n\r\ + \n\x05\x04\t\x02\x04\x01\x12\x04\x8f\x03\r\x18\n\r\n\x05\x04\t\x02\x04\ + \x03\x12\x04\x8f\x03\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\x91\x03\x02&\ + \x1aI\x20(optional)\x20Diagnostics\x20that\x20have\x20been\x20reported\ + \x20for\x20this\x20specific\x20range.\n\n\r\n\x05\x04\t\x02\x05\x04\x12\ + \x04\x91\x03\x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\x91\x03\x0b\x15\n\ + \r\n\x05\x04\t\x02\x05\x01\x12\x04\x91\x03\x16!\n\r\n\x05\x04\t\x02\x05\ + \x03\x12\x04\x91\x03$%\nw\n\x02\x04\n\x12\x06\x96\x03\0\xa1\x03\x01\x1ai\ + \x20Represents\x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20err\ + or\x20or\x20warning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\ + \x20document.\n\n\x0b\n\x03\x04\n\x01\x12\x04\x96\x03\x08\x12\nW\n\x04\ + \x04\n\x02\0\x12\x04\x98\x03\x02\x18\x1aI\x20Should\x20this\x20diagnosti\ + c\x20be\x20reported\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20\ + hint?\n\n\r\n\x05\x04\n\x02\0\x06\x12\x04\x98\x03\x02\n\n\r\n\x05\x04\n\ + \x02\0\x01\x12\x04\x98\x03\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\x98\ + \x03\x16\x17\n]\n\x04\x04\n\x02\x01\x12\x04\x9a\x03\x02\x12\x1aO\x20(opt\ + ional)\x20Code\x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\ + \x20in\x20the\x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\ + \x04\x9a\x03\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\x9a\x03\t\r\n\r\ + \n\x05\x04\n\x02\x01\x03\x12\x04\x9a\x03\x10\x11\n+\n\x04\x04\n\x02\x02\ + \x12\x04\x9c\x03\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\ + \n\n\r\n\x05\x04\n\x02\x02\x05\x12\x04\x9c\x03\x02\x08\n\r\n\x05\x04\n\ + \x02\x02\x01\x12\x04\x9c\x03\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\ + \x9c\x03\x13\x14\n~\n\x04\x04\n\x02\x03\x12\x04\x9f\x03\x02\x14\x1ap\x20\ + (optional)\x20Human-readable\x20string\x20describing\x20the\x20source\ + \x20of\x20this\x20diagnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\ + \x20lint'.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\x9f\x03\x02\x08\n\r\n\ + \x05\x04\n\x02\x03\x01\x12\x04\x9f\x03\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\ + \x12\x04\x9f\x03\x12\x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xa0\x03\x02\"\ + \n\r\n\x05\x04\n\x02\x04\x04\x12\x04\xa0\x03\x02\n\n\r\n\x05\x04\n\x02\ + \x04\x06\x12\x04\xa0\x03\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xa0\ + \x03\x19\x1d\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xa0\x03\x20!\n\x0c\n\ + \x02\x05\x04\x12\x06\xa3\x03\0\xa9\x03\x01\n\x0b\n\x03\x05\x04\x01\x12\ + \x04\xa3\x03\x05\r\n\x0c\n\x04\x05\x04\x02\0\x12\x04\xa4\x03\x02\x1a\n\r\ + \n\x05\x05\x04\x02\0\x01\x12\x04\xa4\x03\x02\x15\n\r\n\x05\x05\x04\x02\0\ + \x02\x12\x04\xa4\x03\x18\x19\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xa5\x03\ + \x02\x0c\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\xa5\x03\x02\x07\n\r\n\x05\ + \x05\x04\x02\x01\x02\x12\x04\xa5\x03\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\ + \x12\x04\xa6\x03\x02\x0e\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xa6\x03\ + \x02\t\n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\xa6\x03\x0c\r\n\x0c\n\x04\ + \x05\x04\x02\x03\x12\x04\xa7\x03\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\ + \x12\x04\xa7\x03\x02\r\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xa7\x03\x10\ + \x11\n\x0c\n\x04\x05\x04\x02\x04\x12\x04\xa8\x03\x02\x0b\n\r\n\x05\x05\ + \x04\x02\x04\x01\x12\x04\xa8\x03\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\ + \x12\x04\xa8\x03\t\n\n\x0c\n\x02\x05\x05\x12\x06\xab\x03\0\xaf\x03\x01\n\ + \x0b\n\x03\x05\x05\x01\x12\x04\xab\x03\x05\x12\n\x0c\n\x04\x05\x05\x02\0\ + \x12\x04\xac\x03\x02\x1f\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xac\x03\x02\ + \x1a\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xac\x03\x1d\x1e\n\x0c\n\x04\x05\ + \x05\x02\x01\x12\x04\xad\x03\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\ + \x04\xad\x03\x02\r\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xad\x03\x10\x11\ + \n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xae\x03\x02\x11\n\r\n\x05\x05\x05\ + \x02\x02\x01\x12\x04\xae\x03\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\ + \x04\xae\x03\x0f\x10\n\xd6\x03\n\x02\x05\x06\x12\x06\xb7\x03\0\x9d\x04\ + \x01\x1a\xc7\x03\x20Language\x20standardises\x20names\x20of\x20common\ + \x20programming\x20languages\x20that\x20can\x20be\x20used\n\x20for\x20th\ + e\x20`Document.language`\x20field.\x20The\x20primary\x20purpose\x20of\ + \x20this\x20enum\x20is\x20to\n\x20prevent\x20a\x20situation\x20where\x20\ + we\x20have\x20a\x20single\x20programming\x20language\x20ends\x20up\x20wi\ + th\n\x20multiple\x20string\x20representations.\x20For\x20example,\x20the\ + \x20C++\x20language\x20uses\x20the\x20name\n\x20\"CPlusPlus\"\x20in\x20t\ + his\x20enum\x20and\x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20\ + incompatible.\n\x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\ + \x20add\x20missing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x06\ + \x01\x12\x04\xb7\x03\x05\r\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xb8\x03\x02\ + \x1a\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xb8\x03\x02\x15\n\r\n\x05\x05\ + \x06\x02\0\x02\x12\x04\xb8\x03\x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\ + \x04\xb9\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xb9\x03\x02\ + \x06\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xb9\x03\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x02\x12\x04\xba\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\ + \x04\xba\x03\x02\x05\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xba\x03\x08\n\ + \n\x0c\n\x04\x05\x06\x02\x03\x12\x04\xbb\x03\x02\x0b\n\r\n\x05\x05\x06\ + \x02\x03\x01\x12\x04\xbb\x03\x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\ + \x04\xbb\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x04\x12\x04\xbc\x03\x02\x0c\n\ + \r\n\x05\x05\x06\x02\x04\x01\x12\x04\xbc\x03\x02\x06\n\r\n\x05\x05\x06\ + \x02\x04\x02\x12\x04\xbc\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\ + \xbd\x03\x02\x10\n\r\n\x05\x05\x06\x02\x05\x01\x12\x04\xbd\x03\x02\n\n\r\ + \n\x05\x05\x06\x02\x05\x02\x12\x04\xbd\x03\r\x0f\n\x0c\n\x04\x05\x06\x02\ + \x06\x12\x04\xbe\x03\x02\x10\n\r\n\x05\x05\x06\x02\x06\x01\x12\x04\xbe\ + \x03\x02\n\n\r\n\x05\x05\x06\x02\x06\x02\x12\x04\xbe\x03\r\x0f\n\x0c\n\ + \x04\x05\x06\x02\x07\x12\x04\xbf\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x07\ + \x01\x12\x04\xbf\x03\x02\x05\n\r\n\x05\x05\x06\x02\x07\x02\x12\x04\xbf\ + \x03\x08\n\n\x0c\n\x04\x05\x06\x02\x08\x12\x04\xc0\x03\x02\x0b\n\r\n\x05\ + \x05\x06\x02\x08\x01\x12\x04\xc0\x03\x02\x05\n\r\n\x05\x05\x06\x02\x08\ + \x02\x12\x04\xc0\x03\x08\n\n\x0c\n\x04\x05\x06\x02\t\x12\x04\xc1\x03\x02\ + \x0e\n\r\n\x05\x05\x06\x02\t\x01\x12\x04\xc1\x03\x02\x08\n\r\n\x05\x05\ + \x06\x02\t\x02\x12\x04\xc1\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\ + \xc2\x03\x02\t\n\r\n\x05\x05\x06\x02\n\x01\x12\x04\xc2\x03\x02\x03\n\r\n\ + \x05\x05\x06\x02\n\x02\x12\x04\xc2\x03\x06\x08\n\x0c\n\x04\x05\x06\x02\ + \x0b\x12\x04\xc3\x03\x02\r\n\r\n\x05\x05\x06\x02\x0b\x01\x12\x04\xc3\x03\ + \x02\x07\n\r\n\x05\x05\x06\x02\x0b\x02\x12\x04\xc3\x03\n\x0c\nH\n\x04\ + \x05\x06\x02\x0c\x12\x04\xc4\x03\x02\x0b\":\x20C++\x20(the\x20name\x20\"\ + CPP\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ + \x05\x06\x02\x0c\x01\x12\x04\xc4\x03\x02\x05\n\r\n\x05\x05\x06\x02\x0c\ + \x02\x12\x04\xc4\x03\x08\n\n\x0c\n\x04\x05\x06\x02\r\x12\x04\xc5\x03\x02\ + \x0b\n\r\n\x05\x05\x06\x02\r\x01\x12\x04\xc5\x03\x02\x05\n\r\n\x05\x05\ + \x06\x02\r\x02\x12\x04\xc5\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x0e\x12\x04\ + \xc6\x03\x02\r\n\r\n\x05\x05\x06\x02\x0e\x01\x12\x04\xc6\x03\x02\x08\n\r\ + \n\x05\x05\x06\x02\x0e\x02\x12\x04\xc6\x03\x0b\x0c\n\x0c\n\x04\x05\x06\ + \x02\x0f\x12\x04\xc7\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x0f\x01\x12\x04\ + \xc7\x03\x02\t\n\r\n\x05\x05\x06\x02\x0f\x02\x12\x04\xc7\x03\x0c\r\n\x0c\ + \n\x04\x05\x06\x02\x10\x12\x04\xc8\x03\x02\x14\n\r\n\x05\x05\x06\x02\x10\ + \x01\x12\x04\xc8\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x10\x02\x12\x04\xc8\ + \x03\x11\x13\n\x0c\n\x04\x05\x06\x02\x11\x12\x04\xc9\x03\x02\x11\n\r\n\ + \x05\x05\x06\x02\x11\x01\x12\x04\xc9\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x11\x02\x12\x04\xc9\x03\x0f\x10\n\x0c\n\x04\x05\x06\x02\x12\x12\x04\xca\ + \x03\x02\x0b\n\r\n\x05\x05\x06\x02\x12\x01\x12\x04\xca\x03\x02\x05\n\r\n\ + \x05\x05\x06\x02\x12\x02\x12\x04\xca\x03\x08\n\n\x0c\n\x04\x05\x06\x02\ + \x13\x12\x04\xcb\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x13\x01\x12\x04\xcb\ + \x03\x02\x06\n\r\n\x05\x05\x06\x02\x13\x02\x12\x04\xcb\x03\t\n\n\x0c\n\ + \x04\x05\x06\x02\x14\x12\x04\xcc\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x14\ + \x01\x12\x04\xcc\x03\x02\x08\n\r\n\x05\x05\x06\x02\x14\x02\x12\x04\xcc\ + \x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\x04\xcd\x03\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x15\x01\x12\x04\xcd\x03\x02\x06\n\r\n\x05\x05\x06\x02\x15\ + \x02\x12\x04\xcd\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x16\x12\x04\xce\x03\ + \x02\x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\x04\xce\x03\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x16\x02\x12\x04\xce\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x17\ + \x12\x04\xcf\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x17\x01\x12\x04\xcf\x03\ + \x02\x08\n\r\n\x05\x05\x06\x02\x17\x02\x12\x04\xcf\x03\x0b\r\n\x0c\n\x04\ + \x05\x06\x02\x18\x12\x04\xd0\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x18\x01\ + \x12\x04\xd0\x03\x02\x08\n\r\n\x05\x05\x06\x02\x18\x02\x12\x04\xd0\x03\ + \x0b\r\n\x0c\n\x04\x05\x06\x02\x19\x12\x04\xd1\x03\x02\x0e\n\r\n\x05\x05\ + \x06\x02\x19\x01\x12\x04\xd1\x03\x02\x08\n\r\n\x05\x05\x06\x02\x19\x02\ + \x12\x04\xd1\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1a\x12\x04\xd2\x03\x02\ + \x0e\n\r\n\x05\x05\x06\x02\x1a\x01\x12\x04\xd2\x03\x02\x08\n\r\n\x05\x05\ + \x06\x02\x1a\x02\x12\x04\xd2\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1b\x12\ + \x04\xd3\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1b\x01\x12\x04\xd3\x03\x02\ + \x06\n\r\n\x05\x05\x06\x02\x1b\x02\x12\x04\xd3\x03\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x1c\x12\x04\xd4\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1c\x01\x12\ + \x04\xd4\x03\x02\x06\n\r\n\x05\x05\x06\x02\x1c\x02\x12\x04\xd4\x03\t\x0b\ + \n\x0c\n\x04\x05\x06\x02\x1d\x12\x04\xd5\x03\x02\x0f\n\r\n\x05\x05\x06\ + \x02\x1d\x01\x12\x04\xd5\x03\x02\t\n\r\n\x05\x05\x06\x02\x1d\x02\x12\x04\ + \xd5\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02\x1e\x12\x04\xd6\x03\x02\x12\n\r\ + \n\x05\x05\x06\x02\x1e\x01\x12\x04\xd6\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x1e\x02\x12\x04\xd6\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x1f\x12\x04\xd7\ + \x03\x02\x12\n\r\n\x05\x05\x06\x02\x1f\x01\x12\x04\xd7\x03\x02\x0c\n\r\n\ + \x05\x05\x06\x02\x1f\x02\x12\x04\xd7\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\ + \x20\x12\x04\xd8\x03\x02\x12\n\r\n\x05\x05\x06\x02\x20\x01\x12\x04\xd8\ + \x03\x02\x0c\n\r\n\x05\x05\x06\x02\x20\x02\x12\x04\xd8\x03\x0f\x11\n\x0c\ + \n\x04\x05\x06\x02!\x12\x04\xd9\x03\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\ + \x04\xd9\x03\x02\x04\n\r\n\x05\x05\x06\x02!\x02\x12\x04\xd9\x03\x07\t\n\ + \x0c\n\x04\x05\x06\x02\"\x12\x04\xda\x03\x02\r\n\r\n\x05\x05\x06\x02\"\ + \x01\x12\x04\xda\x03\x02\x08\n\r\n\x05\x05\x06\x02\"\x02\x12\x04\xda\x03\ + \x0b\x0c\n\x0c\n\x04\x05\x06\x02#\x12\x04\xdb\x03\x02\x0c\n\r\n\x05\x05\ + \x06\x02#\x01\x12\x04\xdb\x03\x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\ + \xdb\x03\t\x0b\n\x0c\n\x04\x05\x06\x02$\x12\x04\xdc\x03\x02\x0c\n\r\n\ + \x05\x05\x06\x02$\x01\x12\x04\xdc\x03\x02\x06\n\r\n\x05\x05\x06\x02$\x02\ + \x12\x04\xdc\x03\t\x0b\n\x0c\n\x04\x05\x06\x02%\x12\x04\xdd\x03\x02\x12\ + \n\r\n\x05\x05\x06\x02%\x01\x12\x04\xdd\x03\x02\x0c\n\r\n\x05\x05\x06\ + \x02%\x02\x12\x04\xdd\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\xde\ + \x03\x02\x0f\n\r\n\x05\x05\x06\x02&\x01\x12\x04\xde\x03\x02\t\n\r\n\x05\ + \x05\x06\x02&\x02\x12\x04\xde\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\ + \x04\xdf\x03\x02\r\n\r\n\x05\x05\x06\x02'\x01\x12\x04\xdf\x03\x02\x07\n\ + \r\n\x05\x05\x06\x02'\x02\x12\x04\xdf\x03\n\x0c\n\x0c\n\x04\x05\x06\x02(\ + \x12\x04\xe0\x03\x02\x0b\n\r\n\x05\x05\x06\x02(\x01\x12\x04\xe0\x03\x02\ + \x05\n\r\n\x05\x05\x06\x02(\x02\x12\x04\xe0\x03\x08\n\n\x0c\n\x04\x05\ + \x06\x02)\x12\x04\xe1\x03\x02\t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\xe1\ + \x03\x02\x03\n\r\n\x05\x05\x06\x02)\x02\x12\x04\xe1\x03\x06\x08\n\x0c\n\ + \x04\x05\x06\x02*\x12\x04\xe2\x03\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\ + \x04\xe2\x03\x02\x06\n\r\n\x05\x05\x06\x02*\x02\x12\x04\xe2\x03\t\x0b\n\ + \x0c\n\x04\x05\x06\x02+\x12\x04\xe3\x03\x02\x0b\n\r\n\x05\x05\x06\x02+\ + \x01\x12\x04\xe3\x03\x02\x06\n\r\n\x05\x05\x06\x02+\x02\x12\x04\xe3\x03\ + \t\n\n\x0c\n\x04\x05\x06\x02,\x12\x04\xe4\x03\x02\x12\n\r\n\x05\x05\x06\ + \x02,\x01\x12\x04\xe4\x03\x02\x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\xe4\ + \x03\x0f\x11\n\x0c\n\x04\x05\x06\x02-\x12\x04\xe5\x03\x02\x17\n\r\n\x05\ + \x05\x06\x02-\x01\x12\x04\xe5\x03\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\ + \x04\xe5\x03\x14\x16\n\x0c\n\x04\x05\x06\x02.\x12\x04\xe6\x03\x02\x0f\n\ + \r\n\x05\x05\x06\x02.\x01\x12\x04\xe6\x03\x02\t\n\r\n\x05\x05\x06\x02.\ + \x02\x12\x04\xe6\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02/\x12\x04\xe7\x03\ + \x02\x0e\n\r\n\x05\x05\x06\x02/\x01\x12\x04\xe7\x03\x02\x07\n\r\n\x05\ + \x05\x06\x02/\x02\x12\x04\xe7\x03\x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\ + \xe8\x03\x02\r\n\r\n\x05\x05\x06\x020\x01\x12\x04\xe8\x03\x02\x08\n\r\n\ + \x05\x05\x06\x020\x02\x12\x04\xe8\x03\x0b\x0c\n\x0c\n\x04\x05\x06\x021\ + \x12\x04\xe9\x03\x02\r\n\r\n\x05\x05\x06\x021\x01\x12\x04\xe9\x03\x02\ + \x07\n\r\n\x05\x05\x06\x021\x02\x12\x04\xe9\x03\n\x0c\n\x0c\n\x04\x05\ + \x06\x022\x12\x04\xea\x03\x02\x0c\n\r\n\x05\x05\x06\x022\x01\x12\x04\xea\ + \x03\x02\x06\n\r\n\x05\x05\x06\x022\x02\x12\x04\xea\x03\t\x0b\n\x0c\n\ + \x04\x05\x06\x023\x12\x04\xeb\x03\x02\x0c\n\r\n\x05\x05\x06\x023\x01\x12\ + \x04\xeb\x03\x02\x06\n\r\n\x05\x05\x06\x023\x02\x12\x04\xeb\x03\t\x0b\n\ + \x0c\n\x04\x05\x06\x024\x12\x04\xec\x03\x02\x0b\n\r\n\x05\x05\x06\x024\ + \x01\x12\x04\xec\x03\x02\x05\n\r\n\x05\x05\x06\x024\x02\x12\x04\xec\x03\ + \x08\n\n\x0c\n\x04\x05\x06\x025\x12\x04\xed\x03\x02\x10\n\r\n\x05\x05\ + \x06\x025\x01\x12\x04\xed\x03\x02\n\n\r\n\x05\x05\x06\x025\x02\x12\x04\ + \xed\x03\r\x0f\n\x0c\n\x04\x05\x06\x026\x12\x04\xee\x03\x02\x10\n\r\n\ + \x05\x05\x06\x026\x01\x12\x04\xee\x03\x02\n\n\r\n\x05\x05\x06\x026\x02\ + \x12\x04\xee\x03\r\x0f\n\x0c\n\x04\x05\x06\x027\x12\x04\xef\x03\x02\x0e\ + \n\r\n\x05\x05\x06\x027\x01\x12\x04\xef\x03\x02\x08\n\r\n\x05\x05\x06\ + \x027\x02\x12\x04\xef\x03\x0b\r\n\x0c\n\x04\x05\x06\x028\x12\x04\xf0\x03\ + \x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\xf0\x03\x02\x05\n\r\n\x05\ + \x05\x06\x028\x02\x12\x04\xf0\x03\x08\n\n\x0c\n\x04\x05\x06\x029\x12\x04\ + \xf1\x03\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\x04\xf1\x03\x02\x07\n\r\n\ + \x05\x05\x06\x029\x02\x12\x04\xf1\x03\n\x0c\n\x0c\n\x04\x05\x06\x02:\x12\ + \x04\xf2\x03\x02\x13\n\r\n\x05\x05\x06\x02:\x01\x12\x04\xf2\x03\x02\r\n\ + \r\n\x05\x05\x06\x02:\x02\x12\x04\xf2\x03\x10\x12\n\x0c\n\x04\x05\x06\ + \x02;\x12\x04\xf3\x03\x02\x15\n\r\n\x05\x05\x06\x02;\x01\x12\x04\xf3\x03\ + \x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\xf3\x03\x12\x14\n\x0c\n\x04\ + \x05\x06\x02<\x12\x04\xf4\x03\x02\x0b\n\r\n\x05\x05\x06\x02<\x01\x12\x04\ + \xf4\x03\x02\x05\n\r\n\x05\x05\x06\x02<\x02\x12\x04\xf4\x03\x08\n\n\x0c\ + \n\x04\x05\x06\x02=\x12\x04\xf5\x03\x02\r\n\r\n\x05\x05\x06\x02=\x01\x12\ + \x04\xf5\x03\x02\x07\n\r\n\x05\x05\x06\x02=\x02\x12\x04\xf5\x03\n\x0c\n\ + \x0c\n\x04\x05\x06\x02>\x12\x04\xf6\x03\x02\x0c\n\r\n\x05\x05\x06\x02>\ + \x01\x12\x04\xf6\x03\x02\x06\n\r\n\x05\x05\x06\x02>\x02\x12\x04\xf6\x03\ + \t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xf7\x03\x02\x12\n\r\n\x05\x05\ + \x06\x02?\x01\x12\x04\xf7\x03\x02\x0c\n\r\n\x05\x05\x06\x02?\x02\x12\x04\ + \xf7\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02@\x12\x04\xf8\x03\x02\x0e\n\r\n\ + \x05\x05\x06\x02@\x01\x12\x04\xf8\x03\x02\x08\n\r\n\x05\x05\x06\x02@\x02\ + \x12\x04\xf8\x03\x0b\r\n\x0c\n\x04\x05\x06\x02A\x12\x04\xf9\x03\x02\x0e\ + \n\r\n\x05\x05\x06\x02A\x01\x12\x04\xf9\x03\x02\x08\n\r\n\x05\x05\x06\ + \x02A\x02\x12\x04\xf9\x03\x0b\r\n\x0c\n\x04\x05\x06\x02B\x12\x04\xfa\x03\ + \x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\x04\xfa\x03\x02\x03\n\r\n\x05\x05\ + \x06\x02B\x02\x12\x04\xfa\x03\x06\x08\n\x0c\n\x04\x05\x06\x02C\x12\x04\ + \xfb\x03\x02\x0e\n\r\n\x05\x05\x06\x02C\x01\x12\x04\xfb\x03\x02\x08\n\r\ + \n\x05\x05\x06\x02C\x02\x12\x04\xfb\x03\x0b\r\n\x0c\n\x04\x05\x06\x02D\ + \x12\x04\xfc\x03\x02\x0c\n\r\n\x05\x05\x06\x02D\x01\x12\x04\xfc\x03\x02\ + \x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\xfc\x03\t\x0b\n\x0c\n\x04\x05\ + \x06\x02E\x12\x04\xfd\x03\x02\r\n\r\n\x05\x05\x06\x02E\x01\x12\x04\xfd\ + \x03\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\x04\xfd\x03\n\x0c\n\x0c\n\ + \x04\x05\x06\x02F\x12\x04\xfe\x03\x02\x0c\n\r\n\x05\x05\x06\x02F\x01\x12\ + \x04\xfe\x03\x02\x06\n\r\n\x05\x05\x06\x02F\x02\x12\x04\xfe\x03\t\x0b\n\ + \x0c\n\x04\x05\x06\x02G\x12\x04\xff\x03\x02\x0c\n\r\n\x05\x05\x06\x02G\ + \x01\x12\x04\xff\x03\x02\x06\n\r\n\x05\x05\x06\x02G\x02\x12\x04\xff\x03\ + \t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\x80\x04\x02\x0c\n\r\n\x05\x05\ + \x06\x02H\x01\x12\x04\x80\x04\x02\x06\n\r\n\x05\x05\x06\x02H\x02\x12\x04\ + \x80\x04\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\x04\x81\x04\x02\x0b\n\r\n\ + \x05\x05\x06\x02I\x01\x12\x04\x81\x04\x02\x05\n\r\n\x05\x05\x06\x02I\x02\ + \x12\x04\x81\x04\x08\n\n\x0c\n\x04\x05\x06\x02J\x12\x04\x82\x04\x02\x0c\ + \n\r\n\x05\x05\x06\x02J\x01\x12\x04\x82\x04\x02\x06\n\r\n\x05\x05\x06\ + \x02J\x02\x12\x04\x82\x04\t\x0b\n\x0c\n\x04\x05\x06\x02K\x12\x04\x83\x04\ + \x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\x83\x04\x02\x05\n\r\n\x05\ + \x05\x06\x02K\x02\x12\x04\x83\x04\x08\n\n\x0c\n\x04\x05\x06\x02L\x12\x04\ + \x84\x04\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\x12\x04\x84\x04\x02\x05\n\r\ + \n\x05\x05\x06\x02L\x02\x12\x04\x84\x04\x08\n\n\x0c\n\x04\x05\x06\x02M\ + \x12\x04\x85\x04\x02\x0c\n\r\n\x05\x05\x06\x02M\x01\x12\x04\x85\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\x85\x04\t\x0b\n\x0c\n\x04\x05\ + \x06\x02N\x12\x04\x86\x04\x02\x0c\n\r\n\x05\x05\x06\x02N\x01\x12\x04\x86\ + \x04\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\x04\x86\x04\n\x0b\n\x0c\n\ + \x04\x05\x06\x02O\x12\x04\x87\x04\x02\x0e\n\r\n\x05\x05\x06\x02O\x01\x12\ + \x04\x87\x04\x02\x08\n\r\n\x05\x05\x06\x02O\x02\x12\x04\x87\x04\x0b\r\n\ + \x14\n\x04\x05\x06\x02P\x12\x04\x88\x04\x02\x13\"\x06\x20Bash\n\n\r\n\ + \x05\x05\x06\x02P\x01\x12\x04\x88\x04\x02\r\n\r\n\x05\x05\x06\x02P\x02\ + \x12\x04\x88\x04\x10\x12\n\x0c\n\x04\x05\x06\x02Q\x12\x04\x89\x04\x02\ + \x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\x89\x04\x02\t\n\r\n\x05\x05\x06\ + \x02Q\x02\x12\x04\x89\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02R\x12\x04\x8a\ + \x04\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\x8a\x04\x02\x07\n\r\n\ + \x05\x05\x06\x02R\x02\x12\x04\x8a\x04\n\x0b\n\x0c\n\x04\x05\x06\x02S\x12\ + \x04\x8b\x04\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\x12\x04\x8b\x04\x02\x06\ + \n\r\n\x05\x05\x06\x02S\x02\x12\x04\x8b\x04\t\x0b\n\x0c\n\x04\x05\x06\ + \x02T\x12\x04\x8c\x04\x02\x0b\n\r\n\x05\x05\x06\x02T\x01\x12\x04\x8c\x04\ + \x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\x8c\x04\x08\n\n\x0c\n\x04\ + \x05\x06\x02U\x12\x04\x8d\x04\x02\x12\n\r\n\x05\x05\x06\x02U\x01\x12\x04\ + \x8d\x04\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\x04\x8d\x04\x0f\x11\n\ + \x0c\n\x04\x05\x06\x02V\x12\x04\x8e\x04\x02\x17\n\r\n\x05\x05\x06\x02V\ + \x01\x12\x04\x8e\x04\x02\x11\n\r\n\x05\x05\x06\x02V\x02\x12\x04\x8e\x04\ + \x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\x8f\x04\x02\x13\n\r\n\x05\x05\ + \x06\x02W\x01\x12\x04\x8f\x04\x02\r\n\r\n\x05\x05\x06\x02W\x02\x12\x04\ + \x8f\x04\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\x90\x04\x02\x0b\n\r\n\ + \x05\x05\x06\x02X\x01\x12\x04\x90\x04\x02\x05\n\r\n\x05\x05\x06\x02X\x02\ + \x12\x04\x90\x04\x08\n\n\x0c\n\x04\x05\x06\x02Y\x12\x04\x91\x04\x02\x0f\ + \n\r\n\x05\x05\x06\x02Y\x01\x12\x04\x91\x04\x02\t\n\r\n\x05\x05\x06\x02Y\ + \x02\x12\x04\x91\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02Z\x12\x04\x92\x04\ + \x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\x92\x04\x02\x05\n\r\n\x05\ + \x05\x06\x02Z\x02\x12\x04\x92\x04\x08\n\n\x0c\n\x04\x05\x06\x02[\x12\x04\ + \x93\x04\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\x04\x93\x04\x02\x05\n\r\ + \n\x05\x05\x06\x02[\x02\x12\x04\x93\x04\x08\n\n\x0c\n\x04\x05\x06\x02\\\ + \x12\x04\x94\x04\x02\x0c\n\r\n\x05\x05\x06\x02\\\x01\x12\x04\x94\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\x94\x04\t\x0b\n\x92\x03\n\x04\ + \x05\x06\x02]\x12\x04\x95\x04\x02\x0b\"\x83\x03\x20NextLanguage\x20=\x20\ 95;\n\x20Steps\x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20\ the\x20\"NextLanguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\ \x20\"NextLanguage\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\ @@ -4230,8 +4285,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ age\x20to\x20the\x20correct\x20line\x20above\x20using\x20alphabetical\ \x20order\n\x205.\x20(optional)\x20Add\x20a\x20brief\x20comment\x20behin\ d\x20the\x20language\x20if\x20the\x20name\x20is\x20not\x20self-explanato\ - ry\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\x84\x04\x02\x05\n\r\n\x05\x05\ - \x06\x02]\x02\x12\x04\x84\x04\x08\nb\x06proto3\ + ry\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\x95\x04\x02\x05\n\r\n\x05\x05\ + \x06\x02]\x02\x12\x04\x95\x04\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/bindings/typescript/scip.ts b/bindings/typescript/scip.ts index ad7a6fa1..c68e20b5 100644 --- a/bindings/typescript/scip.ts +++ b/bindings/typescript/scip.ts @@ -1155,6 +1155,7 @@ export namespace scip { is_reference?: boolean; is_implementation?: boolean; is_type_definition?: boolean; + is_definition?: boolean; }) { super(); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); @@ -1171,6 +1172,9 @@ export namespace scip { if ("is_type_definition" in data && data.is_type_definition != undefined) { this.is_type_definition = data.is_type_definition; } + if ("is_definition" in data && data.is_definition != undefined) { + this.is_definition = data.is_definition; + } } } get symbol() { @@ -1197,11 +1201,18 @@ export namespace scip { set is_type_definition(value: boolean) { pb_1.Message.setField(this, 4, value); } + get is_definition() { + return pb_1.Message.getFieldWithDefault(this, 5, false) as boolean; + } + set is_definition(value: boolean) { + pb_1.Message.setField(this, 5, value); + } static fromObject(data: { symbol?: string; is_reference?: boolean; is_implementation?: boolean; is_type_definition?: boolean; + is_definition?: boolean; }): Relationship { const message = new Relationship({}); if (data.symbol != null) { @@ -1216,6 +1227,9 @@ export namespace scip { if (data.is_type_definition != null) { message.is_type_definition = data.is_type_definition; } + if (data.is_definition != null) { + message.is_definition = data.is_definition; + } return message; } toObject() { @@ -1224,6 +1238,7 @@ export namespace scip { is_reference?: boolean; is_implementation?: boolean; is_type_definition?: boolean; + is_definition?: boolean; } = {}; if (this.symbol != null) { data.symbol = this.symbol; @@ -1237,6 +1252,9 @@ export namespace scip { if (this.is_type_definition != null) { data.is_type_definition = this.is_type_definition; } + if (this.is_definition != null) { + data.is_definition = this.is_definition; + } return data; } serialize(): Uint8Array; @@ -1251,6 +1269,8 @@ export namespace scip { writer.writeBool(3, this.is_implementation); if (this.is_type_definition != false) writer.writeBool(4, this.is_type_definition); + if (this.is_definition != false) + writer.writeBool(5, this.is_definition); if (!w) return writer.getResultBuffer(); } @@ -1272,6 +1292,9 @@ export namespace scip { case 4: message.is_type_definition = reader.readBool(); break; + case 5: + message.is_definition = reader.readBool(); + break; default: reader.skipField(); } } diff --git a/cmd/tests/reprolang/bindings/go/repro/ast.go b/cmd/tests/reprolang/bindings/go/repro/ast.go index 9a71ed97..2e11781f 100644 --- a/cmd/tests/reprolang/bindings/go/repro/ast.go +++ b/cmd/tests/reprolang/bindings/go/repro/ast.go @@ -9,16 +9,21 @@ import ( "github.com/sourcegraph/scip/bindings/go/scip" ) -type definitionStatement struct { - docstring string - name *identifier +type relationships struct { implementsRelation *identifier referencesRelation *identifier typeDefinesRelation *identifier + definedByRelation *identifier +} + +type definitionStatement struct { + docstring string + name *identifier + relations relationships } -func (s *definitionStatement) relationIdentifiers() []*identifier { - return []*identifier{s.implementsRelation, s.referencesRelation, s.typeDefinesRelation} +func (r *relationships) identifiers() []*identifier { + return []*identifier{r.implementsRelation, r.referencesRelation, r.typeDefinesRelation, r.definedByRelation} } type referenceStatement struct { @@ -53,6 +58,11 @@ func newIdentifier(s *reproSourceFile, n *sitter.Node) *identifier { } } +type relationshipsStatement struct { + name *identifier + relations relationships +} + func NewRangePositionFromNode(node *sitter.Node) *scip.Range { return &scip.Range{ Start: scip.Position{ @@ -73,6 +83,7 @@ func (i *identifier) resolveSymbol(localScope *reproScope, context *reproContext } symbol, ok := scope.names[i.value] if !ok { + fmt.Printf("scope.names = %v\n", scope.names) symbol = "local ERROR_UNRESOLVED_SYMBOL" } i.symbol = symbol diff --git a/cmd/tests/reprolang/bindings/go/repro/namer.go b/cmd/tests/reprolang/bindings/go/repro/namer.go index ca95f3c1..6173ca8d 100644 --- a/cmd/tests/reprolang/bindings/go/repro/namer.go +++ b/cmd/tests/reprolang/bindings/go/repro/namer.go @@ -9,63 +9,83 @@ import ( // enterGlobalDefinitions inserts the names of the global symbols that are defined in this // dependency into the provided global scope. func (d *reproDependency) enterGlobalDefinitions(context *reproContext) { + enter := func(file *reproSourceFile, name *identifier) { + if name.isLocalSymbol() { + return + } + symbol := newGlobalSymbol(d.Package, file, name) + parsedSymbol, err := scip.ParseSymbol(symbol) + if err != nil { + return + } + newName := newGlobalName(context.pkg, parsedSymbol) + context.globalScope.names[newName] = symbol + } for _, file := range d.Sources { for _, definition := range file.definitions { - if definition.name.isLocalSymbol() { - continue - } - symbol := newGlobalSymbol(d.Package, file, definition) - parsedSymbol, err := scip.ParseSymbol(symbol) - if err != nil { - continue - } - name := newGlobalName(context.pkg, parsedSymbol) - context.globalScope.names[name] = symbol + enter(file, definition.name) + } + for _, relationship := range file.relationships { + enter(file, relationship.name) } } } // enterDefinitions inserts the names of the definitions into the appropriate scope (local symbols go into the local scope). func (s *reproSourceFile) enterDefinitions(context *reproContext) { - for _, def := range s.definitions { + enter := func(name *identifier, defName *identifier) { scope := context.globalScope - if def.name.isLocalSymbol() { + if name.isLocalSymbol() { scope = s.localScope } var symbol string - if def.name.isLocalSymbol() { - symbol = fmt.Sprintf("local %s", def.name.value[len("local"):]) + if name.isLocalSymbol() { + symbol = fmt.Sprintf("local %s", defName.value[len("local"):]) } else { - symbol = newGlobalSymbol(context.pkg, s, def) + symbol = newGlobalSymbol(context.pkg, s, defName) + } + name.symbol = symbol + scope.names[name.value] = symbol + } + for _, def := range s.definitions { + enter(def.name, def.name) + } + for _, rel := range s.relationships { + if rel.relations.definedByRelation != nil { + enter(rel.name, rel.relations.definedByRelation) } - def.name.symbol = symbol - scope.names[def.name.value] = symbol } } // resolveReferences updates the .symbol field for all names of reference identifiers. func (s *reproSourceFile) resolveReferences(context *reproContext) { - for _, def := range s.definitions { - for _, ident := range def.relationIdentifiers() { + resolveIdents := func(rel relationships) { + for _, ident := range rel.identifiers() { if ident == nil { continue } ident.resolveSymbol(s.localScope, context) } } + for _, def := range s.definitions { + resolveIdents(def.relations) + } + for _, rel := range s.relationships { + resolveIdents(rel.relations) + } for _, ref := range s.references { ref.name.resolveSymbol(s.localScope, context) } } // newGlobalSymbol returns an SCIP symbol for the given definition. -func newGlobalSymbol(pkg *scip.Package, document *reproSourceFile, definition *definitionStatement) string { +func newGlobalSymbol(pkg *scip.Package, document *reproSourceFile, name *identifier) string { return fmt.Sprintf( "reprolang repro_manager %v %v %v/%v", pkg.Name, pkg.Version, document.Source.RelativePath, - definition.name.value, + name.value, ) } diff --git a/cmd/tests/reprolang/bindings/go/repro/parser.go b/cmd/tests/reprolang/bindings/go/repro/parser.go index 9baa3411..38fea366 100644 --- a/cmd/tests/reprolang/bindings/go/repro/parser.go +++ b/cmd/tests/reprolang/bindings/go/repro/parser.go @@ -27,28 +27,39 @@ func (s *reproSourceFile) loadStatements() { continue } switch child.Type() { - case "definition_statement": + case "relationships_statement", "definition_statement": docstring := "" docstringNode := child.ChildByFieldName("docstring") if docstringNode != nil { docstring = s.nodeText(docstringNode)[len("# doctring:"):] } - statement := &definitionStatement{ - docstring: docstring, - name: newIdentifier(s, child.ChildByFieldName("name")), - } + name := newIdentifier(s, child.ChildByFieldName("name")) + relations := relationships{} for i := uint32(0); i < child.NamedChildCount(); i++ { relation := child.NamedChild(int(i)) switch relation.Type() { case "implementation_relation": - statement.implementsRelation = newIdentifier(s, relation.ChildByFieldName("name")) + relations.implementsRelation = newIdentifier(s, relation.ChildByFieldName("name")) case "type_definition_relation": - statement.typeDefinesRelation = newIdentifier(s, relation.ChildByFieldName("name")) + relations.typeDefinesRelation = newIdentifier(s, relation.ChildByFieldName("name")) case "references_relation": - statement.referencesRelation = newIdentifier(s, relation.ChildByFieldName("name")) + relations.referencesRelation = newIdentifier(s, relation.ChildByFieldName("name")) + case "defined_by_relation": + relations.definedByRelation = newIdentifier(s, relation.ChildByFieldName("name")) } } - s.definitions = append(s.definitions, statement) + if child.Type() == "definition_statement" { + s.definitions = append(s.definitions, &definitionStatement{ + docstring: docstring, + name: name, + relations: relations, + }) + } else { + s.relationships = append(s.relationships, &relationshipsStatement{ + name: name, + relations: relations, + }) + } case "reference_statement": s.references = append(s.references, &referenceStatement{ name: newIdentifier(s, child.ChildByFieldName("name")), diff --git a/cmd/tests/reprolang/bindings/go/repro/scip.go b/cmd/tests/reprolang/bindings/go/repro/scip.go index ae3f4496..7501cc96 100644 --- a/cmd/tests/reprolang/bindings/go/repro/scip.go +++ b/cmd/tests/reprolang/bindings/go/repro/scip.go @@ -17,6 +17,13 @@ func (i *identifier) occurrence(roles scip.SymbolRole) *scip.Occurrence { func (s *reproSourceFile) symbols() []*scip.SymbolInformation { var result []*scip.SymbolInformation + for _, rel := range s.relationships { + result = append(result, &scip.SymbolInformation{ + Symbol: rel.name.symbol, + Documentation: nil, + Relationships: rel.relations.toSCIP(), + }) + } for _, def := range s.definitions { if strings.Index(def.name.value, "NoSymbolInformation") >= 0 { continue @@ -28,7 +35,7 @@ func (s *reproSourceFile) symbols() []*scip.SymbolInformation { result = append(result, &scip.SymbolInformation{ Symbol: def.name.symbol, Documentation: documentation, - Relationships: def.relationships(), + Relationships: def.relations.toSCIP(), }) } // Ensure a stable order of relationships @@ -40,37 +47,46 @@ func (s *reproSourceFile) symbols() []*scip.SymbolInformation { func (s *reproSourceFile) occurrences() []*scip.Occurrence { var result []*scip.Occurrence - for _, def := range s.definitions { - result = append(result, def.name.occurrence(scip.SymbolRole_Definition)) - for _, ident := range def.relationIdentifiers() { + emit := func(rel relationships) { + for _, ident := range rel.identifiers() { if ident == nil { continue } result = append(result, ident.occurrence(scip.SymbolRole_UnspecifiedSymbolRole)) } } + for _, def := range s.definitions { + result = append(result, def.name.occurrence(scip.SymbolRole_Definition)) + emit(def.relations) + } + for _, rel := range s.relationships { + emit(rel.relations) + } for _, ref := range s.references { result = append(result, ref.name.occurrence(scip.SymbolRole_UnspecifiedSymbolRole)) } return result } -func (s *definitionStatement) relationships() []*scip.Relationship { +func (r *relationships) toSCIP() []*scip.Relationship { bySymbol := map[string]*scip.Relationship{} - for _, ident := range s.relationIdentifiers() { + for _, ident := range r.identifiers() { if ident == nil { continue } bySymbol[ident.symbol] = &scip.Relationship{Symbol: ident.symbol} } - if s.implementsRelation != nil { - bySymbol[s.implementsRelation.symbol].IsImplementation = true + if r.implementsRelation != nil { + bySymbol[r.implementsRelation.symbol].IsImplementation = true + } + if r.referencesRelation != nil { + bySymbol[r.referencesRelation.symbol].IsReference = true } - if s.referencesRelation != nil { - bySymbol[s.referencesRelation.symbol].IsReference = true + if r.typeDefinesRelation != nil { + bySymbol[r.typeDefinesRelation.symbol].IsTypeDefinition = true } - if s.typeDefinesRelation != nil { - bySymbol[s.typeDefinesRelation.symbol].IsTypeDefinition = true + if r.definedByRelation != nil { + bySymbol[r.definedByRelation.symbol].IsDefinition = true } var result []*scip.Relationship for _, value := range bySymbol { diff --git a/cmd/tests/reprolang/bindings/go/repro/source_file.go b/cmd/tests/reprolang/bindings/go/repro/source_file.go index 3c2f4ab8..6ffed2fc 100644 --- a/cmd/tests/reprolang/bindings/go/repro/source_file.go +++ b/cmd/tests/reprolang/bindings/go/repro/source_file.go @@ -7,11 +7,12 @@ import ( ) type reproSourceFile struct { - Source *scip.SourceFile - node *sitter.Node - definitions []*definitionStatement - references []*referenceStatement - localScope *reproScope + Source *scip.SourceFile + node *sitter.Node + definitions []*definitionStatement + references []*referenceStatement + relationships []*relationshipsStatement + localScope *reproScope } func newSourceFile(sourceFile *scip.SourceFile, node *sitter.Node) *reproSourceFile { diff --git a/cmd/tests/reprolang/grammar.js b/cmd/tests/reprolang/grammar.js index 53d3aeb7..67eddd1e 100644 --- a/cmd/tests/reprolang/grammar.js +++ b/cmd/tests/reprolang/grammar.js @@ -7,7 +7,12 @@ module.exports = grammar({ source_file: $ => repeat($._statement), _statement: $ => seq( - choice($.definition_statement, $.reference_statement, $.comment), + choice( + $.definition_statement, + $.reference_statement, + $.relationships_statement, + $.comment + ), '\n' ), definition_statement: $ => @@ -29,6 +34,17 @@ module.exports = grammar({ type_definition_relation: $ => seq('type_defines', field('name', $.identifier)), references_relation: $ => seq('references', field('name', $.identifier)), + // Meant to be used primarily when trying to construct indexes with + // relationships for symbols which lack a definition themselves, + // and are defined by some other symbol. + relationships_statement: $ => + seq( + 'relationships', + field('name', $.identifier), + field('roles', repeat($._all_relations)) + ), + _all_relations: $ => choice($._definition_relations, $.defined_by_relation), + defined_by_relation: $ => seq('defined_by', field('name', $.identifier)), comment: $ => seq('#', /.*/), docstring: $ => seq('# docstring:', /.*/), identifier: $ => diff --git a/cmd/tests/reprolang/src/grammar.json b/cmd/tests/reprolang/src/grammar.json index 4f8ad63a..efeddbef 100644 --- a/cmd/tests/reprolang/src/grammar.json +++ b/cmd/tests/reprolang/src/grammar.json @@ -23,6 +23,10 @@ "type": "SYMBOL", "name": "reference_statement" }, + { + "type": "SYMBOL", + "name": "relationships_statement" + }, { "type": "SYMBOL", "name": "comment" @@ -173,6 +177,64 @@ } ] }, + "relationships_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "relationships" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "roles", + "content": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_all_relations" + } + } + } + ] + }, + "_all_relations": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_definition_relations" + }, + { + "type": "SYMBOL", + "name": "defined_by_relation" + } + ] + }, + "defined_by_relation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "defined_by" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, "comment": { "type": "SEQ", "members": [ diff --git a/cmd/tests/reprolang/src/node-types.json b/cmd/tests/reprolang/src/node-types.json index ccfbc2f4..78239757 100644 --- a/cmd/tests/reprolang/src/node-types.json +++ b/cmd/tests/reprolang/src/node-types.json @@ -4,6 +4,22 @@ "named": true, "fields": {} }, + { + "type": "defined_by_relation", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + } + }, { "type": "definition_statement", "named": true, @@ -157,6 +173,44 @@ } } }, + { + "type": "relationships_statement", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "roles": { + "multiple": true, + "required": false, + "types": [ + { + "type": "defined_by_relation", + "named": true + }, + { + "type": "implementation_relation", + "named": true + }, + { + "type": "references_relation", + "named": true + }, + { + "type": "type_definition_relation", + "named": true + } + ] + } + } + }, { "type": "source_file", "named": true, @@ -176,6 +230,10 @@ { "type": "reference_statement", "named": true + }, + { + "type": "relationships_statement", + "named": true } ] } @@ -208,6 +266,10 @@ "type": "# docstring:", "named": false }, + { + "type": "defined_by", + "named": false + }, { "type": "definition", "named": false @@ -228,6 +290,10 @@ "type": "references", "named": false }, + { + "type": "relationships", + "named": false + }, { "type": "type_defines", "named": false diff --git a/cmd/tests/reprolang/src/parser.c b/cmd/tests/reprolang/src/parser.c index 112bcb44..dc10c634 100644 --- a/cmd/tests/reprolang/src/parser.c +++ b/cmd/tests/reprolang/src/parser.c @@ -6,11 +6,11 @@ #endif #define LANGUAGE_VERSION 13 -#define STATE_COUNT 33 +#define STATE_COUNT 39 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 26 +#define SYMBOL_COUNT 32 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 12 +#define TOKEN_COUNT 14 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 7 #define MAX_ALIAS_SEQUENCE_LENGTH 5 @@ -24,24 +24,30 @@ enum { anon_sym_implements = 5, anon_sym_type_defines = 6, anon_sym_references = 7, - anon_sym_POUND = 8, - aux_sym_comment_token1 = 9, - anon_sym_POUNDdocstring_COLON = 10, - anon_sym_global = 11, - sym_source_file = 12, - sym__statement = 13, - sym_definition_statement = 14, - sym_reference_statement = 15, - sym__definition_relations = 16, - sym_implementation_relation = 17, - sym_type_definition_relation = 18, - sym_references_relation = 19, - sym_comment = 20, - sym_docstring = 21, - sym_identifier = 22, - sym_global_identifier = 23, - aux_sym_source_file_repeat1 = 24, - aux_sym_definition_statement_repeat1 = 25, + anon_sym_relationships = 8, + anon_sym_defined_by = 9, + anon_sym_POUND = 10, + aux_sym_comment_token1 = 11, + anon_sym_POUNDdocstring_COLON = 12, + anon_sym_global = 13, + sym_source_file = 14, + sym__statement = 15, + sym_definition_statement = 16, + sym_reference_statement = 17, + sym__definition_relations = 18, + sym_implementation_relation = 19, + sym_type_definition_relation = 20, + sym_references_relation = 21, + sym_relationships_statement = 22, + sym__all_relations = 23, + sym_defined_by_relation = 24, + sym_comment = 25, + sym_docstring = 26, + sym_identifier = 27, + sym_global_identifier = 28, + aux_sym_source_file_repeat1 = 29, + aux_sym_definition_statement_repeat1 = 30, + aux_sym_relationships_statement_repeat1 = 31, }; static const char * const ts_symbol_names[] = { @@ -53,6 +59,8 @@ static const char * const ts_symbol_names[] = { [anon_sym_implements] = "implements", [anon_sym_type_defines] = "type_defines", [anon_sym_references] = "references", + [anon_sym_relationships] = "relationships", + [anon_sym_defined_by] = "defined_by", [anon_sym_POUND] = "#", [aux_sym_comment_token1] = "comment_token1", [anon_sym_POUNDdocstring_COLON] = "# docstring:", @@ -65,12 +73,16 @@ static const char * const ts_symbol_names[] = { [sym_implementation_relation] = "implementation_relation", [sym_type_definition_relation] = "type_definition_relation", [sym_references_relation] = "references_relation", + [sym_relationships_statement] = "relationships_statement", + [sym__all_relations] = "_all_relations", + [sym_defined_by_relation] = "defined_by_relation", [sym_comment] = "comment", [sym_docstring] = "docstring", [sym_identifier] = "identifier", [sym_global_identifier] = "global_identifier", [aux_sym_source_file_repeat1] = "source_file_repeat1", [aux_sym_definition_statement_repeat1] = "definition_statement_repeat1", + [aux_sym_relationships_statement_repeat1] = "relationships_statement_repeat1", }; static const TSSymbol ts_symbol_map[] = { @@ -82,6 +94,8 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_implements] = anon_sym_implements, [anon_sym_type_defines] = anon_sym_type_defines, [anon_sym_references] = anon_sym_references, + [anon_sym_relationships] = anon_sym_relationships, + [anon_sym_defined_by] = anon_sym_defined_by, [anon_sym_POUND] = anon_sym_POUND, [aux_sym_comment_token1] = aux_sym_comment_token1, [anon_sym_POUNDdocstring_COLON] = anon_sym_POUNDdocstring_COLON, @@ -94,12 +108,16 @@ static const TSSymbol ts_symbol_map[] = { [sym_implementation_relation] = sym_implementation_relation, [sym_type_definition_relation] = sym_type_definition_relation, [sym_references_relation] = sym_references_relation, + [sym_relationships_statement] = sym_relationships_statement, + [sym__all_relations] = sym__all_relations, + [sym_defined_by_relation] = sym_defined_by_relation, [sym_comment] = sym_comment, [sym_docstring] = sym_docstring, [sym_identifier] = sym_identifier, [sym_global_identifier] = sym_global_identifier, [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, [aux_sym_definition_statement_repeat1] = aux_sym_definition_statement_repeat1, + [aux_sym_relationships_statement_repeat1] = aux_sym_relationships_statement_repeat1, }; static const TSSymbolMetadata ts_symbol_metadata[] = { @@ -135,6 +153,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_relationships] = { + .visible = true, + .named = false, + }, + [anon_sym_defined_by] = { + .visible = true, + .named = false, + }, [anon_sym_POUND] = { .visible = true, .named = false, @@ -183,6 +209,18 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_relationships_statement] = { + .visible = true, + .named = true, + }, + [sym__all_relations] = { + .visible = false, + .named = true, + }, + [sym_defined_by_relation] = { + .visible = true, + .named = true, + }, [sym_comment] = { .visible = true, .named = true, @@ -207,6 +245,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_relationships_statement_repeat1] = { + .visible = false, + .named = false, + }, }; enum { @@ -277,344 +319,477 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(32); - if (lookahead == '#') ADVANCE(39); - if (lookahead == 'd') ADVANCE(44); - if (lookahead == 'r') ADVANCE(47); + if (eof) ADVANCE(42); + if (lookahead == '#') ADVANCE(51); + if (lookahead == 'd') ADVANCE(57); + if (lookahead == 'r') ADVANCE(58); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(0) - if (lookahead != 0) ADVANCE(60); + if (lookahead != 0) ADVANCE(82); END_STATE(); case 1: - if (lookahead == '\n') ADVANCE(33); + if (lookahead == '\n') ADVANCE(43); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(1) - if (lookahead != 0) ADVANCE(60); + if (lookahead != 0) ADVANCE(82); END_STATE(); case 2: - if (lookahead == '\n') ADVANCE(33); + if (lookahead == '\n') ADVANCE(43); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(2) END_STATE(); case 3: - if (lookahead == ':') ADVANCE(42); + if (lookahead == ':') ADVANCE(54); END_STATE(); case 4: - if (lookahead == 'c') ADVANCE(27); + if (lookahead == 'a') ADVANCE(38); END_STATE(); case 5: - if (lookahead == 'c') ADVANCE(8); + if (lookahead == 'c') ADVANCE(34); END_STATE(); case 6: - if (lookahead == 'd') ADVANCE(23); + if (lookahead == 'c') ADVANCE(10); END_STATE(); case 7: - if (lookahead == 'e') ADVANCE(13); + if (lookahead == 'd') ADVANCE(28); END_STATE(); case 8: - if (lookahead == 'e') ADVANCE(36); + if (lookahead == 'e') ADVANCE(14); END_STATE(); case 9: - if (lookahead == 'e') ADVANCE(26); + if (lookahead == 'e') ADVANCE(13); END_STATE(); case 10: - if (lookahead == 'e') ADVANCE(12); + if (lookahead == 'e') ADVANCE(46); END_STATE(); case 11: - if (lookahead == 'e') ADVANCE(21); + if (lookahead == 'e') ADVANCE(33); END_STATE(); case 12: - if (lookahead == 'f') ADVANCE(9); + if (lookahead == 'e') ADVANCE(25); END_STATE(); case 13: - if (lookahead == 'f') ADVANCE(18); + if (lookahead == 'f') ADVANCE(11); + if (lookahead == 'l') ADVANCE(4); END_STATE(); case 14: - if (lookahead == 'g') ADVANCE(3); + if (lookahead == 'f') ADVANCE(20); END_STATE(); case 15: - if (lookahead == 'i') ADVANCE(19); + if (lookahead == 'g') ADVANCE(3); END_STATE(); case 16: - if (lookahead == 'i') ADVANCE(24); + if (lookahead == 'h') ADVANCE(18); END_STATE(); case 17: - if (lookahead == 'i') ADVANCE(29); + if (lookahead == 'i') ADVANCE(23); END_STATE(); case 18: - if (lookahead == 'i') ADVANCE(22); + if (lookahead == 'i') ADVANCE(31); END_STATE(); case 19: - if (lookahead == 'n') ADVANCE(14); + if (lookahead == 'i') ADVANCE(29); END_STATE(); case 20: - if (lookahead == 'n') ADVANCE(34); + if (lookahead == 'i') ADVANCE(27); END_STATE(); case 21: - if (lookahead == 'n') ADVANCE(5); + if (lookahead == 'i') ADVANCE(30); END_STATE(); case 22: - if (lookahead == 'n') ADVANCE(17); + if (lookahead == 'i') ADVANCE(39); END_STATE(); case 23: - if (lookahead == 'o') ADVANCE(4); + if (lookahead == 'n') ADVANCE(15); END_STATE(); case 24: - if (lookahead == 'o') ADVANCE(20); + if (lookahead == 'n') ADVANCE(44); END_STATE(); case 25: - if (lookahead == 'r') ADVANCE(15); + if (lookahead == 'n') ADVANCE(6); END_STATE(); case 26: - if (lookahead == 'r') ADVANCE(11); + if (lookahead == 'n') ADVANCE(35); END_STATE(); case 27: - if (lookahead == 's') ADVANCE(28); + if (lookahead == 'n') ADVANCE(22); END_STATE(); case 28: - if (lookahead == 't') ADVANCE(25); + if (lookahead == 'o') ADVANCE(5); END_STATE(); case 29: - if (lookahead == 't') ADVANCE(16); + if (lookahead == 'o') ADVANCE(26); END_STATE(); case 30: + if (lookahead == 'o') ADVANCE(24); + END_STATE(); + case 31: + if (lookahead == 'p') ADVANCE(36); + END_STATE(); + case 32: + if (lookahead == 'r') ADVANCE(17); + END_STATE(); + case 33: + if (lookahead == 'r') ADVANCE(12); + END_STATE(); + case 34: + if (lookahead == 's') ADVANCE(37); + END_STATE(); + case 35: + if (lookahead == 's') ADVANCE(16); + END_STATE(); + case 36: + if (lookahead == 's') ADVANCE(48); + END_STATE(); + case 37: + if (lookahead == 't') ADVANCE(32); + END_STATE(); + case 38: + if (lookahead == 't') ADVANCE(19); + END_STATE(); + case 39: + if (lookahead == 't') ADVANCE(21); + END_STATE(); + case 40: if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(30) - if (lookahead != 0) ADVANCE(60); + lookahead == ' ') SKIP(40) + if (lookahead != 0) ADVANCE(82); END_STATE(); - case 31: - if (eof) ADVANCE(32); - if (lookahead == '#') ADVANCE(38); - if (lookahead == 'd') ADVANCE(7); - if (lookahead == 'r') ADVANCE(10); + case 41: + if (eof) ADVANCE(42); + if (lookahead == '#') ADVANCE(50); + if (lookahead == 'd') ADVANCE(8); + if (lookahead == 'r') ADVANCE(9); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(31) + lookahead == ' ') SKIP(41) END_STATE(); - case 32: + case 42: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 33: + case 43: ACCEPT_TOKEN(anon_sym_LF); - if (lookahead == '\n') ADVANCE(33); + if (lookahead == '\n') ADVANCE(43); END_STATE(); - case 34: + case 44: ACCEPT_TOKEN(anon_sym_definition); END_STATE(); - case 35: + case 45: ACCEPT_TOKEN(anon_sym_definition); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 36: + case 46: ACCEPT_TOKEN(anon_sym_reference); END_STATE(); - case 37: + case 47: ACCEPT_TOKEN(anon_sym_reference); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 38: + case 48: + ACCEPT_TOKEN(anon_sym_relationships); + END_STATE(); + case 49: + ACCEPT_TOKEN(anon_sym_relationships); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 50: ACCEPT_TOKEN(anon_sym_POUND); - if (lookahead == ' ') ADVANCE(6); + if (lookahead == ' ') ADVANCE(7); END_STATE(); - case 39: + case 51: ACCEPT_TOKEN(anon_sym_POUND); - if (lookahead == ' ') ADVANCE(6); + if (lookahead == ' ') ADVANCE(7); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && - lookahead != '\r') ADVANCE(60); + lookahead != '\r') ADVANCE(82); END_STATE(); - case 40: + case 52: ACCEPT_TOKEN(aux_sym_comment_token1); if (lookahead == '\t' || lookahead == '\r' || - lookahead == ' ') ADVANCE(40); + lookahead == ' ') ADVANCE(52); if (lookahead != 0 && - lookahead != '\n') ADVANCE(41); + lookahead != '\n') ADVANCE(53); END_STATE(); - case 41: + case 53: ACCEPT_TOKEN(aux_sym_comment_token1); if (lookahead != 0 && - lookahead != '\n') ADVANCE(41); + lookahead != '\n') ADVANCE(53); END_STATE(); - case 42: + case 54: ACCEPT_TOKEN(anon_sym_POUNDdocstring_COLON); END_STATE(); - case 43: + case 55: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'c') ADVANCE(46); + if (lookahead == 'a') ADVANCE(80); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 44: + case 56: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'e') ADVANCE(49); + if (lookahead == 'c') ADVANCE(60); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 45: + case 57: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'e') ADVANCE(58); + if (lookahead == 'e') ADVANCE(62); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 46: + case 58: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'e') ADVANCE(37); + if (lookahead == 'e') ADVANCE(63); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 47: + case 59: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'e') ADVANCE(50); + if (lookahead == 'e') ADVANCE(77); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 48: + case 60: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'e') ADVANCE(54); + if (lookahead == 'e') ADVANCE(47); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 49: + case 61: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'f') ADVANCE(51); + if (lookahead == 'e') ADVANCE(70); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 50: + case 62: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'f') ADVANCE(45); + if (lookahead == 'f') ADVANCE(65); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 51: + case 63: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'i') ADVANCE(56); + if (lookahead == 'f') ADVANCE(59); + if (lookahead == 'l') ADVANCE(55); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 52: + case 64: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'i') ADVANCE(59); + if (lookahead == 'h') ADVANCE(67); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 53: + case 65: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'i') ADVANCE(57); + if (lookahead == 'i') ADVANCE(73); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 54: + case 66: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'n') ADVANCE(43); + if (lookahead == 'i') ADVANCE(74); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 55: + case 67: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'n') ADVANCE(35); + if (lookahead == 'i') ADVANCE(76); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 56: + case 68: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'n') ADVANCE(52); + if (lookahead == 'i') ADVANCE(75); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 57: + case 69: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'o') ADVANCE(55); + if (lookahead == 'i') ADVANCE(81); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 58: + case 70: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 'r') ADVANCE(48); + if (lookahead == 'n') ADVANCE(56); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 59: + case 71: ACCEPT_TOKEN(sym_workspace_identifier); - if (lookahead == 't') ADVANCE(53); + if (lookahead == 'n') ADVANCE(78); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); - case 60: + case 72: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'n') ADVANCE(45); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 73: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'n') ADVANCE(69); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 74: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'o') ADVANCE(71); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 75: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'o') ADVANCE(72); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 76: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'p') ADVANCE(79); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 77: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 'r') ADVANCE(61); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 78: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 's') ADVANCE(64); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 79: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 's') ADVANCE(49); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 80: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 't') ADVANCE(66); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 81: + ACCEPT_TOKEN(sym_workspace_identifier); + if (lookahead == 't') ADVANCE(68); + if (lookahead != 0 && + lookahead != '\t' && + lookahead != '\n' && + lookahead != '\r' && + lookahead != ' ') ADVANCE(82); + END_STATE(); + case 82: ACCEPT_TOKEN(sym_workspace_identifier); if (lookahead != 0 && lookahead != '\t' && lookahead != '\n' && lookahead != '\r' && - lookahead != ' ') ADVANCE(60); + lookahead != ' ') ADVANCE(82); END_STATE(); default: return false; @@ -626,127 +801,158 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (lookahead == 'g') ADVANCE(1); - if (lookahead == 'i') ADVANCE(2); - if (lookahead == 'r') ADVANCE(3); - if (lookahead == 't') ADVANCE(4); + if (lookahead == 'd') ADVANCE(1); + if (lookahead == 'g') ADVANCE(2); + if (lookahead == 'i') ADVANCE(3); + if (lookahead == 'r') ADVANCE(4); + if (lookahead == 't') ADVANCE(5); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(0) END_STATE(); case 1: - if (lookahead == 'l') ADVANCE(5); + if (lookahead == 'e') ADVANCE(6); END_STATE(); case 2: - if (lookahead == 'm') ADVANCE(6); + if (lookahead == 'l') ADVANCE(7); END_STATE(); case 3: - if (lookahead == 'e') ADVANCE(7); + if (lookahead == 'm') ADVANCE(8); END_STATE(); case 4: - if (lookahead == 'y') ADVANCE(8); + if (lookahead == 'e') ADVANCE(9); END_STATE(); case 5: - if (lookahead == 'o') ADVANCE(9); + if (lookahead == 'y') ADVANCE(10); END_STATE(); case 6: - if (lookahead == 'p') ADVANCE(10); + if (lookahead == 'f') ADVANCE(11); END_STATE(); case 7: - if (lookahead == 'f') ADVANCE(11); + if (lookahead == 'o') ADVANCE(12); END_STATE(); case 8: - if (lookahead == 'p') ADVANCE(12); + if (lookahead == 'p') ADVANCE(13); END_STATE(); case 9: - if (lookahead == 'b') ADVANCE(13); + if (lookahead == 'f') ADVANCE(14); END_STATE(); case 10: - if (lookahead == 'l') ADVANCE(14); + if (lookahead == 'p') ADVANCE(15); END_STATE(); case 11: - if (lookahead == 'e') ADVANCE(15); + if (lookahead == 'i') ADVANCE(16); END_STATE(); case 12: - if (lookahead == 'e') ADVANCE(16); + if (lookahead == 'b') ADVANCE(17); END_STATE(); case 13: - if (lookahead == 'a') ADVANCE(17); + if (lookahead == 'l') ADVANCE(18); END_STATE(); case 14: - if (lookahead == 'e') ADVANCE(18); + if (lookahead == 'e') ADVANCE(19); END_STATE(); case 15: - if (lookahead == 'r') ADVANCE(19); + if (lookahead == 'e') ADVANCE(20); END_STATE(); case 16: - if (lookahead == '_') ADVANCE(20); + if (lookahead == 'n') ADVANCE(21); END_STATE(); case 17: - if (lookahead == 'l') ADVANCE(21); + if (lookahead == 'a') ADVANCE(22); END_STATE(); case 18: - if (lookahead == 'm') ADVANCE(22); + if (lookahead == 'e') ADVANCE(23); END_STATE(); case 19: - if (lookahead == 'e') ADVANCE(23); + if (lookahead == 'r') ADVANCE(24); END_STATE(); case 20: - if (lookahead == 'd') ADVANCE(24); + if (lookahead == '_') ADVANCE(25); END_STATE(); case 21: - ACCEPT_TOKEN(anon_sym_global); + if (lookahead == 'e') ADVANCE(26); END_STATE(); case 22: - if (lookahead == 'e') ADVANCE(25); + if (lookahead == 'l') ADVANCE(27); END_STATE(); case 23: - if (lookahead == 'n') ADVANCE(26); + if (lookahead == 'm') ADVANCE(28); END_STATE(); case 24: - if (lookahead == 'e') ADVANCE(27); + if (lookahead == 'e') ADVANCE(29); END_STATE(); case 25: - if (lookahead == 'n') ADVANCE(28); + if (lookahead == 'd') ADVANCE(30); END_STATE(); case 26: - if (lookahead == 'c') ADVANCE(29); + if (lookahead == 'd') ADVANCE(31); END_STATE(); case 27: - if (lookahead == 'f') ADVANCE(30); + ACCEPT_TOKEN(anon_sym_global); END_STATE(); case 28: - if (lookahead == 't') ADVANCE(31); + if (lookahead == 'e') ADVANCE(32); END_STATE(); case 29: - if (lookahead == 'e') ADVANCE(32); + if (lookahead == 'n') ADVANCE(33); END_STATE(); case 30: - if (lookahead == 'i') ADVANCE(33); + if (lookahead == 'e') ADVANCE(34); END_STATE(); case 31: - if (lookahead == 's') ADVANCE(34); + if (lookahead == '_') ADVANCE(35); END_STATE(); case 32: - if (lookahead == 's') ADVANCE(35); + if (lookahead == 'n') ADVANCE(36); END_STATE(); case 33: - if (lookahead == 'n') ADVANCE(36); + if (lookahead == 'c') ADVANCE(37); END_STATE(); case 34: - ACCEPT_TOKEN(anon_sym_implements); + if (lookahead == 'f') ADVANCE(38); END_STATE(); case 35: - ACCEPT_TOKEN(anon_sym_references); + if (lookahead == 'b') ADVANCE(39); END_STATE(); case 36: - if (lookahead == 'e') ADVANCE(37); + if (lookahead == 't') ADVANCE(40); END_STATE(); case 37: - if (lookahead == 's') ADVANCE(38); + if (lookahead == 'e') ADVANCE(41); END_STATE(); case 38: + if (lookahead == 'i') ADVANCE(42); + END_STATE(); + case 39: + if (lookahead == 'y') ADVANCE(43); + END_STATE(); + case 40: + if (lookahead == 's') ADVANCE(44); + END_STATE(); + case 41: + if (lookahead == 's') ADVANCE(45); + END_STATE(); + case 42: + if (lookahead == 'n') ADVANCE(46); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_defined_by); + END_STATE(); + case 44: + ACCEPT_TOKEN(anon_sym_implements); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_references); + END_STATE(); + case 46: + if (lookahead == 'e') ADVANCE(47); + END_STATE(); + case 47: + if (lookahead == 's') ADVANCE(48); + END_STATE(); + case 48: ACCEPT_TOKEN(anon_sym_type_defines); END_STATE(); default: @@ -756,38 +962,44 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 31}, - [2] = {.lex_state = 31}, - [3] = {.lex_state = 31}, + [1] = {.lex_state = 41}, + [2] = {.lex_state = 41}, + [3] = {.lex_state = 41}, [4] = {.lex_state = 1}, [5] = {.lex_state = 1}, [6] = {.lex_state = 1}, [7] = {.lex_state = 1}, [8] = {.lex_state = 1}, - [9] = {.lex_state = 31}, + [9] = {.lex_state = 1}, [10] = {.lex_state = 1}, [11] = {.lex_state = 1}, - [12] = {.lex_state = 30}, + [12] = {.lex_state = 41}, [13] = {.lex_state = 1}, [14] = {.lex_state = 1}, [15] = {.lex_state = 1}, - [16] = {.lex_state = 30}, + [16] = {.lex_state = 1}, [17] = {.lex_state = 1}, - [18] = {.lex_state = 30}, - [19] = {.lex_state = 30}, - [20] = {.lex_state = 30}, - [21] = {.lex_state = 30}, - [22] = {.lex_state = 2}, - [23] = {.lex_state = 31}, - [24] = {.lex_state = 30}, + [18] = {.lex_state = 1}, + [19] = {.lex_state = 1}, + [20] = {.lex_state = 40}, + [21] = {.lex_state = 40}, + [22] = {.lex_state = 40}, + [23] = {.lex_state = 40}, + [24] = {.lex_state = 40}, [25] = {.lex_state = 40}, - [26] = {.lex_state = 2}, - [27] = {.lex_state = 2}, + [26] = {.lex_state = 40}, + [27] = {.lex_state = 40}, [28] = {.lex_state = 2}, - [29] = {.lex_state = 30}, - [30] = {.lex_state = 2}, - [31] = {.lex_state = 0}, - [32] = {.lex_state = 40}, + [29] = {.lex_state = 40}, + [30] = {.lex_state = 52}, + [31] = {.lex_state = 41}, + [32] = {.lex_state = 2}, + [33] = {.lex_state = 2}, + [34] = {.lex_state = 2}, + [35] = {.lex_state = 40}, + [36] = {.lex_state = 2}, + [37] = {.lex_state = 0}, + [38] = {.lex_state = 52}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -799,367 +1011,485 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_implements] = ACTIONS(1), [anon_sym_type_defines] = ACTIONS(1), [anon_sym_references] = ACTIONS(1), + [anon_sym_relationships] = ACTIONS(1), + [anon_sym_defined_by] = ACTIONS(1), [anon_sym_POUND] = ACTIONS(1), [anon_sym_POUNDdocstring_COLON] = ACTIONS(1), [anon_sym_global] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(31), - [sym__statement] = STATE(3), - [sym_definition_statement] = STATE(30), - [sym_reference_statement] = STATE(30), - [sym_comment] = STATE(30), - [sym_docstring] = STATE(22), - [aux_sym_source_file_repeat1] = STATE(3), + [sym_source_file] = STATE(37), + [sym__statement] = STATE(2), + [sym_definition_statement] = STATE(36), + [sym_reference_statement] = STATE(36), + [sym_relationships_statement] = STATE(36), + [sym_comment] = STATE(36), + [sym_docstring] = STATE(28), + [aux_sym_source_file_repeat1] = STATE(2), [ts_builtin_sym_end] = ACTIONS(3), [anon_sym_definition] = ACTIONS(5), [anon_sym_reference] = ACTIONS(7), - [anon_sym_POUND] = ACTIONS(9), - [anon_sym_POUNDdocstring_COLON] = ACTIONS(11), + [anon_sym_relationships] = ACTIONS(9), + [anon_sym_POUND] = ACTIONS(11), + [anon_sym_POUNDdocstring_COLON] = ACTIONS(13), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 8, - ACTIONS(13), 1, - ts_builtin_sym_end, - ACTIONS(15), 1, + [0] = 9, + ACTIONS(5), 1, anon_sym_definition, - ACTIONS(18), 1, + ACTIONS(7), 1, anon_sym_reference, - ACTIONS(21), 1, + ACTIONS(9), 1, + anon_sym_relationships, + ACTIONS(11), 1, anon_sym_POUND, - ACTIONS(24), 1, + ACTIONS(13), 1, anon_sym_POUNDdocstring_COLON, - STATE(22), 1, + ACTIONS(15), 1, + ts_builtin_sym_end, + STATE(28), 1, sym_docstring, - STATE(2), 2, + STATE(3), 2, sym__statement, aux_sym_source_file_repeat1, - STATE(30), 3, + STATE(36), 4, sym_definition_statement, sym_reference_statement, + sym_relationships_statement, sym_comment, - [28] = 8, - ACTIONS(5), 1, + [32] = 9, + ACTIONS(17), 1, + ts_builtin_sym_end, + ACTIONS(19), 1, anon_sym_definition, - ACTIONS(7), 1, + ACTIONS(22), 1, anon_sym_reference, - ACTIONS(9), 1, + ACTIONS(25), 1, + anon_sym_relationships, + ACTIONS(28), 1, anon_sym_POUND, - ACTIONS(11), 1, + ACTIONS(31), 1, anon_sym_POUNDdocstring_COLON, - ACTIONS(27), 1, - ts_builtin_sym_end, - STATE(22), 1, + STATE(28), 1, sym_docstring, - STATE(2), 2, + STATE(3), 2, sym__statement, aux_sym_source_file_repeat1, - STATE(30), 3, + STATE(36), 4, sym_definition_statement, sym_reference_statement, + sym_relationships_statement, sym_comment, - [56] = 5, - ACTIONS(29), 1, + [64] = 6, + ACTIONS(34), 1, anon_sym_LF, - ACTIONS(31), 1, + ACTIONS(36), 1, anon_sym_implements, - ACTIONS(33), 1, + ACTIONS(39), 1, anon_sym_type_defines, - ACTIONS(35), 1, + ACTIONS(42), 1, anon_sym_references, - STATE(7), 5, + ACTIONS(45), 1, + anon_sym_defined_by, + STATE(4), 7, sym__definition_relations, sym_implementation_relation, sym_type_definition_relation, sym_references_relation, - aux_sym_definition_statement_repeat1, - [76] = 5, - ACTIONS(31), 1, + sym__all_relations, + sym_defined_by_relation, + aux_sym_relationships_statement_repeat1, + [89] = 6, + ACTIONS(48), 1, + anon_sym_LF, + ACTIONS(50), 1, + anon_sym_implements, + ACTIONS(52), 1, + anon_sym_type_defines, + ACTIONS(54), 1, + anon_sym_references, + ACTIONS(56), 1, + anon_sym_defined_by, + STATE(4), 7, + sym__definition_relations, + sym_implementation_relation, + sym_type_definition_relation, + sym_references_relation, + sym__all_relations, + sym_defined_by_relation, + aux_sym_relationships_statement_repeat1, + [114] = 6, + ACTIONS(50), 1, anon_sym_implements, - ACTIONS(33), 1, + ACTIONS(52), 1, anon_sym_type_defines, - ACTIONS(35), 1, + ACTIONS(54), 1, anon_sym_references, - ACTIONS(37), 1, + ACTIONS(56), 1, + anon_sym_defined_by, + ACTIONS(58), 1, anon_sym_LF, - STATE(7), 5, + STATE(5), 7, sym__definition_relations, sym_implementation_relation, sym_type_definition_relation, sym_references_relation, - aux_sym_definition_statement_repeat1, - [96] = 5, - ACTIONS(31), 1, + sym__all_relations, + sym_defined_by_relation, + aux_sym_relationships_statement_repeat1, + [139] = 5, + ACTIONS(50), 1, anon_sym_implements, - ACTIONS(33), 1, + ACTIONS(52), 1, anon_sym_type_defines, - ACTIONS(35), 1, + ACTIONS(54), 1, anon_sym_references, - ACTIONS(39), 1, + ACTIONS(60), 1, anon_sym_LF, - STATE(5), 5, + STATE(10), 5, sym__definition_relations, sym_implementation_relation, sym_type_definition_relation, sym_references_relation, aux_sym_definition_statement_repeat1, - [116] = 5, - ACTIONS(41), 1, - anon_sym_LF, - ACTIONS(43), 1, + [159] = 5, + ACTIONS(50), 1, anon_sym_implements, - ACTIONS(46), 1, + ACTIONS(52), 1, anon_sym_type_defines, - ACTIONS(49), 1, + ACTIONS(54), 1, anon_sym_references, - STATE(7), 5, + ACTIONS(62), 1, + anon_sym_LF, + STATE(11), 5, sym__definition_relations, sym_implementation_relation, sym_type_definition_relation, sym_references_relation, aux_sym_definition_statement_repeat1, - [136] = 5, - ACTIONS(31), 1, + [179] = 5, + ACTIONS(50), 1, anon_sym_implements, - ACTIONS(33), 1, + ACTIONS(52), 1, anon_sym_type_defines, - ACTIONS(35), 1, + ACTIONS(54), 1, anon_sym_references, + ACTIONS(64), 1, + anon_sym_LF, + STATE(8), 5, + sym__definition_relations, + sym_implementation_relation, + sym_type_definition_relation, + sym_references_relation, + aux_sym_definition_statement_repeat1, + [199] = 5, + ACTIONS(50), 1, + anon_sym_implements, ACTIONS(52), 1, + anon_sym_type_defines, + ACTIONS(54), 1, + anon_sym_references, + ACTIONS(66), 1, anon_sym_LF, - STATE(4), 5, + STATE(11), 5, sym__definition_relations, sym_implementation_relation, sym_type_definition_relation, sym_references_relation, aux_sym_definition_statement_repeat1, - [156] = 2, - ACTIONS(56), 1, + [219] = 5, + ACTIONS(68), 1, + anon_sym_LF, + ACTIONS(70), 1, + anon_sym_implements, + ACTIONS(73), 1, + anon_sym_type_defines, + ACTIONS(76), 1, + anon_sym_references, + STATE(11), 5, + sym__definition_relations, + sym_implementation_relation, + sym_type_definition_relation, + sym_references_relation, + aux_sym_definition_statement_repeat1, + [239] = 2, + ACTIONS(81), 1, anon_sym_POUND, - ACTIONS(54), 4, + ACTIONS(79), 5, ts_builtin_sym_end, anon_sym_definition, anon_sym_reference, + anon_sym_relationships, anon_sym_POUNDdocstring_COLON, - [166] = 2, - ACTIONS(58), 1, + [250] = 2, + ACTIONS(83), 1, anon_sym_LF, - ACTIONS(60), 3, + ACTIONS(85), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [175] = 2, - ACTIONS(62), 1, + anon_sym_defined_by, + [260] = 2, + ACTIONS(87), 1, anon_sym_LF, - ACTIONS(64), 3, + ACTIONS(89), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [184] = 4, - ACTIONS(66), 1, - sym_workspace_identifier, - ACTIONS(68), 1, - anon_sym_global, - STATE(8), 1, - sym_identifier, - STATE(13), 1, - sym_global_identifier, - [197] = 2, - ACTIONS(70), 1, + anon_sym_defined_by, + [270] = 2, + ACTIONS(91), 1, anon_sym_LF, - ACTIONS(72), 3, + ACTIONS(93), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [206] = 2, - ACTIONS(74), 1, + anon_sym_defined_by, + [280] = 2, + ACTIONS(95), 1, anon_sym_LF, - ACTIONS(76), 3, + ACTIONS(97), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [215] = 2, - ACTIONS(78), 1, + anon_sym_defined_by, + [290] = 2, + ACTIONS(99), 1, anon_sym_LF, - ACTIONS(80), 3, + ACTIONS(101), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [224] = 4, - ACTIONS(66), 1, - sym_workspace_identifier, - ACTIONS(68), 1, - anon_sym_global, - STATE(6), 1, - sym_identifier, - STATE(13), 1, - sym_global_identifier, - [237] = 2, - ACTIONS(82), 1, + anon_sym_defined_by, + [300] = 2, + ACTIONS(103), 1, anon_sym_LF, - ACTIONS(84), 3, + ACTIONS(105), 4, anon_sym_implements, anon_sym_type_defines, anon_sym_references, - [246] = 4, - ACTIONS(66), 1, + anon_sym_defined_by, + [310] = 2, + ACTIONS(107), 1, + anon_sym_LF, + ACTIONS(109), 4, + anon_sym_implements, + anon_sym_type_defines, + anon_sym_references, + anon_sym_defined_by, + [320] = 4, + ACTIONS(111), 1, sym_workspace_identifier, - ACTIONS(68), 1, + ACTIONS(113), 1, anon_sym_global, - STATE(13), 1, + STATE(15), 1, sym_global_identifier, - STATE(28), 1, + STATE(34), 1, sym_identifier, - [259] = 4, - ACTIONS(66), 1, + [333] = 4, + ACTIONS(111), 1, sym_workspace_identifier, - ACTIONS(68), 1, + ACTIONS(113), 1, anon_sym_global, - STATE(13), 1, + STATE(6), 1, + sym_identifier, + STATE(15), 1, sym_global_identifier, - STATE(14), 1, + [346] = 4, + ACTIONS(111), 1, + sym_workspace_identifier, + ACTIONS(113), 1, + anon_sym_global, + STATE(7), 1, sym_identifier, - [272] = 4, - ACTIONS(66), 1, + STATE(15), 1, + sym_global_identifier, + [359] = 4, + ACTIONS(111), 1, sym_workspace_identifier, - ACTIONS(68), 1, + ACTIONS(113), 1, anon_sym_global, - STATE(10), 1, + STATE(15), 1, + sym_global_identifier, + STATE(17), 1, sym_identifier, - STATE(13), 1, + [372] = 4, + ACTIONS(111), 1, + sym_workspace_identifier, + ACTIONS(113), 1, + anon_sym_global, + STATE(15), 1, sym_global_identifier, - [285] = 4, - ACTIONS(66), 1, + STATE(16), 1, + sym_identifier, + [385] = 4, + ACTIONS(111), 1, sym_workspace_identifier, - ACTIONS(68), 1, + ACTIONS(113), 1, anon_sym_global, STATE(13), 1, + sym_identifier, + STATE(15), 1, sym_global_identifier, - STATE(17), 1, + [398] = 4, + ACTIONS(111), 1, + sym_workspace_identifier, + ACTIONS(113), 1, + anon_sym_global, + STATE(15), 1, + sym_global_identifier, + STATE(19), 1, + sym_identifier, + [411] = 4, + ACTIONS(111), 1, + sym_workspace_identifier, + ACTIONS(113), 1, + anon_sym_global, + STATE(9), 1, sym_identifier, - [298] = 1, - ACTIONS(86), 1, + STATE(15), 1, + sym_global_identifier, + [424] = 1, + ACTIONS(115), 1, anon_sym_LF, - [302] = 1, - ACTIONS(88), 1, - anon_sym_definition, - [306] = 1, - ACTIONS(90), 1, + [428] = 1, + ACTIONS(117), 1, sym_workspace_identifier, - [310] = 1, - ACTIONS(92), 1, + [432] = 1, + ACTIONS(119), 1, aux_sym_comment_token1, - [314] = 1, - ACTIONS(94), 1, + [436] = 1, + ACTIONS(121), 1, + anon_sym_definition, + [440] = 1, + ACTIONS(123), 1, anon_sym_LF, - [318] = 1, - ACTIONS(96), 1, + [444] = 1, + ACTIONS(125), 1, anon_sym_LF, - [322] = 1, - ACTIONS(98), 1, + [448] = 1, + ACTIONS(127), 1, anon_sym_LF, - [326] = 1, - ACTIONS(100), 1, + [452] = 1, + ACTIONS(129), 1, sym_workspace_identifier, - [330] = 1, - ACTIONS(102), 1, + [456] = 1, + ACTIONS(131), 1, anon_sym_LF, - [334] = 1, - ACTIONS(104), 1, + [460] = 1, + ACTIONS(133), 1, ts_builtin_sym_end, - [338] = 1, - ACTIONS(106), 1, + [464] = 1, + ACTIONS(135), 1, aux_sym_comment_token1, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 28, - [SMALL_STATE(4)] = 56, - [SMALL_STATE(5)] = 76, - [SMALL_STATE(6)] = 96, - [SMALL_STATE(7)] = 116, - [SMALL_STATE(8)] = 136, - [SMALL_STATE(9)] = 156, - [SMALL_STATE(10)] = 166, - [SMALL_STATE(11)] = 175, - [SMALL_STATE(12)] = 184, - [SMALL_STATE(13)] = 197, - [SMALL_STATE(14)] = 206, - [SMALL_STATE(15)] = 215, - [SMALL_STATE(16)] = 224, - [SMALL_STATE(17)] = 237, - [SMALL_STATE(18)] = 246, - [SMALL_STATE(19)] = 259, - [SMALL_STATE(20)] = 272, - [SMALL_STATE(21)] = 285, - [SMALL_STATE(22)] = 298, - [SMALL_STATE(23)] = 302, - [SMALL_STATE(24)] = 306, - [SMALL_STATE(25)] = 310, - [SMALL_STATE(26)] = 314, - [SMALL_STATE(27)] = 318, - [SMALL_STATE(28)] = 322, - [SMALL_STATE(29)] = 326, - [SMALL_STATE(30)] = 330, - [SMALL_STATE(31)] = 334, - [SMALL_STATE(32)] = 338, + [SMALL_STATE(3)] = 32, + [SMALL_STATE(4)] = 64, + [SMALL_STATE(5)] = 89, + [SMALL_STATE(6)] = 114, + [SMALL_STATE(7)] = 139, + [SMALL_STATE(8)] = 159, + [SMALL_STATE(9)] = 179, + [SMALL_STATE(10)] = 199, + [SMALL_STATE(11)] = 219, + [SMALL_STATE(12)] = 239, + [SMALL_STATE(13)] = 250, + [SMALL_STATE(14)] = 260, + [SMALL_STATE(15)] = 270, + [SMALL_STATE(16)] = 280, + [SMALL_STATE(17)] = 290, + [SMALL_STATE(18)] = 300, + [SMALL_STATE(19)] = 310, + [SMALL_STATE(20)] = 320, + [SMALL_STATE(21)] = 333, + [SMALL_STATE(22)] = 346, + [SMALL_STATE(23)] = 359, + [SMALL_STATE(24)] = 372, + [SMALL_STATE(25)] = 385, + [SMALL_STATE(26)] = 398, + [SMALL_STATE(27)] = 411, + [SMALL_STATE(28)] = 424, + [SMALL_STATE(29)] = 428, + [SMALL_STATE(30)] = 432, + [SMALL_STATE(31)] = 436, + [SMALL_STATE(32)] = 440, + [SMALL_STATE(33)] = 444, + [SMALL_STATE(34)] = 448, + [SMALL_STATE(35)] = 452, + [SMALL_STATE(36)] = 456, + [SMALL_STATE(37)] = 460, + [SMALL_STATE(38)] = 464, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [13] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), - [15] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(12), - [18] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(18), - [21] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(25), - [24] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(32), - [27] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [29] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 3, .production_id = 4), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), - [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 5, .production_id = 7), - [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 4, .production_id = 6), - [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_definition_statement_repeat1, 2), - [43] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(19), - [46] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(20), - [49] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(21), - [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 2, .production_id = 2), - [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__statement, 2), - [56] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__statement, 2), - [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_definition_relation, 2, .production_id = 2), - [60] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_definition_relation, 2, .production_id = 2), - [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, .production_id = 1), - [64] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 1, .production_id = 1), - [66] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), - [68] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), - [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, .production_id = 3), - [72] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 1, .production_id = 3), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implementation_relation, 2, .production_id = 2), - [76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_implementation_relation, 2, .production_id = 2), - [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_identifier, 3, .production_id = 5), - [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_global_identifier, 3, .production_id = 5), - [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_references_relation, 2, .production_id = 2), - [84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_references_relation, 2, .production_id = 2), - [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_docstring, 2), - [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2), - [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reference_statement, 2, .production_id = 2), - [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [104] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [17] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [19] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(22), + [22] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(20), + [25] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(21), + [28] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(30), + [31] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(38), + [34] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_relationships_statement_repeat1, 2), + [36] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_relationships_statement_repeat1, 2), SHIFT_REPEAT(23), + [39] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_relationships_statement_repeat1, 2), SHIFT_REPEAT(24), + [42] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_relationships_statement_repeat1, 2), SHIFT_REPEAT(25), + [45] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_relationships_statement_repeat1, 2), SHIFT_REPEAT(26), + [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relationships_statement, 3, .production_id = 4), + [50] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), + [52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), + [54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), + [56] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_relationships_statement, 2, .production_id = 2), + [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 2, .production_id = 2), + [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 5, .production_id = 7), + [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 4, .production_id = 6), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_definition_statement, 3, .production_id = 4), + [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_definition_statement_repeat1, 2), + [70] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(23), + [73] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(24), + [76] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_definition_statement_repeat1, 2), SHIFT_REPEAT(25), + [79] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__statement, 2), + [81] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__statement, 2), + [83] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_references_relation, 2, .production_id = 2), + [85] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_references_relation, 2, .production_id = 2), + [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, .production_id = 1), + [89] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 1, .production_id = 1), + [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identifier, 1, .production_id = 3), + [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identifier, 1, .production_id = 3), + [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_definition_relation, 2, .production_id = 2), + [97] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_definition_relation, 2, .production_id = 2), + [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_implementation_relation, 2, .production_id = 2), + [101] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_implementation_relation, 2, .production_id = 2), + [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_identifier, 3, .production_id = 5), + [105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_global_identifier, 3, .production_id = 5), + [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_defined_by_relation, 2, .production_id = 2), + [109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_defined_by_relation, 2, .production_id = 2), + [111] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), + [113] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35), + [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_docstring, 2), + [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2), + [127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_reference_statement, 2, .production_id = 2), + [129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [133] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), }; #ifdef __cplusplus diff --git a/cmd/tests/snapshots/input/relationships/defined_by.repro b/cmd/tests/snapshots/input/relationships/defined_by.repro new file mode 100644 index 00000000..e35a4f8f --- /dev/null +++ b/cmd/tests/snapshots/input/relationships/defined_by.repro @@ -0,0 +1,7 @@ +definition M_f. + +definition C1_f. + +reference C2_f. + +relationships C2_f. defined_by C1_f. references M_f. diff --git a/cmd/tests/snapshots/output/relationships/defined_by.repro b/cmd/tests/snapshots/output/relationships/defined_by.repro new file mode 100755 index 00000000..7f3beaee --- /dev/null +++ b/cmd/tests/snapshots/output/relationships/defined_by.repro @@ -0,0 +1,15 @@ + definition M_f. +# ^^^^ definition defined_by.repro/M_f. +# documentation signature of M_f. + + definition C1_f. +# ^^^^^ definition defined_by.repro/C1_f. +# documentation signature of C1_f. + + reference C2_f. +# ^^^^^ reference defined_by.repro/C1_f. + + relationships C2_f. defined_by C1_f. references M_f. +# ^^^^^ reference defined_by.repro/C1_f. +# ^^^^ reference defined_by.repro/M_f. + diff --git a/cmd/tests/snapshots/output/relationships/dump.lsif b/cmd/tests/snapshots/output/relationships/dump.lsif index 0d94aff6..d59ebc64 100755 --- a/cmd/tests/snapshots/output/relationships/dump.lsif +++ b/cmd/tests/snapshots/output/relationships/dump.lsif @@ -1,114 +1,114 @@ {"id":1,"version":"0.4.3","projectRoot":"file:/root","positionEncoding":"utf-8","toolInfo":{"name":"reprolang","version":"1.0.0"},"type":"vertex","label":"metaData"} -{"id":2,"type":"vertex","label":"document","uri":"file:/root/mixed.repro"} -{"id":3,"type":"vertex","label":"definitionResult"} -{"id":4,"type":"vertex","label":"resultSet"} -{"id":5,"type":"vertex","label":"referenceResult"} -{"id":6,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local1"}}} -{"id":7,"type":"edge","label":"textDocument/definition","inV":3,"outV":4} -{"id":8,"type":"edge","label":"textDocument/references","inV":5,"outV":4} -{"id":9,"type":"edge","label":"textDocument/hover","inV":6,"outV":4} -{"id":10,"type":"vertex","label":"definitionResult"} -{"id":11,"type":"vertex","label":"resultSet"} -{"id":12,"type":"vertex","label":"referenceResult"} -{"id":13,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local2"}}} -{"id":14,"type":"edge","label":"textDocument/definition","inV":10,"outV":11} -{"id":15,"type":"edge","label":"textDocument/references","inV":12,"outV":11} -{"id":16,"type":"edge","label":"textDocument/hover","inV":13,"outV":11} -{"id":17,"type":"vertex","label":"definitionResult"} -{"id":18,"type":"vertex","label":"resultSet"} -{"id":19,"type":"vertex","label":"referenceResult"} -{"id":20,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local3"}}} -{"id":21,"type":"edge","label":"textDocument/definition","inV":17,"outV":18} -{"id":22,"type":"edge","label":"textDocument/references","inV":19,"outV":18} -{"id":23,"type":"edge","label":"textDocument/hover","inV":20,"outV":18} -{"id":24,"type":"vertex","label":"definitionResult"} -{"id":25,"type":"vertex","label":"resultSet"} -{"id":26,"type":"vertex","label":"referenceResult"} -{"id":27,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local4"}}} -{"id":28,"type":"edge","label":"textDocument/definition","inV":24,"outV":25} -{"id":29,"type":"edge","label":"textDocument/references","inV":26,"outV":25} -{"id":30,"type":"edge","label":"textDocument/hover","inV":27,"outV":25} -{"id":31,"type":"vertex","label":"range","start":{"line":0,"character":11},"end":{"line":0,"character":17}} -{"id":32,"type":"edge","label":"next","inV":4,"outV":31} -{"id":33,"type":"edge","label":"item","inVs":[31],"outV":3,"document":2} -{"id":34,"type":"vertex","label":"implementationResult"} -{"id":35,"type":"edge","label":"textDocument/implementation","inV":34,"outV":25} -{"id":36,"type":"edge","label":"item","inVs":[31],"outV":34,"document":2} -{"id":37,"type":"edge","label":"item","inVs":[31],"outV":12,"document":2} -{"id":38,"type":"edge","label":"item","inVs":[12],"outV":5,"document":2} -{"id":39,"type":"edge","label":"item","inVs":[31],"outV":5,"document":2} -{"id":40,"type":"vertex","label":"range","start":{"line":1,"character":11},"end":{"line":1,"character":17}} -{"id":41,"type":"edge","label":"next","inV":11,"outV":40} -{"id":42,"type":"edge","label":"item","inVs":[40],"outV":10,"document":2} -{"id":43,"type":"edge","label":"item","inVs":[40],"outV":26,"document":2} -{"id":44,"type":"edge","label":"item","inVs":[26],"outV":12,"document":2} -{"id":45,"type":"edge","label":"item","inVs":[40],"outV":12,"document":2} -{"id":46,"type":"vertex","label":"range","start":{"line":2,"character":11},"end":{"line":2,"character":17}} -{"id":47,"type":"edge","label":"next","inV":18,"outV":46} -{"id":48,"type":"edge","label":"item","inVs":[46],"outV":17,"document":2} -{"id":49,"type":"edge","label":"item","inVs":[46],"outV":19,"document":2} -{"id":50,"type":"vertex","label":"range","start":{"line":3,"character":11},"end":{"line":3,"character":17}} -{"id":51,"type":"edge","label":"next","inV":25,"outV":50} -{"id":52,"type":"edge","label":"item","inVs":[50],"outV":24,"document":2} -{"id":53,"type":"vertex","label":"implementationResult"} -{"id":54,"type":"edge","label":"textDocument/implementation","inV":53,"outV":4} -{"id":55,"type":"edge","label":"item","inVs":[50],"outV":53,"document":2} -{"id":56,"type":"edge","label":"item","inVs":[50],"outV":12,"document":2} -{"id":57,"type":"edge","label":"item","inVs":[12],"outV":26,"document":2} -{"id":58,"type":"edge","label":"item","inVs":[50],"outV":26,"document":2} -{"id":59,"type":"vertex","label":"range","start":{"line":3,"character":29},"end":{"line":3,"character":35}} -{"id":60,"type":"edge","label":"next","inV":4,"outV":59} -{"id":61,"type":"edge","label":"item","inVs":[59],"outV":5,"document":2} -{"id":62,"type":"vertex","label":"range","start":{"line":3,"character":47},"end":{"line":3,"character":53}} -{"id":63,"type":"edge","label":"next","inV":11,"outV":62} -{"id":64,"type":"edge","label":"item","inVs":[62],"outV":12,"document":2} -{"id":65,"type":"vertex","label":"range","start":{"line":3,"character":67},"end":{"line":3,"character":73}} -{"id":66,"type":"edge","label":"next","inV":18,"outV":65} -{"id":67,"type":"edge","label":"item","inVs":[65],"outV":19,"document":2} -{"id":68,"type":"edge","label":"contains","inVs":[31,40,46,50,59,62,65],"outV":2} -{"id":69,"type":"vertex","label":"document","uri":"file:/root/references.repro"} -{"id":70,"type":"vertex","label":"definitionResult"} -{"id":71,"type":"vertex","label":"resultSet"} -{"id":72,"type":"vertex","label":"referenceResult"} -{"id":73,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local1"}}} -{"id":74,"type":"edge","label":"textDocument/definition","inV":70,"outV":71} -{"id":75,"type":"edge","label":"textDocument/references","inV":72,"outV":71} -{"id":76,"type":"edge","label":"textDocument/hover","inV":73,"outV":71} -{"id":77,"type":"vertex","label":"definitionResult"} -{"id":78,"type":"vertex","label":"resultSet"} -{"id":79,"type":"vertex","label":"referenceResult"} -{"id":80,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local2"}}} -{"id":81,"type":"edge","label":"textDocument/definition","inV":77,"outV":78} -{"id":82,"type":"edge","label":"textDocument/references","inV":79,"outV":78} -{"id":83,"type":"edge","label":"textDocument/hover","inV":80,"outV":78} -{"id":84,"type":"vertex","label":"range","start":{"line":0,"character":11},"end":{"line":0,"character":17}} -{"id":85,"type":"edge","label":"next","inV":71,"outV":84} -{"id":86,"type":"edge","label":"item","inVs":[84],"outV":70,"document":69} -{"id":87,"type":"vertex","label":"resultSet"} -{"id":88,"type":"vertex","label":"referenceResult"} -{"id":89,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown"}}} -{"id":90,"type":"edge","label":"textDocument/references","inV":88,"outV":87} -{"id":91,"type":"edge","label":"textDocument/hover","inV":89,"outV":87} -{"id":92,"type":"vertex","label":"moniker","identifier":"local 4","kind":"import","scheme":"local"} -{"id":93,"type":"edge","label":"moniker","inV":92,"outV":87} -{"id":94,"type":"vertex","label":"implementationResult"} -{"id":95,"type":"edge","label":"textDocument/implementation","inV":94,"outV":87} -{"id":96,"type":"edge","label":"item","inVs":[84],"outV":94,"document":69} -{"id":97,"type":"edge","label":"item","inVs":[84],"outV":79,"document":69} -{"id":98,"type":"edge","label":"item","inVs":[79],"outV":72,"document":69} -{"id":99,"type":"edge","label":"item","inVs":[84],"outV":72,"document":69} -{"id":100,"type":"vertex","label":"range","start":{"line":1,"character":11},"end":{"line":1,"character":17}} -{"id":101,"type":"edge","label":"next","inV":78,"outV":100} -{"id":102,"type":"edge","label":"item","inVs":[100],"outV":77,"document":69} -{"id":103,"type":"edge","label":"item","inVs":[100],"outV":88,"document":69} -{"id":104,"type":"edge","label":"item","inVs":[100],"outV":72,"document":69} -{"id":105,"type":"edge","label":"item","inVs":[88,72],"outV":79,"document":69} -{"id":106,"type":"edge","label":"item","inVs":[100],"outV":79,"document":69} -{"id":107,"type":"vertex","label":"range","start":{"line":1,"character":29},"end":{"line":1,"character":35}} -{"id":108,"type":"edge","label":"next","inV":71,"outV":107} -{"id":109,"type":"edge","label":"item","inVs":[107],"outV":72,"document":69} -{"id":110,"type":"edge","label":"contains","inVs":[84,100,107],"outV":69} -{"id":111,"type":"vertex","label":"document","uri":"file:/root/type_defines.repro"} +{"id":2,"type":"vertex","label":"definitionResult"} +{"id":3,"type":"vertex","label":"resultSet"} +{"id":4,"type":"vertex","label":"referenceResult"} +{"id":5,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown"}}} +{"id":6,"type":"edge","label":"textDocument/definition","inV":2,"outV":3} +{"id":7,"type":"edge","label":"textDocument/references","inV":4,"outV":3} +{"id":8,"type":"edge","label":"textDocument/hover","inV":5,"outV":3} +{"id":9,"type":"vertex","label":"moniker","identifier":"reprolang repro_manager relationships 1.0.0 defined_by.repro/C1_f.","kind":"export","scheme":"reprolang"} +{"id":10,"type":"edge","label":"moniker","inV":9,"outV":3} +{"id":11,"name":"relationships","version":"1.0.0","manager":"repro_manager","type":"vertex","label":"packageInformation"} +{"id":12,"type":"edge","label":"packageInformation","inV":11,"outV":9} +{"id":13,"type":"vertex","label":"definitionResult"} +{"id":14,"type":"vertex","label":"resultSet"} +{"id":15,"type":"vertex","label":"referenceResult"} +{"id":16,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of M_f."}}} +{"id":17,"type":"edge","label":"textDocument/definition","inV":13,"outV":14} +{"id":18,"type":"edge","label":"textDocument/references","inV":15,"outV":14} +{"id":19,"type":"edge","label":"textDocument/hover","inV":16,"outV":14} +{"id":20,"type":"vertex","label":"moniker","identifier":"reprolang repro_manager relationships 1.0.0 defined_by.repro/M_f.","kind":"export","scheme":"reprolang"} +{"id":21,"type":"edge","label":"moniker","inV":20,"outV":14} +{"id":22,"type":"edge","label":"packageInformation","inV":11,"outV":20} +{"id":23,"type":"vertex","label":"document","uri":"file:/root/defined_by.repro"} +{"id":24,"type":"vertex","label":"range","start":{"line":0,"character":11},"end":{"line":0,"character":15}} +{"id":25,"type":"edge","label":"next","inV":14,"outV":24} +{"id":26,"type":"edge","label":"item","inVs":[24],"outV":13,"document":23} +{"id":27,"type":"edge","label":"item","inVs":[24],"outV":4,"document":23} +{"id":28,"type":"edge","label":"item","inVs":[4],"outV":15,"document":23} +{"id":29,"type":"edge","label":"item","inVs":[24],"outV":15,"document":23} +{"id":30,"type":"vertex","label":"range","start":{"line":2,"character":11},"end":{"line":2,"character":16}} +{"id":31,"type":"edge","label":"next","inV":3,"outV":30} +{"id":32,"type":"edge","label":"item","inVs":[30],"outV":2,"document":23} +{"id":33,"type":"edge","label":"item","inVs":[30],"outV":4,"document":23} +{"id":34,"type":"vertex","label":"range","start":{"line":4,"character":10},"end":{"line":4,"character":15}} +{"id":35,"type":"edge","label":"next","inV":3,"outV":34} +{"id":36,"type":"edge","label":"item","inVs":[34],"outV":4,"document":23} +{"id":37,"type":"vertex","label":"range","start":{"line":6,"character":31},"end":{"line":6,"character":36}} +{"id":38,"type":"edge","label":"next","inV":3,"outV":37} +{"id":39,"type":"edge","label":"item","inVs":[37],"outV":4,"document":23} +{"id":40,"type":"vertex","label":"range","start":{"line":6,"character":48},"end":{"line":6,"character":52}} +{"id":41,"type":"edge","label":"next","inV":14,"outV":40} +{"id":42,"type":"edge","label":"item","inVs":[40],"outV":15,"document":23} +{"id":43,"type":"edge","label":"contains","inVs":[24,30,34,37,40],"outV":23} +{"id":44,"type":"vertex","label":"document","uri":"file:/root/mixed.repro"} +{"id":45,"type":"vertex","label":"definitionResult"} +{"id":46,"type":"vertex","label":"resultSet"} +{"id":47,"type":"vertex","label":"referenceResult"} +{"id":48,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local1"}}} +{"id":49,"type":"edge","label":"textDocument/definition","inV":45,"outV":46} +{"id":50,"type":"edge","label":"textDocument/references","inV":47,"outV":46} +{"id":51,"type":"edge","label":"textDocument/hover","inV":48,"outV":46} +{"id":52,"type":"vertex","label":"definitionResult"} +{"id":53,"type":"vertex","label":"resultSet"} +{"id":54,"type":"vertex","label":"referenceResult"} +{"id":55,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local2"}}} +{"id":56,"type":"edge","label":"textDocument/definition","inV":52,"outV":53} +{"id":57,"type":"edge","label":"textDocument/references","inV":54,"outV":53} +{"id":58,"type":"edge","label":"textDocument/hover","inV":55,"outV":53} +{"id":59,"type":"vertex","label":"definitionResult"} +{"id":60,"type":"vertex","label":"resultSet"} +{"id":61,"type":"vertex","label":"referenceResult"} +{"id":62,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local3"}}} +{"id":63,"type":"edge","label":"textDocument/definition","inV":59,"outV":60} +{"id":64,"type":"edge","label":"textDocument/references","inV":61,"outV":60} +{"id":65,"type":"edge","label":"textDocument/hover","inV":62,"outV":60} +{"id":66,"type":"vertex","label":"definitionResult"} +{"id":67,"type":"vertex","label":"resultSet"} +{"id":68,"type":"vertex","label":"referenceResult"} +{"id":69,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local4"}}} +{"id":70,"type":"edge","label":"textDocument/definition","inV":66,"outV":67} +{"id":71,"type":"edge","label":"textDocument/references","inV":68,"outV":67} +{"id":72,"type":"edge","label":"textDocument/hover","inV":69,"outV":67} +{"id":73,"type":"vertex","label":"range","start":{"line":0,"character":11},"end":{"line":0,"character":17}} +{"id":74,"type":"edge","label":"next","inV":46,"outV":73} +{"id":75,"type":"edge","label":"item","inVs":[73],"outV":45,"document":44} +{"id":76,"type":"vertex","label":"implementationResult"} +{"id":77,"type":"edge","label":"textDocument/implementation","inV":76,"outV":67} +{"id":78,"type":"edge","label":"item","inVs":[73],"outV":76,"document":44} +{"id":79,"type":"edge","label":"item","inVs":[73],"outV":54,"document":44} +{"id":80,"type":"edge","label":"item","inVs":[54],"outV":47,"document":44} +{"id":81,"type":"edge","label":"item","inVs":[73],"outV":47,"document":44} +{"id":82,"type":"vertex","label":"range","start":{"line":1,"character":11},"end":{"line":1,"character":17}} +{"id":83,"type":"edge","label":"next","inV":53,"outV":82} +{"id":84,"type":"edge","label":"item","inVs":[82],"outV":52,"document":44} +{"id":85,"type":"edge","label":"item","inVs":[82],"outV":68,"document":44} +{"id":86,"type":"edge","label":"item","inVs":[68],"outV":54,"document":44} +{"id":87,"type":"edge","label":"item","inVs":[82],"outV":54,"document":44} +{"id":88,"type":"vertex","label":"range","start":{"line":2,"character":11},"end":{"line":2,"character":17}} +{"id":89,"type":"edge","label":"next","inV":60,"outV":88} +{"id":90,"type":"edge","label":"item","inVs":[88],"outV":59,"document":44} +{"id":91,"type":"edge","label":"item","inVs":[88],"outV":61,"document":44} +{"id":92,"type":"vertex","label":"range","start":{"line":3,"character":11},"end":{"line":3,"character":17}} +{"id":93,"type":"edge","label":"next","inV":67,"outV":92} +{"id":94,"type":"edge","label":"item","inVs":[92],"outV":66,"document":44} +{"id":95,"type":"vertex","label":"implementationResult"} +{"id":96,"type":"edge","label":"textDocument/implementation","inV":95,"outV":46} +{"id":97,"type":"edge","label":"item","inVs":[92],"outV":95,"document":44} +{"id":98,"type":"edge","label":"item","inVs":[92],"outV":54,"document":44} +{"id":99,"type":"edge","label":"item","inVs":[54],"outV":68,"document":44} +{"id":100,"type":"edge","label":"item","inVs":[92],"outV":68,"document":44} +{"id":101,"type":"vertex","label":"range","start":{"line":3,"character":29},"end":{"line":3,"character":35}} +{"id":102,"type":"edge","label":"next","inV":46,"outV":101} +{"id":103,"type":"edge","label":"item","inVs":[101],"outV":47,"document":44} +{"id":104,"type":"vertex","label":"range","start":{"line":3,"character":47},"end":{"line":3,"character":53}} +{"id":105,"type":"edge","label":"next","inV":53,"outV":104} +{"id":106,"type":"edge","label":"item","inVs":[104],"outV":54,"document":44} +{"id":107,"type":"vertex","label":"range","start":{"line":3,"character":67},"end":{"line":3,"character":73}} +{"id":108,"type":"edge","label":"next","inV":60,"outV":107} +{"id":109,"type":"edge","label":"item","inVs":[107],"outV":61,"document":44} +{"id":110,"type":"edge","label":"contains","inVs":[73,82,88,92,101,104,107],"outV":44} +{"id":111,"type":"vertex","label":"document","uri":"file:/root/references.repro"} {"id":112,"type":"vertex","label":"definitionResult"} {"id":113,"type":"vertex","label":"resultSet"} {"id":114,"type":"vertex","label":"referenceResult"} @@ -143,9 +143,51 @@ {"id":143,"type":"edge","label":"next","inV":120,"outV":142} {"id":144,"type":"edge","label":"item","inVs":[142],"outV":119,"document":111} {"id":145,"type":"edge","label":"item","inVs":[142],"outV":130,"document":111} -{"id":146,"type":"edge","label":"item","inVs":[130],"outV":121,"document":111} -{"id":147,"type":"edge","label":"item","inVs":[142],"outV":121,"document":111} -{"id":148,"type":"vertex","label":"range","start":{"line":1,"character":31},"end":{"line":1,"character":37}} -{"id":149,"type":"edge","label":"next","inV":113,"outV":148} -{"id":150,"type":"edge","label":"item","inVs":[148],"outV":114,"document":111} -{"id":151,"type":"edge","label":"contains","inVs":[126,142,148],"outV":111} +{"id":146,"type":"edge","label":"item","inVs":[142],"outV":114,"document":111} +{"id":147,"type":"edge","label":"item","inVs":[130,114],"outV":121,"document":111} +{"id":148,"type":"edge","label":"item","inVs":[142],"outV":121,"document":111} +{"id":149,"type":"vertex","label":"range","start":{"line":1,"character":29},"end":{"line":1,"character":35}} +{"id":150,"type":"edge","label":"next","inV":113,"outV":149} +{"id":151,"type":"edge","label":"item","inVs":[149],"outV":114,"document":111} +{"id":152,"type":"edge","label":"contains","inVs":[126,142,149],"outV":111} +{"id":153,"type":"vertex","label":"document","uri":"file:/root/type_defines.repro"} +{"id":154,"type":"vertex","label":"definitionResult"} +{"id":155,"type":"vertex","label":"resultSet"} +{"id":156,"type":"vertex","label":"referenceResult"} +{"id":157,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local1"}}} +{"id":158,"type":"edge","label":"textDocument/definition","inV":154,"outV":155} +{"id":159,"type":"edge","label":"textDocument/references","inV":156,"outV":155} +{"id":160,"type":"edge","label":"textDocument/hover","inV":157,"outV":155} +{"id":161,"type":"vertex","label":"definitionResult"} +{"id":162,"type":"vertex","label":"resultSet"} +{"id":163,"type":"vertex","label":"referenceResult"} +{"id":164,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown","value":"signature of local2"}}} +{"id":165,"type":"edge","label":"textDocument/definition","inV":161,"outV":162} +{"id":166,"type":"edge","label":"textDocument/references","inV":163,"outV":162} +{"id":167,"type":"edge","label":"textDocument/hover","inV":164,"outV":162} +{"id":168,"type":"vertex","label":"range","start":{"line":0,"character":11},"end":{"line":0,"character":17}} +{"id":169,"type":"edge","label":"next","inV":155,"outV":168} +{"id":170,"type":"edge","label":"item","inVs":[168],"outV":154,"document":153} +{"id":171,"type":"vertex","label":"resultSet"} +{"id":172,"type":"vertex","label":"referenceResult"} +{"id":173,"type":"vertex","label":"hoverResult","result":{"contents":{"kind":"markdown"}}} +{"id":174,"type":"edge","label":"textDocument/references","inV":172,"outV":171} +{"id":175,"type":"edge","label":"textDocument/hover","inV":173,"outV":171} +{"id":176,"type":"vertex","label":"moniker","identifier":"local 4","kind":"import","scheme":"local"} +{"id":177,"type":"edge","label":"moniker","inV":176,"outV":171} +{"id":178,"type":"vertex","label":"implementationResult"} +{"id":179,"type":"edge","label":"textDocument/implementation","inV":178,"outV":171} +{"id":180,"type":"edge","label":"item","inVs":[168],"outV":178,"document":153} +{"id":181,"type":"edge","label":"item","inVs":[168],"outV":163,"document":153} +{"id":182,"type":"edge","label":"item","inVs":[163],"outV":156,"document":153} +{"id":183,"type":"edge","label":"item","inVs":[168],"outV":156,"document":153} +{"id":184,"type":"vertex","label":"range","start":{"line":1,"character":11},"end":{"line":1,"character":17}} +{"id":185,"type":"edge","label":"next","inV":162,"outV":184} +{"id":186,"type":"edge","label":"item","inVs":[184],"outV":161,"document":153} +{"id":187,"type":"edge","label":"item","inVs":[184],"outV":172,"document":153} +{"id":188,"type":"edge","label":"item","inVs":[172],"outV":163,"document":153} +{"id":189,"type":"edge","label":"item","inVs":[184],"outV":163,"document":153} +{"id":190,"type":"vertex","label":"range","start":{"line":1,"character":31},"end":{"line":1,"character":37}} +{"id":191,"type":"edge","label":"next","inV":155,"outV":190} +{"id":192,"type":"edge","label":"item","inVs":[190],"outV":156,"document":153} +{"id":193,"type":"edge","label":"contains","inVs":[168,184,190],"outV":153} diff --git a/docs/scip.md b/docs/scip.md index 167fadbc..6a21ff17 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -55,7 +55,7 @@ Document defines the metadata about a source file on disk. | **language** | string | The string ID for the programming language this file is written in. The `Language` enum contains the names of most common programming languages. This field is typed as a string to permit any programming langauge, including ones that are not specified by the `Language` enum. | | **relative_path** | string | (Required) Unique path to the text document. | | repeated **occurrences** | Occurrence | Occurrences that appear in this file. | -| repeated **symbols** | SymbolInformation | Symbols that are defined within this document. | +| repeated **symbols** | SymbolInformation | Symbols that are "defined" within this document. | Additional notes on **relative_path**: @@ -69,6 +69,14 @@ Additional notes on **relative_path**: 5. The path must be canonical; it cannot include empty components ('//'), or '.' or '..'. +Additional notes on **symbols**: + +Symbols that are "defined" within this document. + +This should include symbols which technically do not have any definition, +but have a reference and are defined by some other symbol (see +Relationship.is_definition). + ### Index Index represents a complete SCIP index for a workspace this is rooted at a @@ -162,6 +170,22 @@ NOTE: This corresponds to a module in Go and JVM languages. | **is_reference** | bool | When resolving "Find references", this field documents what other symbols should be included together with this symbol. For example, consider the following TypeScript code that defines two symbols `Animal#sound()` and `Dog#sound()`: `ts interface Animal { ^^^^^^ definition Animal# sound(): string ^^^^^ definition Animal#sound() } class Dog implements Animal { ^^^ definition Dog#, implementation_symbols = Animal# public sound(): string { return "woof" } ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), implementation_symbols = Animal#sound() } const animal: Animal = new Dog() ^^^^^^ reference Animal# console.log(animal.sound()) ^^^^^ reference Animal#sound() ` Doing "Find references" on the symbol `Animal#sound()` should return references to the `Dog#sound()` method as well. Vice-versa, doing "Find references" on the `Dog#sound()` method should include references to the `Animal#sound()` method as well. | | **is_implementation** | bool | Similar to `references_symbols` but for "Go to implementation". It's common for the `implementation_symbols` and `references_symbols` fields have the same values but that's not always the case. In the TypeScript example above, observe that `implementation_symbols` has the value `"Animal#"` for the "Dog#" symbol while `references_symbols` is empty. When requesting "Find references" on the "Animal#" symbol we don't want to include references to "Dog#" even if "Go to implementation" on the "Animal#" symbol should navigate to the "Dog#" symbol. | | **is_type_definition** | bool | Similar to `references_symbols` but for "Go to type definition". | +| **is_definition** | bool | Allows overriding the behavior of "Go to definition" and "Find references" for symbols which do not have a definition of their own or could potentially have multiple definitions. | + +Additional notes on **is_definition**: + +Allows overriding the behavior of "Go to definition" and "Find references" +for symbols which do not have a definition of their own or could +potentially have multiple definitions. + +For example, in a language with single inheritance and no field overriding, +inherited fields can reuse the same symbol as the ancestor which declares +the field. In such a situation, is_definition is not needed. + +On the other hand, in languages with single inheritance and some form +of mixins, you can use is_definition to relate the symbol to the +matching symbol in ancestor classes, and is_reference to relate the +symbol to the matching symbol in mixins. ### Symbol diff --git a/scip.proto b/scip.proto index eacffde1..735e60e8 100644 --- a/scip.proto +++ b/scip.proto @@ -85,7 +85,11 @@ message Document { string relative_path = 1; // Occurrences that appear in this file. repeated Occurrence occurrences = 2; - // Symbols that are defined within this document. + // Symbols that are "defined" within this document. + // + // This should include symbols which technically do not have any definition, + // but have a reference and are defined by some other symbol (see + // Relationship.is_definition). repeated SymbolInformation symbols = 3; } @@ -219,6 +223,19 @@ message Relationship { bool is_implementation = 3; // Similar to `references_symbols` but for "Go to type definition". bool is_type_definition = 4; + // Allows overriding the behavior of "Go to definition" and "Find references" + // for symbols which do not have a definition of their own or could + // potentially have multiple definitions. + // + // For example, in a language with single inheritance and no field overriding, + // inherited fields can reuse the same symbol as the ancestor which declares + // the field. In such a situation, is_definition is not needed. + // + // On the other hand, in languages with single inheritance and some form + // of mixins, you can use is_definition to relate the symbol to the + // matching symbol in ancestor classes, and is_reference to relate the + // symbol to the matching symbol in mixins. + bool is_definition = 5; } // SymbolRole declares what "role" a symbol has in an occurrence. A role is