From acbe999b59d637705ccb4776d4dda72666a71b6a Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Thu, 26 Sep 2024 12:14:48 +0800 Subject: [PATCH 01/25] ci: Fix workflow breakage on version bump (#279) --- .github/workflows/build-env-docker.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-env-docker.yml b/.github/workflows/build-env-docker.yml index a72a6797..43bbf702 100644 --- a/.github/workflows/build-env-docker.yml +++ b/.github/workflows/build-env-docker.yml @@ -76,7 +76,7 @@ jobs: - name: Upload digest uses: actions/upload-artifact@v4 with: - name: digests + name: digests-${{ matrix.runs-on }} path: /tmp/digests/* if-no-files-found: error retention-days: 1 @@ -108,7 +108,8 @@ jobs: - name: Download digests uses: actions/download-artifact@v4 with: - name: digests + pattern: digests-* + merge-multiple: true path: /tmp/digests - name: Set up Docker Buildx From da9a03c59cddd95cf478a83687c855486a0597ab Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Thu, 26 Sep 2024 12:32:54 +0800 Subject: [PATCH 02/25] ci: Fix workflow breakage on version bump (attempt 2) (#280) --- .github/workflows/build-env-docker.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-env-docker.yml b/.github/workflows/build-env-docker.yml index 43bbf702..1bef53ee 100644 --- a/.github/workflows/build-env-docker.yml +++ b/.github/workflows/build-env-docker.yml @@ -72,11 +72,14 @@ jobs: mkdir -p /tmp/digests digest="${{ steps.build.outputs.digest }}" touch "/tmp/digests/${digest#sha256:}" + DIGEST_SUFFIX=${{ matrix.platform }} + DIGEST_SUFFIX="${DIGEST_SUFFIX//\//_}" + echo "DIGEST_SUFFIX=$DIGEST_SUFFIX" >> $GITHUB_ENV - name: Upload digest uses: actions/upload-artifact@v4 with: - name: digests-${{ matrix.runs-on }} + name: digests-${{ env.DIGEST_SUFFIX }} path: /tmp/digests/* if-no-files-found: error retention-days: 1 From 980b0fdec4a0be150ee515ba296819aff97918be Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Wed, 16 Oct 2024 17:34:58 +0800 Subject: [PATCH 03/25] chore: Bump Yarn and nan package versions (#286) The old nan version caused a prettier failure in CI. The old Yarn version triggered a warning when running locally: warning Your current version of Yarn is out of date. The latest version is "1.22.22", while you're on "1.22.17". --- .tool-versions | 10 +++++----- cmd/scip/tests/reprolang/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.tool-versions b/.tool-versions index d2e62088..7fb73813 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,6 +1,6 @@ -golang 1.20.14 -nodejs 16.20.2 +golang 1.20.14 +nodejs 16.20.2 shellcheck 0.7.1 -yarn 1.22.17 -rust 1.71.0 -python 3.11.9 +yarn 1.22.22 +rust 1.71.0 +python 3.11.9 diff --git a/cmd/scip/tests/reprolang/package.json b/cmd/scip/tests/reprolang/package.json index dcf4cd7f..be57f68c 100644 --- a/cmd/scip/tests/reprolang/package.json +++ b/cmd/scip/tests/reprolang/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "dependencies": { - "nan": "^2.15.0" + "nan": "^2.22.0" }, "devDependencies": { "tree-sitter-cli": "0.21.0" diff --git a/yarn.lock b/yarn.lock index da305ddf..a779b48a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,10 +12,10 @@ google-protobuf@^3.20.1: resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.20.1.tgz#1b255c2b59bcda7c399df46c65206aa3c7a0ce8b" integrity sha512-XMf1+O32FjYIV3CYu6Tuh5PNbfNEU5Xu22X+Xkdb/DUexFlCzhvv7d5Iirm4AOwn8lv4al1YvIhzGrg2j9Zfzw== -nan@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nan@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== prettier@^3.3.3: version "3.3.3" From a43c9c984a0c3d32d24bedb30a51578776ea85bd Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Wed, 16 Oct 2024 17:43:25 +0800 Subject: [PATCH 04/25] chore: Remove project board workflow (#285) We no longer use GitHub project boards so this isn't needed --- .github/workflows/project-board.yml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/workflows/project-board.yml diff --git a/.github/workflows/project-board.yml b/.github/workflows/project-board.yml deleted file mode 100644 index 19fb110e..00000000 --- a/.github/workflows/project-board.yml +++ /dev/null @@ -1,26 +0,0 @@ -# Copied from https://github.com/sourcegraph/scip-typescript/blob/main/.github/workflows/project-board.yml -name: Project Board -on: - issues: - types: - - opened -jobs: - # Uses issues beta API - see https://docs.github.com/en/issues/trying-out-the-new-projects-experience/automating-projects#example-workflow - code-intel-board: - runs-on: ubuntu-latest - env: - PROJECT_ID: MDExOlByb2plY3ROZXh0NDI1MA== # https://github.com/orgs/sourcegraph/projects/211 - GITHUB_TOKEN: ${{ secrets.GH_PROJECTS_ACTION_TOKEN }} - steps: - - name: Add to board - env: - NODE_ID: ${{ github.event.issue.node_id }} - run: | - gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query=' - mutation($project:ID!, $node_id:ID!) { - addProjectNextItem(input: {projectId: $project, contentId: $node_id}) { - projectNextItem { - id - } - } - }' -f project=$PROJECT_ID -f node_id=$NODE_ID From 72e45aa20140149f0241aaca4d7284c2fe794b95 Mon Sep 17 00:00:00 2001 From: Matthew Nitschke <39171685+matthewnitschke-wk@users.noreply.github.com> Date: Wed, 16 Oct 2024 22:12:48 -0600 Subject: [PATCH 05/25] Resolved formatting issues in test command output (#281) --- cmd/scip/main_test.go | 34 +++++++++++++++++----------------- cmd/scip/test.go | 24 +++++++++++++++++------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/cmd/scip/main_test.go b/cmd/scip/main_test.go index 307b88a3..556e60c2 100644 --- a/cmd/scip/main_test.go +++ b/cmd/scip/main_test.go @@ -134,38 +134,38 @@ func TestSCIPTests(t *testing.T) { {"roles", autogold.Expect("✓ passes.repro (3 assertions)\n"), autogold.Expect(`✗ fails-wrong-role.repro - Failure - row: 0, column: 13 + Failure [Ln: 1, Col: 13] Expected: 'reference reprolang repro_manager roles 1.0.0 fails-wrong-role.repro/hello().' - Actual: - - 'definition reprolang repro_manager roles 1.0.0 fails-wrong-role.repro/hello().'✗ fails-wrong-symbol.repro - Failure - row: 0, column: 13 + Actual: 'definition reprolang repro_manager roles 1.0.0 fails-wrong-role.repro/hello().' +✗ fails-wrong-symbol.repro + Failure [Ln: 1, Col: 13] Expected: 'definition reprolang repro_manager roles 1.0.0 fails-wrong-role.repro/hello2().' - Actual: - - 'definition reprolang repro_manager roles 1.0.0 fails-wrong-symbol.repro/hello().'`), + Actual: 'definition reprolang repro_manager roles 1.0.0 fails-wrong-symbol.repro/hello().' +`), }, {"ranges", autogold.Expect("✓ passes.repro (3 assertions)\n"), autogold.Expect(`✗ fails.repro - Failure - row: 0, column: 10 + Failure [Ln: 1, Col: 10] Expected: 'definition passes.repro/hello().' - Actual: - - No attributes found`), + Actual: +`), }, {"diagnostics", autogold.Expect("✓ passes.repro (2 assertions)\n"), autogold.Expect(`✗ fails-incorrect-diagnostic.repro - Failure - row: 0, column: 11 + Failure [Ln: 1, Col: 11] Expected: 'diagnostic Warning:' 'THIS IS NOT CORRECT' - Actual: - - 'definition reprolang repro_manager diagnostics 1.0.0 fails-incorrect-diagnostic.repro/deprecatedMethod.' - - 'diagnostic Warning' - 'deprecated identifier'✗ fails-no-diagnostic.repro - Failure - row: 0, column: 11 + Actual: * 'definition reprolang repro_manager diagnostics 1.0.0 fails-incorrect-diagnostic.repro/deprecatedMethod.' + * 'diagnostic Warning' + 'deprecated identifier' +✗ fails-no-diagnostic.repro + Failure [Ln: 1, Col: 11] Expected: 'diagnostic Warning:' 'deprecated identifier' - Actual: - - 'definition reprolang repro_manager diagnostics 1.0.0 fails-no-diagnostic.repro/hello().'`), + Actual: 'definition reprolang repro_manager diagnostics 1.0.0 fails-no-diagnostic.repro/hello().' +`), }, } diff --git a/cmd/scip/test.go b/cmd/scip/test.go index 42e4d23a..3977ba10 100644 --- a/cmd/scip/test.go +++ b/cmd/scip/test.go @@ -142,7 +142,7 @@ func testMain( red.Fprintf(output, "✗ %s\n", document.RelativePath) for _, failure := range failures { - fmt.Fprintf(output, indent(failure, 4)) + fmt.Fprintf(output, indent(failure, 4)+"\n") } } else { green := color.New(color.FgGreen) @@ -421,21 +421,31 @@ func (s symbolAttributeTestCase) check(attr symbolAttribute) bool { func formatFailure(lineNumber int, testCase symbolAttributeTestCase, attributesAtLine []symbolAttribute) string { failureDesc := []string{ - fmt.Sprintf("Failure - row: %d, column: %d", lineNumber, testCase.attribute.start), + fmt.Sprintf("Failure [Ln: %d, Col: %d]", lineNumber+1, testCase.attribute.start), fmt.Sprintf(" Expected: '%s %s'", testCase.attribute.kind, testCase.attribute.data), } for _, add := range testCase.attribute.additionalData { failureDesc = append(failureDesc, indent(fmt.Sprintf("'%s'", add), 12)) } - failureDesc = append(failureDesc, " Actual:") if (len(attributesAtLine)) == 0 { - failureDesc = append(failureDesc, " - No attributes found") + failureDesc = append(failureDesc, " Actual: ") } else { - for _, attr := range attributesAtLine { - failureDesc = append(failureDesc, fmt.Sprintf(" - '%s %s'", attr.kind, attr.data)) + for i, attr := range attributesAtLine { + prefix := " " + if i == 0 { + prefix = "Actual:" + } + + if len(attributesAtLine) > 1 { + prefix += " *" + } else { + prefix += " " + } + + failureDesc = append(failureDesc, fmt.Sprintf(" %s '%s %s'", prefix, attr.kind, attr.data)) for _, add := range attr.additionalData { - failureDesc = append(failureDesc, indent(fmt.Sprintf("'%s'", add), 6)) + failureDesc = append(failureDesc, indent(fmt.Sprintf("'%s'", add), 12)) } } } From 6990baeaf77504d86f92f89721df2999b73ad42d Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Thu, 17 Oct 2024 12:57:20 +0800 Subject: [PATCH 06/25] chore: Bump rust-protobuf crates to 3.7.1 (#287) We also bump the Rust version to 1.74.0 as older Rust toolchains are unable to compile the protobuf dependency --- .tool-versions | 2 +- bindings/rust/Cargo.toml | 2 +- bindings/rust/src/generated/scip.rs | 379 +++++++++++++++++++++++++--- buf.gen.yaml | 2 +- dev/proto-generate.sh | 4 +- 5 files changed, 351 insertions(+), 38 deletions(-) diff --git a/.tool-versions b/.tool-versions index 7fb73813..073ee1d7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -2,5 +2,5 @@ golang 1.20.14 nodejs 16.20.2 shellcheck 0.7.1 yarn 1.22.22 -rust 1.71.0 +rust 1.74.0 python 3.11.9 diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index c17fe513..45f81ef5 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -17,7 +17,7 @@ rust-version = "1.60.0" [dependencies] # Keep in sync with dev/proto-generate.sh -protobuf = "=3.2.0" +protobuf = "=3.7.1" [dev-dependencies] pretty_assertions = "1.2.1" diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 5fae7a8d..19eb8ba0 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -1,5 +1,5 @@ -// This file is generated by rust-protobuf 3.2.0. Do not edit -// .proto file is parsed by protoc --rust-out=... +// This file is generated by rust-protobuf 3.7.1. Do not edit +// .proto file is parsed by protoc --rs_out=... // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -9,7 +9,6 @@ #![allow(unused_attributes)] #![cfg_attr(rustfmt, rustfmt::skip)] -#![allow(box_pointers)] #![allow(dead_code)] #![allow(missing_docs)] #![allow(non_camel_case_types)] @@ -23,7 +22,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_2_0; +const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_1; /// Index represents a complete SCIP index for a workspace this is rooted at a /// single directory. An Index message payload can have a large memory footprint @@ -31,8 +30,8 @@ const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_2_0; /// value at a time. To permit streaming consumption of an Index payload, the /// `metadata` field must appear at the start of the stream and must only appear /// once in the stream. Other field values may appear in any order. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Index) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Index { // message fields /// Metadata about this index. @@ -199,8 +198,8 @@ impl ::protobuf::reflect::ProtobufValue for Index { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Metadata) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Metadata { // message fields /// Which version of this protocol was used to generate this index? @@ -384,8 +383,8 @@ impl ::protobuf::reflect::ProtobufValue for Metadata { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.ToolInfo) +#[derive(PartialEq,Clone,Default,Debug)] pub struct ToolInfo { // message fields /// Name of the indexer that produced this index. @@ -546,8 +545,8 @@ impl ::protobuf::reflect::ProtobufValue for ToolInfo { } /// Document defines the metadata about a source file on disk. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Document) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Document { // message fields /// The string ID for the programming language this file is written in. @@ -829,8 +828,8 @@ impl ::protobuf::reflect::ProtobufValue for Document { /// /// Local symbols MUST only be used for entities which are local to a Document, /// and cannot be accessed from outside the Document. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Symbol) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Symbol { // message fields // @@protoc_insertion_point(field:scip.Symbol.scheme) @@ -992,8 +991,8 @@ impl ::protobuf::reflect::ProtobufValue for Symbol { /// Unit of packaging and distribution. /// /// NOTE: This corresponds to a module in Go and JVM languages. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Package) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Package { // message fields // @@protoc_insertion_point(field:scip.Package.manager) @@ -1150,8 +1149,8 @@ impl ::protobuf::reflect::ProtobufValue for Package { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Descriptor) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Descriptor { // message fields // @@protoc_insertion_point(field:scip.Descriptor.name) @@ -1385,6 +1384,22 @@ pub mod descriptor { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedSuffix" => ::std::option::Option::Some(Suffix::UnspecifiedSuffix), + "Namespace" => ::std::option::Option::Some(Suffix::Namespace), + "Type" => ::std::option::Option::Some(Suffix::Type), + "Term" => ::std::option::Option::Some(Suffix::Term), + "Method" => ::std::option::Option::Some(Suffix::Method), + "TypeParameter" => ::std::option::Option::Some(Suffix::TypeParameter), + "Parameter" => ::std::option::Option::Some(Suffix::Parameter), + "Meta" => ::std::option::Option::Some(Suffix::Meta), + "Local" => ::std::option::Option::Some(Suffix::Local), + "Macro" => ::std::option::Option::Some(Suffix::Macro), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [Suffix] = &[ Suffix::UnspecifiedSuffix, Suffix::Namespace, @@ -1439,8 +1454,8 @@ pub mod descriptor { /// SymbolInformation defines metadata about a symbol, such as the symbol's /// docstring or what package it's defined it. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.SymbolInformation) +#[derive(PartialEq,Clone,Default,Debug)] pub struct SymbolInformation { // message fields /// Identifier of this symbol, which can be referenced from `Occurence.symbol`. @@ -2004,6 +2019,97 @@ pub mod symbol_information { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedKind" => ::std::option::Option::Some(Kind::UnspecifiedKind), + "AbstractMethod" => ::std::option::Option::Some(Kind::AbstractMethod), + "Accessor" => ::std::option::Option::Some(Kind::Accessor), + "Array" => ::std::option::Option::Some(Kind::Array), + "Assertion" => ::std::option::Option::Some(Kind::Assertion), + "AssociatedType" => ::std::option::Option::Some(Kind::AssociatedType), + "Attribute" => ::std::option::Option::Some(Kind::Attribute), + "Axiom" => ::std::option::Option::Some(Kind::Axiom), + "Boolean" => ::std::option::Option::Some(Kind::Boolean), + "Class" => ::std::option::Option::Some(Kind::Class), + "Constant" => ::std::option::Option::Some(Kind::Constant), + "Constructor" => ::std::option::Option::Some(Kind::Constructor), + "Contract" => ::std::option::Option::Some(Kind::Contract), + "DataFamily" => ::std::option::Option::Some(Kind::DataFamily), + "Delegate" => ::std::option::Option::Some(Kind::Delegate), + "Enum" => ::std::option::Option::Some(Kind::Enum), + "EnumMember" => ::std::option::Option::Some(Kind::EnumMember), + "Error" => ::std::option::Option::Some(Kind::Error), + "Event" => ::std::option::Option::Some(Kind::Event), + "Extension" => ::std::option::Option::Some(Kind::Extension), + "Fact" => ::std::option::Option::Some(Kind::Fact), + "Field" => ::std::option::Option::Some(Kind::Field), + "File" => ::std::option::Option::Some(Kind::File), + "Function" => ::std::option::Option::Some(Kind::Function), + "Getter" => ::std::option::Option::Some(Kind::Getter), + "Grammar" => ::std::option::Option::Some(Kind::Grammar), + "Instance" => ::std::option::Option::Some(Kind::Instance), + "Interface" => ::std::option::Option::Some(Kind::Interface), + "Key" => ::std::option::Option::Some(Kind::Key), + "Lang" => ::std::option::Option::Some(Kind::Lang), + "Lemma" => ::std::option::Option::Some(Kind::Lemma), + "Library" => ::std::option::Option::Some(Kind::Library), + "Macro" => ::std::option::Option::Some(Kind::Macro), + "Method" => ::std::option::Option::Some(Kind::Method), + "MethodAlias" => ::std::option::Option::Some(Kind::MethodAlias), + "MethodReceiver" => ::std::option::Option::Some(Kind::MethodReceiver), + "MethodSpecification" => ::std::option::Option::Some(Kind::MethodSpecification), + "Message" => ::std::option::Option::Some(Kind::Message), + "Mixin" => ::std::option::Option::Some(Kind::Mixin), + "Modifier" => ::std::option::Option::Some(Kind::Modifier), + "Module" => ::std::option::Option::Some(Kind::Module), + "Namespace" => ::std::option::Option::Some(Kind::Namespace), + "Null" => ::std::option::Option::Some(Kind::Null), + "Number" => ::std::option::Option::Some(Kind::Number), + "Object" => ::std::option::Option::Some(Kind::Object), + "Operator" => ::std::option::Option::Some(Kind::Operator), + "Package" => ::std::option::Option::Some(Kind::Package), + "PackageObject" => ::std::option::Option::Some(Kind::PackageObject), + "Parameter" => ::std::option::Option::Some(Kind::Parameter), + "ParameterLabel" => ::std::option::Option::Some(Kind::ParameterLabel), + "Pattern" => ::std::option::Option::Some(Kind::Pattern), + "Predicate" => ::std::option::Option::Some(Kind::Predicate), + "Property" => ::std::option::Option::Some(Kind::Property), + "Protocol" => ::std::option::Option::Some(Kind::Protocol), + "ProtocolMethod" => ::std::option::Option::Some(Kind::ProtocolMethod), + "PureVirtualMethod" => ::std::option::Option::Some(Kind::PureVirtualMethod), + "Quasiquoter" => ::std::option::Option::Some(Kind::Quasiquoter), + "SelfParameter" => ::std::option::Option::Some(Kind::SelfParameter), + "Setter" => ::std::option::Option::Some(Kind::Setter), + "Signature" => ::std::option::Option::Some(Kind::Signature), + "SingletonClass" => ::std::option::Option::Some(Kind::SingletonClass), + "SingletonMethod" => ::std::option::Option::Some(Kind::SingletonMethod), + "StaticDataMember" => ::std::option::Option::Some(Kind::StaticDataMember), + "StaticEvent" => ::std::option::Option::Some(Kind::StaticEvent), + "StaticField" => ::std::option::Option::Some(Kind::StaticField), + "StaticMethod" => ::std::option::Option::Some(Kind::StaticMethod), + "StaticProperty" => ::std::option::Option::Some(Kind::StaticProperty), + "StaticVariable" => ::std::option::Option::Some(Kind::StaticVariable), + "String" => ::std::option::Option::Some(Kind::String), + "Struct" => ::std::option::Option::Some(Kind::Struct), + "Subscript" => ::std::option::Option::Some(Kind::Subscript), + "Tactic" => ::std::option::Option::Some(Kind::Tactic), + "Theorem" => ::std::option::Option::Some(Kind::Theorem), + "ThisParameter" => ::std::option::Option::Some(Kind::ThisParameter), + "Trait" => ::std::option::Option::Some(Kind::Trait), + "TraitMethod" => ::std::option::Option::Some(Kind::TraitMethod), + "Type" => ::std::option::Option::Some(Kind::Type), + "TypeAlias" => ::std::option::Option::Some(Kind::TypeAlias), + "TypeClass" => ::std::option::Option::Some(Kind::TypeClass), + "TypeClassMethod" => ::std::option::Option::Some(Kind::TypeClassMethod), + "TypeFamily" => ::std::option::Option::Some(Kind::TypeFamily), + "TypeParameter" => ::std::option::Option::Some(Kind::TypeParameter), + "Union" => ::std::option::Option::Some(Kind::Union), + "Value" => ::std::option::Option::Some(Kind::Value), + "Variable" => ::std::option::Option::Some(Kind::Variable), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [Kind] = &[ Kind::UnspecifiedKind, Kind::AbstractMethod, @@ -2204,8 +2310,8 @@ pub mod symbol_information { } } -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Relationship) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Relationship { // message fields // @@protoc_insertion_point(field:scip.Relationship.symbol) @@ -2428,8 +2534,8 @@ impl ::protobuf::reflect::ProtobufValue for Relationship { /// /// If possible, indexers should try to bundle logically related information /// across occurrences into a single occurrence to reduce payload sizes. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Occurrence) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Occurrence { // message fields /// Half-open [start, end) range of this occurrence. Must be exactly three or four @@ -2594,9 +2700,7 @@ impl ::protobuf::Message for Occurrence { #[allow(unused_variables)] fn compute_size(&self) -> u64 { let mut my_size = 0; - for value in &self.range { - my_size += ::protobuf::rt::int32_size(1, *value); - }; + my_size += ::protobuf::rt::vec_packed_int32_size(1, &self.range); if !self.symbol.is_empty() { my_size += ::protobuf::rt::string_size(2, &self.symbol); } @@ -2613,18 +2717,14 @@ impl ::protobuf::Message for Occurrence { let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; }; - for value in &self.enclosing_range { - my_size += ::protobuf::rt::int32_size(7, *value); - }; + my_size += ::protobuf::rt::vec_packed_int32_size(7, &self.enclosing_range); my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - for v in &self.range { - os.write_int32(1, *v)?; - }; + os.write_repeated_packed_int32(1, &self.range)?; if !self.symbol.is_empty() { os.write_string(2, &self.symbol)?; } @@ -2640,9 +2740,7 @@ impl ::protobuf::Message for Occurrence { for v in &self.diagnostics { ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?; }; - for v in &self.enclosing_range { - os.write_int32(7, *v)?; - }; + os.write_repeated_packed_int32(7, &self.enclosing_range)?; os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2704,8 +2802,8 @@ impl ::protobuf::reflect::ProtobufValue for Occurrence { /// Represents a diagnostic, such as a compiler error or warning, which should be /// reported for a document. -#[derive(PartialEq,Clone,Default,Debug)] // @@protoc_insertion_point(message:scip.Diagnostic) +#[derive(PartialEq,Clone,Default,Debug)] pub struct Diagnostic { // message fields /// Should this diagnostic be reported as an error, warning, info, or hint? @@ -2827,9 +2925,7 @@ impl ::protobuf::Message for Diagnostic { if !self.source.is_empty() { my_size += ::protobuf::rt::string_size(4, &self.source); } - for value in &self.tags { - my_size += ::protobuf::rt::int32_size(5, value.value()); - }; + my_size += ::protobuf::rt::vec_packed_enum_or_unknown_size(5, &self.tags); my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -2848,9 +2944,7 @@ impl ::protobuf::Message for Diagnostic { if !self.source.is_empty() { os.write_string(4, &self.source)?; } - for v in &self.tags { - os.write_enum(5, ::protobuf::EnumOrUnknown::value(v))?; - }; + os.write_repeated_packed_enum_or_unknown(5, &self.tags)?; os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2927,6 +3021,13 @@ impl ::protobuf::Enum for ProtocolVersion { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedProtocolVersion" => ::std::option::Option::Some(ProtocolVersion::UnspecifiedProtocolVersion), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [ProtocolVersion] = &[ ProtocolVersion::UnspecifiedProtocolVersion, ]; @@ -2983,6 +3084,15 @@ impl ::protobuf::Enum for TextEncoding { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedTextEncoding" => ::std::option::Option::Some(TextEncoding::UnspecifiedTextEncoding), + "UTF8" => ::std::option::Option::Some(TextEncoding::UTF8), + "UTF16" => ::std::option::Option::Some(TextEncoding::UTF16), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [TextEncoding] = &[ TextEncoding::UnspecifiedTextEncoding, TextEncoding::UTF8, @@ -3045,6 +3155,16 @@ impl ::protobuf::Enum for PositionEncoding { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedPositionEncoding" => ::std::option::Option::Some(PositionEncoding::UnspecifiedPositionEncoding), + "UTF8CodeUnitOffsetFromLineStart" => ::std::option::Option::Some(PositionEncoding::UTF8CodeUnitOffsetFromLineStart), + "UTF16CodeUnitOffsetFromLineStart" => ::std::option::Option::Some(PositionEncoding::UTF16CodeUnitOffsetFromLineStart), + "UTF32CodeUnitOffsetFromLineStart" => ::std::option::Option::Some(PositionEncoding::UTF32CodeUnitOffsetFromLineStart), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [PositionEncoding] = &[ PositionEncoding::UnspecifiedPositionEncoding, PositionEncoding::UTF8CodeUnitOffsetFromLineStart, @@ -3124,6 +3244,20 @@ impl ::protobuf::Enum for SymbolRole { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedSymbolRole" => ::std::option::Option::Some(SymbolRole::UnspecifiedSymbolRole), + "Definition" => ::std::option::Option::Some(SymbolRole::Definition), + "Import" => ::std::option::Option::Some(SymbolRole::Import), + "WriteAccess" => ::std::option::Option::Some(SymbolRole::WriteAccess), + "ReadAccess" => ::std::option::Option::Some(SymbolRole::ReadAccess), + "Generated" => ::std::option::Option::Some(SymbolRole::Generated), + "Test" => ::std::option::Option::Some(SymbolRole::Test), + "ForwardDefinition" => ::std::option::Option::Some(SymbolRole::ForwardDefinition), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [SymbolRole] = &[ SymbolRole::UnspecifiedSymbolRole, SymbolRole::Definition, @@ -3355,6 +3489,49 @@ impl ::protobuf::Enum for SyntaxKind { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedSyntaxKind" => ::std::option::Option::Some(SyntaxKind::UnspecifiedSyntaxKind), + "Comment" => ::std::option::Option::Some(SyntaxKind::Comment), + "PunctuationDelimiter" => ::std::option::Option::Some(SyntaxKind::PunctuationDelimiter), + "PunctuationBracket" => ::std::option::Option::Some(SyntaxKind::PunctuationBracket), + "Keyword" => ::std::option::Option::Some(SyntaxKind::Keyword), + "IdentifierOperator" => ::std::option::Option::Some(SyntaxKind::IdentifierOperator), + "Identifier" => ::std::option::Option::Some(SyntaxKind::Identifier), + "IdentifierBuiltin" => ::std::option::Option::Some(SyntaxKind::IdentifierBuiltin), + "IdentifierNull" => ::std::option::Option::Some(SyntaxKind::IdentifierNull), + "IdentifierConstant" => ::std::option::Option::Some(SyntaxKind::IdentifierConstant), + "IdentifierMutableGlobal" => ::std::option::Option::Some(SyntaxKind::IdentifierMutableGlobal), + "IdentifierParameter" => ::std::option::Option::Some(SyntaxKind::IdentifierParameter), + "IdentifierLocal" => ::std::option::Option::Some(SyntaxKind::IdentifierLocal), + "IdentifierShadowed" => ::std::option::Option::Some(SyntaxKind::IdentifierShadowed), + "IdentifierNamespace" => ::std::option::Option::Some(SyntaxKind::IdentifierNamespace), + "IdentifierFunction" => ::std::option::Option::Some(SyntaxKind::IdentifierFunction), + "IdentifierFunctionDefinition" => ::std::option::Option::Some(SyntaxKind::IdentifierFunctionDefinition), + "IdentifierMacro" => ::std::option::Option::Some(SyntaxKind::IdentifierMacro), + "IdentifierMacroDefinition" => ::std::option::Option::Some(SyntaxKind::IdentifierMacroDefinition), + "IdentifierType" => ::std::option::Option::Some(SyntaxKind::IdentifierType), + "IdentifierBuiltinType" => ::std::option::Option::Some(SyntaxKind::IdentifierBuiltinType), + "IdentifierAttribute" => ::std::option::Option::Some(SyntaxKind::IdentifierAttribute), + "RegexEscape" => ::std::option::Option::Some(SyntaxKind::RegexEscape), + "RegexRepeated" => ::std::option::Option::Some(SyntaxKind::RegexRepeated), + "RegexWildcard" => ::std::option::Option::Some(SyntaxKind::RegexWildcard), + "RegexDelimiter" => ::std::option::Option::Some(SyntaxKind::RegexDelimiter), + "RegexJoin" => ::std::option::Option::Some(SyntaxKind::RegexJoin), + "StringLiteral" => ::std::option::Option::Some(SyntaxKind::StringLiteral), + "StringLiteralEscape" => ::std::option::Option::Some(SyntaxKind::StringLiteralEscape), + "StringLiteralSpecial" => ::std::option::Option::Some(SyntaxKind::StringLiteralSpecial), + "StringLiteralKey" => ::std::option::Option::Some(SyntaxKind::StringLiteralKey), + "CharacterLiteral" => ::std::option::Option::Some(SyntaxKind::CharacterLiteral), + "NumericLiteral" => ::std::option::Option::Some(SyntaxKind::NumericLiteral), + "BooleanLiteral" => ::std::option::Option::Some(SyntaxKind::BooleanLiteral), + "Tag" => ::std::option::Option::Some(SyntaxKind::Tag), + "TagAttribute" => ::std::option::Option::Some(SyntaxKind::TagAttribute), + "TagDelimiter" => ::std::option::Option::Some(SyntaxKind::TagDelimiter), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [SyntaxKind] = &[ SyntaxKind::UnspecifiedSyntaxKind, SyntaxKind::Comment, @@ -3495,6 +3672,17 @@ impl ::protobuf::Enum for Severity { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedSeverity" => ::std::option::Option::Some(Severity::UnspecifiedSeverity), + "Error" => ::std::option::Option::Some(Severity::Error), + "Warning" => ::std::option::Option::Some(Severity::Warning), + "Information" => ::std::option::Option::Some(Severity::Information), + "Hint" => ::std::option::Option::Some(Severity::Hint), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [Severity] = &[ Severity::UnspecifiedSeverity, Severity::Error, @@ -3555,6 +3743,15 @@ impl ::protobuf::Enum for DiagnosticTag { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedDiagnosticTag" => ::std::option::Option::Some(DiagnosticTag::UnspecifiedDiagnosticTag), + "Unnecessary" => ::std::option::Option::Some(DiagnosticTag::Unnecessary), + "Deprecated" => ::std::option::Option::Some(DiagnosticTag::Deprecated), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [DiagnosticTag] = &[ DiagnosticTag::UnspecifiedDiagnosticTag, DiagnosticTag::Unnecessary, @@ -3940,6 +4137,122 @@ impl ::protobuf::Enum for Language { } } + fn from_str(str: &str) -> ::std::option::Option { + match str { + "UnspecifiedLanguage" => ::std::option::Option::Some(Language::UnspecifiedLanguage), + "ABAP" => ::std::option::Option::Some(Language::ABAP), + "Apex" => ::std::option::Option::Some(Language::Apex), + "APL" => ::std::option::Option::Some(Language::APL), + "Ada" => ::std::option::Option::Some(Language::Ada), + "Agda" => ::std::option::Option::Some(Language::Agda), + "AsciiDoc" => ::std::option::Option::Some(Language::AsciiDoc), + "Assembly" => ::std::option::Option::Some(Language::Assembly), + "Awk" => ::std::option::Option::Some(Language::Awk), + "Bat" => ::std::option::Option::Some(Language::Bat), + "BibTeX" => ::std::option::Option::Some(Language::BibTeX), + "C" => ::std::option::Option::Some(Language::C), + "COBOL" => ::std::option::Option::Some(Language::COBOL), + "CPP" => ::std::option::Option::Some(Language::CPP), + "CSS" => ::std::option::Option::Some(Language::CSS), + "CSharp" => ::std::option::Option::Some(Language::CSharp), + "Clojure" => ::std::option::Option::Some(Language::Clojure), + "Coffeescript" => ::std::option::Option::Some(Language::Coffeescript), + "CommonLisp" => ::std::option::Option::Some(Language::CommonLisp), + "Coq" => ::std::option::Option::Some(Language::Coq), + "CUDA" => ::std::option::Option::Some(Language::CUDA), + "Dart" => ::std::option::Option::Some(Language::Dart), + "Delphi" => ::std::option::Option::Some(Language::Delphi), + "Diff" => ::std::option::Option::Some(Language::Diff), + "Dockerfile" => ::std::option::Option::Some(Language::Dockerfile), + "Dyalog" => ::std::option::Option::Some(Language::Dyalog), + "Elixir" => ::std::option::Option::Some(Language::Elixir), + "Erlang" => ::std::option::Option::Some(Language::Erlang), + "FSharp" => ::std::option::Option::Some(Language::FSharp), + "Fish" => ::std::option::Option::Some(Language::Fish), + "Flow" => ::std::option::Option::Some(Language::Flow), + "Fortran" => ::std::option::Option::Some(Language::Fortran), + "Git_Commit" => ::std::option::Option::Some(Language::Git_Commit), + "Git_Config" => ::std::option::Option::Some(Language::Git_Config), + "Git_Rebase" => ::std::option::Option::Some(Language::Git_Rebase), + "Go" => ::std::option::Option::Some(Language::Go), + "GraphQL" => ::std::option::Option::Some(Language::GraphQL), + "Groovy" => ::std::option::Option::Some(Language::Groovy), + "HTML" => ::std::option::Option::Some(Language::HTML), + "Hack" => ::std::option::Option::Some(Language::Hack), + "Handlebars" => ::std::option::Option::Some(Language::Handlebars), + "Haskell" => ::std::option::Option::Some(Language::Haskell), + "Idris" => ::std::option::Option::Some(Language::Idris), + "Ini" => ::std::option::Option::Some(Language::Ini), + "J" => ::std::option::Option::Some(Language::J), + "JSON" => ::std::option::Option::Some(Language::JSON), + "Java" => ::std::option::Option::Some(Language::Java), + "JavaScript" => ::std::option::Option::Some(Language::JavaScript), + "JavaScriptReact" => ::std::option::Option::Some(Language::JavaScriptReact), + "Jsonnet" => ::std::option::Option::Some(Language::Jsonnet), + "Julia" => ::std::option::Option::Some(Language::Julia), + "Justfile" => ::std::option::Option::Some(Language::Justfile), + "Kotlin" => ::std::option::Option::Some(Language::Kotlin), + "LaTeX" => ::std::option::Option::Some(Language::LaTeX), + "Lean" => ::std::option::Option::Some(Language::Lean), + "Less" => ::std::option::Option::Some(Language::Less), + "Lua" => ::std::option::Option::Some(Language::Lua), + "Luau" => ::std::option::Option::Some(Language::Luau), + "Makefile" => ::std::option::Option::Some(Language::Makefile), + "Markdown" => ::std::option::Option::Some(Language::Markdown), + "Matlab" => ::std::option::Option::Some(Language::Matlab), + "Nickel" => ::std::option::Option::Some(Language::Nickel), + "Nix" => ::std::option::Option::Some(Language::Nix), + "OCaml" => ::std::option::Option::Some(Language::OCaml), + "Objective_C" => ::std::option::Option::Some(Language::Objective_C), + "Objective_CPP" => ::std::option::Option::Some(Language::Objective_CPP), + "Pascal" => ::std::option::Option::Some(Language::Pascal), + "PHP" => ::std::option::Option::Some(Language::PHP), + "PLSQL" => ::std::option::Option::Some(Language::PLSQL), + "Perl" => ::std::option::Option::Some(Language::Perl), + "PowerShell" => ::std::option::Option::Some(Language::PowerShell), + "Prolog" => ::std::option::Option::Some(Language::Prolog), + "Protobuf" => ::std::option::Option::Some(Language::Protobuf), + "Python" => ::std::option::Option::Some(Language::Python), + "R" => ::std::option::Option::Some(Language::R), + "Racket" => ::std::option::Option::Some(Language::Racket), + "Raku" => ::std::option::Option::Some(Language::Raku), + "Razor" => ::std::option::Option::Some(Language::Razor), + "Repro" => ::std::option::Option::Some(Language::Repro), + "ReST" => ::std::option::Option::Some(Language::ReST), + "Ruby" => ::std::option::Option::Some(Language::Ruby), + "Rust" => ::std::option::Option::Some(Language::Rust), + "SAS" => ::std::option::Option::Some(Language::SAS), + "SCSS" => ::std::option::Option::Some(Language::SCSS), + "SML" => ::std::option::Option::Some(Language::SML), + "SQL" => ::std::option::Option::Some(Language::SQL), + "Sass" => ::std::option::Option::Some(Language::Sass), + "Scala" => ::std::option::Option::Some(Language::Scala), + "Scheme" => ::std::option::Option::Some(Language::Scheme), + "ShellScript" => ::std::option::Option::Some(Language::ShellScript), + "Skylark" => ::std::option::Option::Some(Language::Skylark), + "Slang" => ::std::option::Option::Some(Language::Slang), + "Solidity" => ::std::option::Option::Some(Language::Solidity), + "Svelte" => ::std::option::Option::Some(Language::Svelte), + "Swift" => ::std::option::Option::Some(Language::Swift), + "Tcl" => ::std::option::Option::Some(Language::Tcl), + "TOML" => ::std::option::Option::Some(Language::TOML), + "TeX" => ::std::option::Option::Some(Language::TeX), + "Thrift" => ::std::option::Option::Some(Language::Thrift), + "TypeScript" => ::std::option::Option::Some(Language::TypeScript), + "TypeScriptReact" => ::std::option::Option::Some(Language::TypeScriptReact), + "Verilog" => ::std::option::Option::Some(Language::Verilog), + "VHDL" => ::std::option::Option::Some(Language::VHDL), + "VisualBasic" => ::std::option::Option::Some(Language::VisualBasic), + "Vue" => ::std::option::Option::Some(Language::Vue), + "Wolfram" => ::std::option::Option::Some(Language::Wolfram), + "XML" => ::std::option::Option::Some(Language::XML), + "XSL" => ::std::option::Option::Some(Language::XSL), + "YAML" => ::std::option::Option::Some(Language::YAML), + "Zig" => ::std::option::Option::Some(Language::Zig), + _ => ::std::option::Option::None + } + } + const VALUES: &'static [Language] = &[ Language::UnspecifiedLanguage, Language::ABAP, diff --git a/buf.gen.yaml b/buf.gen.yaml index 6943935e..4d8353c8 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -14,7 +14,7 @@ plugins: path: ./bindings/typescript/node_modules/.bin/protoc-gen-ts out: ./bindings/typescript/ - name: rust - path: ./.bin/bin/protoc-gen-rust + path: ./.bin/bin/protoc-gen-rs out: ./bindings/rust/src/generated/ - name: haskell out: ./bindings/haskell/src diff --git a/dev/proto-generate.sh b/dev/proto-generate.sh index e1694bfb..bf6ee05f 100755 --- a/dev/proto-generate.sh +++ b/dev/proto-generate.sh @@ -10,9 +10,9 @@ yarn --cwd ./bindings/typescript install --frozen-lockfile echo "--- cargo install rust-protobuf ---" PROTOC_GEN_RUST_VERSION="$(cat bindings/rust/Cargo.toml | grep 'protobuf =' | sed -E 's/.*\"=(.+)\"/\1/g')" if ! grep -q "$PROTOC_GEN_RUST_VERSION" "./.bin/PROTOC_GEN_RUST_VERSION" \ - || ! test -f "./.bin/bin/protoc-gen-rust"; then + || ! test -f "./.bin/bin/protoc-gen-rs"; then rm -rf .bin - cargo install --root .bin protobuf-codegen --version 3.2.0 + cargo install --root .bin protobuf-codegen --version 3.7.1 echo "$PROTOC_GEN_RUST_VERSION" > "./.bin/PROTOC_GEN_RUST_VERSION" fi From 727d53e8b1a9565f51cfaff0de34fc4fe444c59a Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Thu, 17 Oct 2024 13:10:32 +0800 Subject: [PATCH 07/25] docs: Prepare for v0.5.1 release (#288) --- CHANGELOG.md | 15 +++++++++++++-- bindings/rust/Cargo.toml | 2 +- cmd/scip/version.txt | 2 +- docs/CLI.md | 4 ++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57633b2a..973cfb7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,18 @@ ## Unreleased -Nothing so far. +## v0.5.1 + +CLI: + +- Cleaned up the formatting for the `test` command. + (https://github.com/sourcegraph/scip/pull/281) + +Rust SCIP bindings: + +- Bumped the pinned version of the `protobuf` crate to + the latest release v3.7.1. + (https://github.com/sourcegraph/scip/pull/287) ## v0.5.0 @@ -20,7 +31,7 @@ Schema: - Added two new `SymbolKind` variants: `Extension` and `Mixin`. (https://github.com/sourcegraph/scip/pull/277) -Go SCIP bindings +Go SCIP bindings: - Added clearer documentation around document canonicalization. (https://github.com/sourcegraph/scip/pull/273) diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index 45f81ef5..b6bee5c5 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scip" -version = "0.5.0" +version = "0.5.1" edition = "2021" license = "Apache-2.0" description = """ diff --git a/cmd/scip/version.txt b/cmd/scip/version.txt index 8f0916f7..4b9fcbec 100644 --- a/cmd/scip/version.txt +++ b/cmd/scip/version.txt @@ -1 +1 @@ -0.5.0 +0.5.1 diff --git a/docs/CLI.md b/docs/CLI.md index 84760a80..a3476e05 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -17,7 +17,7 @@ USAGE: scip [global options] command [command options] [arguments...] VERSION: - v0.5.0 + v0.5.1 DESCRIPTION: For more details, see the project README at: @@ -115,7 +115,7 @@ DESCRIPTION: in a given SCIP index matches that specified in human-readable test files, using syntax similar to the 'snapshot subcommand'. Test file syntax reference: - https://github.com/sourcegraph/scip/blob/v0.5.0/docs/test_file_format.md + https://github.com/sourcegraph/scip/blob/v0.5.1/docs/test_file_format.md The test files are located based on the relative_path field in the SCIP document, interpreted relative to the the directory From b469406e85b91a947c266ec84835ab81eaa6150e Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Thu, 24 Oct 2024 21:14:56 +0800 Subject: [PATCH 08/25] docs: Add DESIGN.md (#289) --- DESIGN.md | 140 +++++++++++++++++++++++++++++++++++++++++ Readme.md => README.md | 8 +-- 2 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 DESIGN.md rename Readme.md => README.md (92%) diff --git a/DESIGN.md b/DESIGN.md new file mode 100644 index 00000000..99f54df4 --- /dev/null +++ b/DESIGN.md @@ -0,0 +1,140 @@ +# Design rationale for SCIP + +Sourcegraph supports viewing and navigating code for +many different programming languages. +This is similar to an IDE, except for the actual "editor" part. + +The design of SCIP is based on this primary motivating use case, +as well as for fixing the pain points we encountered with using LSIF.[^1] + +SCIP is meant to be a _transmission_ format for sending +data from some producers to some consumers +-- it is not meant as a _storage_ format for querying. +Ideally, producers should be able to directly output SCIP +instead of going through an intermediate format +and then converting to SCIP for transmission. + +[^1]: + Sourcegraph historically supported LSIF uploads + as well as maintained our own LSIF indexers, + but we ran into issues of development velocity, + debugging, as well as indexer performance bottlenecks. + +## Goals + +### Primary goals + +- Support code navigation at the fidelity of state-of-the-art IDEs. + - Why: We want people to have an excellent experience navigating + their code inside Sourcegraph itself. +- Ease of writing indexers (i.e. producers). + - Adding cross-repo navigation support should be easy. + - Why: Scaling for Sourcegraph customers using code spread across many repos, + as well as supporting code navigation for package ecosystems. + - Adding file-level incrementality should be easy. + - Why: Scaling for large monorepos. + - Making the indexer parallel should be easy + - Why: Scaling for large monorepos. + - Writing indexers in different languages should be feasible + - Why: Generally, tooling for a language tends to be implemented + in the same language or an adjacent one; it would be impractical + to expect indexers to settle on a common implementation language. +- Robustness against indexer bugs: Incorrect code nav data for a certain entity + should have a limited blast radius. +- Ease of debugging. + +## Non-goals + +- Support use cases involving code modifications. + - Why: Sourcegraph's code search and navigation has historically + focused on read-only use cases. Adding support for code modifications + introduces more complexity. + While the same data can be used for tools for refactoring tools + and IDE tooling, supporting those is not the focus of SCIP. +- Ease of writing consumers. + - Why: We expect the number of SCIP producers to be much higher + than the number of consumers, + so it makes sense to optimize for producers. +- Be as compact as possible in uncompressed form.[^2] + - Why: Modern general-purpose compression formats like gzip + and zstd are already very good in terms of both compression + speed and compression ratio.[^3] +- Support efficient code navigation by itself. + + - Why: Code navigation fundamentally requires some form of bidirectional + lookup which is best served by a query engine. + + For example, finding subclasses and superclasses are dual operations; + supporting both across different indexes (for cross-repository navigation) + requires some way of connecting the data together anyways. + However, if the consumer is capable of supporting that, + then recording bidirectional links in index data is not useful. + +[^2]: The only compromise on this decision is in the choice of representation of source ranges, where benchmarks showed that using a variable length integer array encoding provided significant savings compared to a message-based encoding, even after compression. + +[^3]: In practice, SCIP data tends to be have a compression ratio around in the range of 10%-20%, as modern compressors are very good at de-duplicating away the repetitive textual symbols. + +## Core design decisions + +### Using Protobuf for the schema + +- Relatively compact binary format, reducing I/O overhead. +- Protobuf supports easy code generation. +- Many languages have Protobuf code generators. +- TLV format enables streaming reads and writes + as well as merging by concatenation. +- Rules for maintaining forward and backward compatibility + are easily understood. + +### Using strings for IDs + +Hash tables are a core data type used in compilers and +hence are likely to be useful in indexers generally. + +String types in mainstream languages support equality and hashing. +where other objects may not be. + +### Avoid direct encoding of graphs + +One very tempting design for code navigation data is to +think of all semantic entities as nodes and relationships between +entities as edges, and to simply record ALL data +using an adjacency list based graph representation. + +This is conceptually appealing, +but is not desirable for a few reasons: + +- It encourages a wholesale approach to writing + indexers as it involves merging all the data together. + Such indexers are less likely to be able + to easily support parallelism. +- This potentially requires keeping a lot of data of memory + at indexing time. Ideally, an indexer should be able + to load parts of the codebase, + append index data for that part to an open file, + and then move on to the next part having cleared all memory + being used from the previous iteration. +- It potentially requires keeping a lot of data in memory + on the consumer side. + +Instead, the approach to using documents and arrays +helps colocate relevant data and naturally allows for streaming +if the underlying data format allows streaming. + +### Avoiding integer IDs + +This includes avoiding structures like a symbol table +mapping string IDs to integers and mostly using the integer +IDs in raw data. + +As far as we know, the integer IDs in LSIF are primarily present as +an ad-hoc compression scheme due to the verbosity of JSON +and LSIF's graph-based encoding scheme. + +Avoiding integer IDs helps with limiting the blast radius +of indexer bugs. With LSIF, we've had off-by-one bugs in indexers +cause code navigation to fail repo-wide. + +This also helps with debugging, as the raw data itself +can be inspected much more easily without needing +a lot of surrounding context. diff --git a/Readme.md b/README.md similarity index 92% rename from Readme.md rename to README.md index d9abfe31..672a8668 100644 --- a/Readme.md +++ b/README.md @@ -7,7 +7,7 @@ such as Go to definition, Find references, and Find implementations. This repository includes: -- A [protobuf schema for SCIP](./scip.proto). +- A [Protobuf schema for SCIP](./scip.proto). - Rich Go and Rust bindings for SCIP: These include many utility functions to help build tooling on top of SCIP. - Auto-generated bindings for TypeScript and Haskell. @@ -15,7 +15,7 @@ This repository includes: a breeze to work with. If you're interested in better understanding the motivation behind SCIP, -check out the [announcement blog post](https://about.sourcegraph.com/blog/announcing-scip). +check out the [announcement blog post](https://about.sourcegraph.com/blog/announcing-scip) and the [design doc](./DESIGN.md). If you're interested in writing a new indexer that emits SCIP, check out our documentation on @@ -24,8 +24,8 @@ Also, check out the [Debugging section][] in the Development docs. If you're interested in consuming SCIP data, you can either use one of the [provided language bindings](https://github.com/sourcegraph/scip/tree/main/bindings), -or generate code for the [SCIP protobuf schema](./scip.proto) -using the protobuf toolchain for your language ecosystem. +or generate code for the [SCIP Protobuf schema](./scip.proto) +using the Protobuf toolchain for your language ecosystem. Also, check out the [Debugging section][] in the Development docs. [debugging section]: ./Development.md#debugging From a1696fbaecfda5ce905fd5e8ba13ccac49b2c4c9 Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Sat, 30 Nov 2024 16:32:59 +0800 Subject: [PATCH 09/25] chore: Use faster JSON encoding library (#291) --- cmd/scip/print.go | 15 ++++----------- cmd/scip/print_test.go | 10 +++++----- go.mod | 7 +++++++ go.sum | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/cmd/scip/print.go b/cmd/scip/print.go index a9640def..c115f9f6 100644 --- a/cmd/scip/print.go +++ b/cmd/scip/print.go @@ -2,15 +2,13 @@ package main import ( "io" - "math" "os" "strings" + "github.com/bytedance/sonic" + "github.com/cockroachdb/errors" "github.com/k0kubun/pp/v3" "github.com/urfave/cli/v2" - "google.golang.org/protobuf/encoding/protojson" - - "github.com/cockroachdb/errors" ) func printCommand() cli.Command { @@ -62,13 +60,8 @@ func printMain(indexPath string, colorOutput bool, json bool, out io.Writer) err return err } if json { - pp.BufferFoldThreshold = math.MaxInt - - options := protojson.MarshalOptions{} - - jsonBytes, err := options.Marshal(index) - out.Write(jsonBytes) - return err + encoder := sonic.ConfigDefault.NewEncoder(out) + return encoder.Encode(index) } else { prettyPrinter := pp.New() prettyPrinter.SetColoringEnabled(colorOutput) diff --git a/cmd/scip/print_test.go b/cmd/scip/print_test.go index a5f78b28..90db5532 100644 --- a/cmd/scip/print_test.go +++ b/cmd/scip/print_test.go @@ -47,10 +47,10 @@ func TestJSONPrinting(t *testing.T) { type JsonIndex struct { Metadata struct { - ProjectRoot string `json:"projectRoot"` + ProjectRoot string `json:"project_root"` } Documents []struct { - RelativePath string `json:"relativePath"` + RelativePath string `json:"relative_path"` } `json:"documents"` } @@ -63,7 +63,7 @@ func TestJSONPrinting(t *testing.T) { log.Fatal(jsonErr) } - require.Equal(t, roundtripResult.Metadata.ProjectRoot, "howdy") - require.Equal(t, len(roundtripResult.Documents), 1) - require.Equal(t, roundtripResult.Documents[0].RelativePath, "f") + require.Equal(t, "howdy", roundtripResult.Metadata.ProjectRoot) + require.Equal(t, 1, len(roundtripResult.Documents)) + require.Equal(t, "f", roundtripResult.Documents[0].RelativePath) } diff --git a/go.mod b/go.mod index 78152d43..37d14bb3 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.20 require ( github.com/bufbuild/buf v1.25.0 + github.com/bytedance/sonic v1.12.5 github.com/cockroachdb/errors v1.8.9 github.com/fatih/color v1.15.0 github.com/google/go-cmp v0.5.9 @@ -32,6 +33,9 @@ require ( github.com/bufbuild/connect-go v1.9.0 // indirect github.com/bufbuild/connect-opentelemetry-go v0.4.0 // indirect github.com/bufbuild/protocompile v0.5.1 // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect @@ -63,6 +67,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 // indirect github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -87,6 +92,7 @@ require ( github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tetratelabs/wazero v1.3.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.opentelemetry.io/otel v1.16.0 // indirect @@ -96,6 +102,7 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect golang.org/x/crypto v0.12.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect diff --git a/go.sum b/go.sum index 88532dfd..4ff5a35f 100644 --- a/go.sum +++ b/go.sum @@ -33,12 +33,21 @@ github.com/bufbuild/connect-opentelemetry-go v0.4.0 h1:6JAn10SNqlQ/URhvRNGrIlczK github.com/bufbuild/connect-opentelemetry-go v0.4.0/go.mod h1:nwPXYoDOoc2DGyKE/6pT1Q9MPSi2Et2e6BieMD0l6WU= github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bytedance/sonic v1.12.5 h1:hoZxY8uW+mT+OpkcUWw4k0fDINtOcVavEsGfzwzFU/w= +github.com/bytedance/sonic v1.12.5/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= +github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= @@ -252,8 +261,11 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -390,6 +402,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tetratelabs/wazero v1.3.0 h1:nqw7zCldxE06B8zSZAY0ACrR9OH5QCcPwYmYlwtcwtE= github.com/tetratelabs/wazero v1.3.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -436,6 +450,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -655,5 +671,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= From 79fb777c86b7c0ebd353e42bb000171bcf60a95f Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Sat, 30 Nov 2024 16:36:45 +0800 Subject: [PATCH 10/25] chore: Use faster 3 way string comparison (#292) --- bindings/go/scip/sort.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bindings/go/scip/sort.go b/bindings/go/scip/sort.go index 3e76ad2b..b18559cd 100644 --- a/bindings/go/scip/sort.go +++ b/bindings/go/scip/sort.go @@ -2,6 +2,7 @@ package scip import ( "sort" + "strings" "golang.org/x/exp/slices" ) @@ -24,12 +25,7 @@ func FindSymbol(document *Document, symbolName string) *SymbolInformation { // and SymbolInformation values must be merged. This guarantee is upheld by CanonicalizeDocument. func FindSymbolBinarySearch(canonicalizedDocument *Document, symbolName string) *SymbolInformation { i, found := slices.BinarySearchFunc(canonicalizedDocument.Symbols, symbolName, func(sym *SymbolInformation, lookup string) int { - if sym.Symbol < lookup { - return -1 - } else if sym.Symbol == lookup { - return 0 - } - return 1 + return strings.Compare(sym.Symbol, lookup) }) if found { return canonicalizedDocument.Symbols[i] From a4217e0f624e51eb552f75e00b179fa60f6c465f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Dec 2024 09:47:40 +0000 Subject: [PATCH 11/25] chore(deps): update dependency prettier to ^3.4.1 (#293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7a9a3cda..97fbc7a6 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,6 @@ ] }, "devDependencies": { - "prettier": "^3.3.3" + "prettier": "^3.4.1" } } diff --git a/yarn.lock b/yarn.lock index a779b48a..65a10e31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,10 +17,10 @@ nan@^2.22.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== -prettier@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prettier@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.1.tgz#e211d451d6452db0a291672ca9154bc8c2579f7b" + integrity sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg== protoc-gen-ts@0.8.6: version "0.8.6" From cf2bf086b268bf8099cd1afe493c66f352dfd432 Mon Sep 17 00:00:00 2001 From: Beyang Liu Date: Tue, 3 Dec 2024 15:38:10 +0100 Subject: [PATCH 12/25] fix typo --- DESIGN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESIGN.md b/DESIGN.md index 99f54df4..15754ae2 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -91,7 +91,7 @@ and then converting to SCIP for transmission. Hash tables are a core data type used in compilers and hence are likely to be useful in indexers generally. -String types in mainstream languages support equality and hashing. +String types in mainstream languages support equality and hashing, where other objects may not be. ### Avoid direct encoding of graphs From 12ff73096e2a8ba4de21e90cf13f4511981684ff Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Wed, 4 Dec 2024 09:42:32 +0800 Subject: [PATCH 13/25] feat: Speed up symbol parsing by minimizing allocations (#258) Changes the symbol parsing logic to minimize allocations. In particular, when we only care about validating symbols (e.g. during document canonicalization when ingesting uploads), there is really ~no need to allocate any strings at all. Validation and parsing share most of the underlying code -- the only change is we create "writer" types which will discard writes (and hence any internal buffer growth) when we're only in validation mode. For parsing mode, it is now possible to pass in pre-allocated values which will be overwritten as possible (unless the symbol is very large, in which case it still needs to allocate new Descriptors). See PR for benchmarks. --- .github/workflows/golang.yml | 2 +- .prettierignore | 1 + .tool-versions | 2 +- Development.md | 19 + bindings/go/scip/assertions.go | 9 + bindings/go/scip/assertions_noop.go | 6 + bindings/go/scip/internal/compat_test.go | 72 + .../go/scip/internal/old_symbol_parser.go | 238 +++ .../go/scip/internal/shared/sample_indexes.go | 94 + bindings/go/scip/internal/shared/shared.go | 17 + bindings/go/scip/memtest/low_mem_test.go | 35 + bindings/go/scip/sort.go | 3 +- bindings/go/scip/sort_test.go | 2 +- bindings/go/scip/speedtest/speedtest_main.go | 188 ++ bindings/go/scip/symbol.go | 269 +-- bindings/go/scip/symbol_formatter.go | 4 +- bindings/go/scip/symbol_parser.go | 578 ++++++ bindings/go/scip/symbol_test.go | 51 +- bindings/haskell/src/Proto/Scip.hs | 1770 ++++++++-------- bindings/rust/src/generated/scip.rs | 1811 +++++++++-------- dev/sample_indexes/.gitignore | 3 + dev/sample_indexes/indexes-metadata.json | 40 + docs/scip.md | 798 ++++---- go.mod | 13 +- go.sum | 28 +- scip.proto | 2 + 26 files changed, 3645 insertions(+), 2410 deletions(-) create mode 100644 bindings/go/scip/assertions.go create mode 100644 bindings/go/scip/assertions_noop.go create mode 100644 bindings/go/scip/internal/compat_test.go create mode 100644 bindings/go/scip/internal/old_symbol_parser.go create mode 100644 bindings/go/scip/internal/shared/sample_indexes.go create mode 100644 bindings/go/scip/internal/shared/shared.go create mode 100644 bindings/go/scip/speedtest/speedtest_main.go create mode 100644 bindings/go/scip/symbol_parser.go create mode 100644 dev/sample_indexes/.gitignore create mode 100644 dev/sample_indexes/indexes-metadata.json diff --git a/.github/workflows/golang.yml b/.github/workflows/golang.yml index 9de5a038..19632ae2 100644 --- a/.github/workflows/golang.yml +++ b/.github/workflows/golang.yml @@ -18,4 +18,4 @@ jobs: - uses: ./.github/actions/asdf with: golang: true - - run: go test ./... -v + - run: go test ./... -v -tags asserts diff --git a/.prettierignore b/.prettierignore index 44015437..5c262ad1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,4 +2,5 @@ reprolang/target reprolang/src/grammar.json reprolang/src/node-types.json bindings/typescript +docs/scip.md .bin diff --git a/.tool-versions b/.tool-versions index 073ee1d7..04a11206 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,4 +1,4 @@ -golang 1.20.14 +golang 1.22.0 nodejs 16.20.2 shellcheck 0.7.1 yarn 1.22.22 diff --git a/Development.md b/Development.md index 61e72096..81262a19 100644 --- a/Development.md +++ b/Development.md @@ -3,6 +3,7 @@ - [Project structure](#project-structure) - [Code generation](#code-generation) - [Debugging](#debugging) +- [Benchmarking](#benchmarking) - [Testing and adding new SCIP semantics](#testing-and-adding-new-scip-semantics) - [Release a new version](#release-a-new-version) @@ -69,6 +70,24 @@ and is not recommended for use in other settings. scip lint /path/to/index.scip ``` +## Benchmarking + +For benchmarks, one can put test SCIP indexes under `dev/sample_indexes`. + +Sourcegraph teammates can download several large indexes +from this [Google drive folder](https://drive.google.com/drive/folders/1z62Se7eHaa5T89a16-y7s0Z1qbRY4VCg). + +After that you can run: + +```bash +go run ./bindings/go/scip/speedtest +``` + +to see the results. + +Make sure to share benchmark results when making changes to +the symbol parsing logic. + ## Testing and adding new SCIP semantics It is helpful to use reprolang to check the existing code navigation behavior, diff --git a/bindings/go/scip/assertions.go b/bindings/go/scip/assertions.go new file mode 100644 index 00000000..30bfce37 --- /dev/null +++ b/bindings/go/scip/assertions.go @@ -0,0 +1,9 @@ +//go:build asserts + +package scip + +func assert(cond bool, msg string) { + if !cond { + panic(msg) + } +} diff --git a/bindings/go/scip/assertions_noop.go b/bindings/go/scip/assertions_noop.go new file mode 100644 index 00000000..8c8f9c27 --- /dev/null +++ b/bindings/go/scip/assertions_noop.go @@ -0,0 +1,6 @@ +//go:build !asserts + +package scip + +// assert is a noop in release builds - the implementation is in assertions.go +func assert(cond bool, msg string) {} diff --git a/bindings/go/scip/internal/compat_test.go b/bindings/go/scip/internal/compat_test.go new file mode 100644 index 00000000..aa9492be --- /dev/null +++ b/bindings/go/scip/internal/compat_test.go @@ -0,0 +1,72 @@ +package internal + +import ( + "io" + "os" + "path/filepath" + "sync/atomic" + "testing" + + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/beaut/lib/knownwf" + conciter "github.com/sourcegraph/conc/iter" + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +func TestParseCompat(t *testing.T) { + for _, path := range shared.SampleIndexes() { + t.Run(filepath.Base(path), func(t *testing.T) { + t.Parallel() + scipReader, err := os.Open(path) + require.Nil(t, err) + scipBytes, err := io.ReadAll(scipReader) + require.Nil(t, err) + scipIndex := scip.Index{} + require.NoError(t, proto.Unmarshal(scipBytes, &scipIndex)) + var total atomic.Int64 + conciter.ForEach(scipIndex.Documents, func(docPtr **scip.Document) { + document := *docPtr + if total.Load() > 1000*1000 { + return + } + total.Add(int64(len(document.Occurrences))) + var newSym scip.Symbol + for i := 0; i < len(document.Occurrences); i++ { + occ := document.Occurrences[i] + oldSym, oldErr := ParsePartialSymbolV1ToBeDeleted(occ.Symbol, true) + var newErr error + require.NotPanics(t, func() { + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + newErr = scip.ParseSymbolUTF8With(str, scip.ParseSymbolOptions{ + IncludeDescriptors: true, + RecordOutput: &newSym, + }) + }, "panic for symbol: %q", occ.Symbol) + if oldErr != nil { + require.Error(t, newErr, + "old parser gave error %v but parse was successful with new parser (symbol: %q)", + oldErr.Error(), occ.Symbol) + continue + } else if newErr != nil { + require.NoError(t, newErr, + "new parser gave error %v but parse was successful with old parser (symbol: %q)", + newErr.Error(), occ.Symbol) + } + require.Equal(t, oldSym.Scheme, newSym.Scheme) + require.Equal(t, oldSym.Package, newSym.Package) + require.Equalf(t, len(oldSym.Descriptors), len(newSym.Descriptors), "symbol: %v, d1: %+v, d2: %+v", occ.Symbol, + oldSym.Descriptors, newSym.Descriptors) + for i, d := range oldSym.Descriptors { + dnew := newSym.Descriptors[i] + require.Equal(t, d.Name, dnew.Name, "symbol: %v", occ.Symbol) + require.Equal(t, d.Suffix, dnew.Suffix, "symbol: %v", occ.Symbol) + require.Equal(t, d.Disambiguator, dnew.Disambiguator, "symbol: %v", occ.Symbol) + } + } + }) + }) + } +} diff --git a/bindings/go/scip/internal/old_symbol_parser.go b/bindings/go/scip/internal/old_symbol_parser.go new file mode 100644 index 00000000..524e284b --- /dev/null +++ b/bindings/go/scip/internal/old_symbol_parser.go @@ -0,0 +1,238 @@ +package internal + +import ( + "fmt" + "strings" + + "github.com/cockroachdb/errors" + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" +) + +func tryParseLocalSymbol(symbol string) (string, error) { + if !strings.HasPrefix(symbol, "local ") { + return "", nil + } + suffix := symbol[6:] + if len(suffix) > 0 && shared.IsSimpleIdentifier(suffix) { + return suffix, nil + } + return "", errors.Newf("expected format 'local ' but got: %v", symbol) +} + +// ParsePartialSymbolV1ToBeDeleted parses an SCIP string into the Symbol message +// with the option to exclude the `.Descriptor` field. +// +// Nov 30 2024: This is currently only present for benchmarking + compatibility +// reasons. We can remove this in the future once we're confident that the new +// parser handles everything correctly. +func ParsePartialSymbolV1ToBeDeleted(symbol string, includeDescriptors bool) (*scip.Symbol, error) { + local, err := tryParseLocalSymbol(symbol) + if err != nil { + return nil, err + } + if local != "" { + return &scip.Symbol{ + Scheme: "local", + Descriptors: []*scip.Descriptor{ + {Name: local, Suffix: scip.Descriptor_Local}, + }, + }, nil + } + s := newSymbolParser(symbol) + scheme, err := s.acceptSpaceEscapedIdentifier("scheme") + if err != nil { + return nil, err + } + manager, err := s.acceptSpaceEscapedIdentifier("package manager") + if err != nil { + return nil, err + } + if manager == "." { + manager = "" + } + packageName, err := s.acceptSpaceEscapedIdentifier("package name") + if err != nil { + return nil, err + } + if packageName == "." { + packageName = "" + } + packageVersion, err := s.acceptSpaceEscapedIdentifier("package version") + if err != nil { + return nil, err + } + if packageVersion == "." { + packageVersion = "" + } + var descriptors []*scip.Descriptor + if includeDescriptors { + descriptors, err = s.parseDescriptors() + } + return &scip.Symbol{ + Scheme: scheme, + Package: &scip.Package{ + Manager: manager, + Name: packageName, + Version: packageVersion, + }, + Descriptors: descriptors, + }, err +} + +type symbolParser struct { + Symbol []rune + index int + SymbolString string +} + +func newSymbolParser(symbol string) *symbolParser { + return &symbolParser{ + SymbolString: symbol, + Symbol: []rune(symbol), + index: 0, + } +} + +func (s *symbolParser) error(message string) error { + return errors.Newf("%s\n%s\n%s^", message, s.SymbolString, strings.Repeat("_", s.index)) +} + +func (s *symbolParser) current() rune { + if s.index < len(s.Symbol) { + return s.Symbol[s.index] + } + return '\x00' +} + +func (s *symbolParser) peekNext() rune { + if s.index+1 < len(s.Symbol) { + return s.Symbol[s.index] + } + return 0 +} + +func (s *symbolParser) parseDescriptors() ([]*scip.Descriptor, error) { + var result []*scip.Descriptor + for s.index < len(s.Symbol) { + descriptor, err := s.parseDescriptor() + if err != nil { + return nil, err + } + result = append(result, descriptor) + } + return result, nil +} + +func (s *symbolParser) parseDescriptor() (*scip.Descriptor, error) { + start := s.index + switch s.peekNext() { + case '(': + s.index++ + name, err := s.acceptIdentifier("parameter name") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Parameter}, s.acceptCharacter(')', "closing parameter name") + case '[': + s.index++ + name, err := s.acceptIdentifier("type parameter name") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_TypeParameter}, s.acceptCharacter(']', "closing type parameter name") + default: + name, err := s.acceptIdentifier("descriptor name") + if err != nil { + return nil, err + } + suffix := s.current() + s.index++ + switch suffix { + case '(': + disambiguator := "" + if s.peekNext() != ')' { + disambiguator, err = s.acceptIdentifier("method disambiguator") + if err != nil { + return nil, err + } + } + err = s.acceptCharacter(')', "closing method") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Disambiguator: disambiguator, Suffix: scip.Descriptor_Method}, s.acceptCharacter('.', "closing method") + case '/': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Namespace}, nil + case '.': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Term}, nil + case '#': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Type}, nil + case ':': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Meta}, nil + case '!': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Macro}, nil + default: + } + } + + end := s.index + if s.index > len(s.Symbol) { + end = len(s.Symbol) + } + return nil, errors.Newf("unrecognized descriptor %q", string(s.Symbol[start:end])) +} + +func (s *symbolParser) acceptIdentifier(what string) (string, error) { + if s.current() == '`' { + s.index++ + return s.acceptBacktickEscapedIdentifier(what) + } + start := s.index + for s.index < len(s.Symbol) && shared.IsSimpleIdentifierCharacter(s.current()) { + s.index++ + } + if start == s.index { + return "", s.error("empty identifier") + } + return string(s.Symbol[start:s.index]), nil +} + +func (s *symbolParser) acceptSpaceEscapedIdentifier(what string) (string, error) { + return s.acceptEscapedIdentifier(what, ' ') +} + +func (s *symbolParser) acceptBacktickEscapedIdentifier(what string) (string, error) { + return s.acceptEscapedIdentifier(what, '`') +} + +func (s *symbolParser) acceptEscapedIdentifier(what string, escapeCharacter rune) (string, error) { + builder := strings.Builder{} + for s.index < len(s.Symbol) { + ch := s.current() + if ch == escapeCharacter { + s.index++ + if s.index >= len(s.Symbol) { + break + } + if s.current() == escapeCharacter { + // Escaped space character. + builder.WriteRune(ch) + } else { + return builder.String(), nil + } + } else { + builder.WriteRune(ch) + } + s.index++ + } + return "", s.error(fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", what, string(escapeCharacter))) +} + +func (s *symbolParser) acceptCharacter(r rune, what string) error { + if s.current() == r { + s.index++ + return nil + } + return s.error(fmt.Sprintf("expected '%v', obtained '%v', while parsing %v", string(r), string(s.current()), what)) +} diff --git a/bindings/go/scip/internal/shared/sample_indexes.go b/bindings/go/scip/internal/shared/sample_indexes.go new file mode 100644 index 00000000..3e71e81d --- /dev/null +++ b/bindings/go/scip/internal/shared/sample_indexes.go @@ -0,0 +1,94 @@ +package shared + +import ( + "crypto/sha256" + "encoding/json" + "fmt" + "os" + "path" + "path/filepath" + "slices" + "strings" +) + +// SampleIndexes returns a list of paths to SCIP indexes for testing/benchmarking. +func SampleIndexes() []string { + workDir, err := os.Getwd() + if err != nil { + panic(fmt.Sprintf("failed to get working directory: %v", err)) + } + components := strings.Split(workDir, "/") + fmt.Printf("") + var dirEntries []os.DirEntry + var indexesDir string + var metadataPath string + var allMetadata indexesMetadata + for i := 0; i < len(components); i++ { + if components[i] != "scip" { + continue + } + indexesDir = filepath.Join("/", filepath.Join(components[:i+1]...), "dev", "sample_indexes") + dirEntries, err = os.ReadDir(indexesDir) + if err != nil { + fmt.Fprintf(os.Stderr, "Could not locate sample indexes directory at: %v\n", err.Error()) + continue + } + metadataPath = filepath.Join(indexesDir, "indexes-metadata.json") + indexMetadataContents, err := os.ReadFile(metadataPath) + if err != nil { + panic(fmt.Sprintf("Failed to find metadata file for verifying SHAs: %s\n", err.Error())) + } + if err = json.Unmarshal(indexMetadataContents, &allMetadata); err != nil { + panic(fmt.Sprintf("Failed to parse metadata file: %s (path: %q)\n", err.Error(), metadataPath)) + } + break + } + if len(dirEntries) == 0 { + panic(fmt.Sprintf("could not locate sample indexes directory starting from parents of working directory: %q", workDir)) + } + out := []string{} + for _, entry := range dirEntries { + if strings.HasSuffix(entry.Name(), ".scip") { + indexPath := path.Join(indexesDir, entry.Name()) + if err := allMetadata.compareSHA(indexPath); err != nil { + panic(err) + } + out = append(out, indexPath) + } + } + return out +} + +type indexesMetadata struct { + Indexes []metadataEntry `json:"indexes"` +} + +func (m *indexesMetadata) compareSHA(path string) error { + filename := filepath.Base(path) + idx := slices.IndexFunc(m.Indexes, func(m metadataEntry) bool { + return m.Name == filename + }) + if idx == -1 { + return fmt.Errorf("indexes-metadata.json missing entry for file %q", filename) + } + contents, err := os.ReadFile(path) + if err != nil { + return fmt.Errorf("failed to read index file at path %q: %w", path, err) + } + if got := computeSHA256(contents); got != m.Indexes[idx].SHA256 { + return fmt.Errorf("index file SHA mismatch (-want, got):\n-%s (from indexes-metadata.json)\n+%s", + m.Indexes[idx].SHA256, got) + } + return nil +} + +type metadataEntry struct { + Name string `json:"name"` + SHA256 string `json:"sha256"` +} + +func computeSHA256(contents []byte) string { + hasher := sha256.New() + hasher.Write(contents) + return fmt.Sprintf("%x", hasher.Sum(nil)) +} diff --git a/bindings/go/scip/internal/shared/shared.go b/bindings/go/scip/internal/shared/shared.go new file mode 100644 index 00000000..c6a0460d --- /dev/null +++ b/bindings/go/scip/internal/shared/shared.go @@ -0,0 +1,17 @@ +// Package shared has functions used both by the old parser and the new parser. +package shared + +func IsSimpleIdentifierCharacter(c rune) bool { + return c == '_' || c == '+' || c == '-' || c == '$' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') +} + +// IsSimpleIdentifier matches the definition of in scip.proto. +func IsSimpleIdentifier(s string) bool { + for _, c := range s { + if IsSimpleIdentifierCharacter(c) { + continue + } + return false + } + return true +} diff --git a/bindings/go/scip/memtest/low_mem_test.go b/bindings/go/scip/memtest/low_mem_test.go index 4d85ffab..a0ae8e75 100644 --- a/bindings/go/scip/memtest/low_mem_test.go +++ b/bindings/go/scip/memtest/low_mem_test.go @@ -9,6 +9,8 @@ import ( "strings" "testing" + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/beaut/lib/knownwf" "github.com/stretchr/testify/require" "google.golang.org/protobuf/proto" @@ -19,6 +21,7 @@ import ( // SetMemoryLimit call doesn't interfere with other running tests func TestLowMemoryParsing(t *testing.T) { + // NOTE: This test must not run in parallel with the other one. tmpFile, err := os.CreateTemp(t.TempDir(), "very-large-index.scip") require.NoError(t, err) defer os.RemoveAll(tmpFile.Name()) @@ -59,5 +62,37 @@ func TestLowMemoryParsing(t *testing.T) { require.NoError(t, err) } +func TestParseSymbol_ZeroAllocationsIfMemoryAvailable(t *testing.T) { + // This test must not run in parallel with the other one. + str := beaut.NewUTF8StringUnchecked("cxx . mypkg v1.0.0 Foo#Bar(abcdef0123456789).", knownwf.UTF8OtherReason) + sym := &scip.Symbol{ + Scheme: "", + Package: &scip.Package{}, + Descriptors: []*scip.Descriptor{ + &scip.Descriptor{}, + &scip.Descriptor{}, + }, + } + var before, after runtime.MemStats + runtime.GC() + old := debug.SetGCPercent(-1) + + runtime.ReadMemStats(&before) + parseErr := scip.ParseSymbolUTF8With(str, scip.ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: sym}) + runtime.ReadMemStats(&after) + + require.NoError(t, parseErr) + require.Equal(t, before.TotalAlloc, after.TotalAlloc, "pre-allocated symbol should not cause extra allocations") + + runtime.ReadMemStats(&before) + validateErr := scip.ValidateSymbolUTF8(str) + runtime.ReadMemStats(&after) + + require.NoError(t, validateErr) + require.Equal(t, before.TotalAlloc, after.TotalAlloc, "pre-allocated symbol should not cause extra allocations") + + debug.SetGCPercent(old) +} + // Do not add any other tests in this sub-package, so that the // SetMemoryLimit call doesn't interfere with other running tests diff --git a/bindings/go/scip/sort.go b/bindings/go/scip/sort.go index b18559cd..6ef135e6 100644 --- a/bindings/go/scip/sort.go +++ b/bindings/go/scip/sort.go @@ -1,10 +1,9 @@ package scip import ( + "slices" "sort" "strings" - - "golang.org/x/exp/slices" ) // FindSymbol returns the symbol with the given name in the given document. If there is no symbol by diff --git a/bindings/go/scip/sort_test.go b/bindings/go/scip/sort_test.go index e0b2c6e9..f441d333 100644 --- a/bindings/go/scip/sort_test.go +++ b/bindings/go/scip/sort_test.go @@ -1,11 +1,11 @@ package scip import ( + "slices" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" "pgregory.net/rapid" ) diff --git a/bindings/go/scip/speedtest/speedtest_main.go b/bindings/go/scip/speedtest/speedtest_main.go new file mode 100644 index 00000000..b7b44fd5 --- /dev/null +++ b/bindings/go/scip/speedtest/speedtest_main.go @@ -0,0 +1,188 @@ +package main + +import ( + "fmt" + "io" + "os" + "runtime" + "runtime/debug" + "time" + + "github.com/jedib0t/go-pretty/v6/table" + "github.com/jedib0t/go-pretty/v6/text" + "google.golang.org/protobuf/proto" + + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/beaut/lib/knownwf" + + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" +) + +// NOTE: We don't run this benchmark using the standard +// Go benchmarking tooling because that doesn't offer +// any control over the number of iterations performed. +func main() { + for _, path := range shared.SampleIndexes() { + benchmark(path) + } +} + +func benchmark(path string) { + scipReader, err := os.Open(path) + if err != nil { + panic(fmt.Sprintf("failed to open file %q: %v", path, err.Error())) + } + scipBytes, err := io.ReadAll(scipReader) + if err != nil { + panic(fmt.Sprintf("failed to read file %q: %v", path, err.Error())) + } + scipIndex := scip.Index{} + if err := proto.Unmarshal(scipBytes, &scipIndex); err != nil { + panic(fmt.Sprintf("failed to unmarshal index %q: %v", path, err.Error())) + } + allOccurrences := []*scip.Occurrence{} + for _, document := range scipIndex.Documents { + allOccurrences = append(allOccurrences, document.Occurrences...) + } + parserV1Benchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + _, err = internal.ParsePartialSymbolV1ToBeDeleted(occ.Symbol, true) + // Ignore errors here as error compatibility is handled by TestParseCompat, + // Currently, a bunch of indexes use invalid syntax for locals. + _ = err + } + } + parserV2Benchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + sym := scip.Symbol{} + err = scip.ParseSymbolUTF8With(str, scip.ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: &sym}) + // Ignore errors here as error compatibility is handled by TestParseCompat. + // Currently, a bunch of indexes use invalid syntax for locals. + _ = err + } + } + parserV2ValidateBenchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + err = scip.ValidateSymbolUTF8(str) + // Ignore errors here as error compatibility is handled by TestParseCompat. + // Currently, a bunch of indexes use invalid syntax for locals. + _ = err + } + } + sb := simpleBenchmark{MaxN: 100 * 1000} + v1Results := sb.run("Symbol parse (v1)", parserV1Benchmark) + v2Results := sb.run("Symbol parse (v2)", parserV2Benchmark) + v2ValidateResults := sb.run("Symbol validate (v2)", parserV2ValidateBenchmark) + + fmt.Printf("Benchmark for %q:\n%s\n", path, + sb.tabulate(v1Results, v2Results, v2ValidateResults)) +} + +func (sb *simpleBenchmark) tabulate(baseline benchmarkResult, otherResults ...benchmarkResult) string { + tw := table.NewWriter() + headers := []any{"Benchmark / Iterations"} + for n := 1000; n <= sb.MaxN; n = n * 10 { + headers = append(headers, n) + headers = append(headers, "Ratio") + } + tw.AppendHeader(headers) + allResults := append([]benchmarkResult{baseline}, otherResults...) + { + for i, res := range allResults { + row := []any{res.benchmarkName + " - Speed"} + rowAlign := []table.RowConfig{{AutoMergeAlign: text.AlignRight}} + for j, t := range res.timings { + row = append(row, fmt.Sprintf("%v/op", t.timePerOp())) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + if i == 0 { + row = append(row, "-") + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignCenter}) + } else { + ratio := float64(t.timePerOp()) / float64(allResults[0].timings[j].timePerOp()) + row = append(row, fmt.Sprintf("%.2fx", ratio)) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + } + } + tw.AppendRow(row, rowAlign...) + } + } + { + for i, res := range allResults { + row := []any{res.benchmarkName + " - Allocs"} + rowAlign := []table.RowConfig{{AutoMergeAlign: text.AlignRight}} + for j, h := range res.heapAllocs { + row = append(row, fmt.Sprintf("%dB/op", h.allocsPerOp())) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + if i == 0 { + row = append(row, "-") + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignCenter}) + } else { + ratio := float64(h.allocsPerOp()) / float64(allResults[0].heapAllocs[j].allocsPerOp()) + row = append(row, fmt.Sprintf("%.2fx", ratio)) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + } + } + tw.AppendRow(row, rowAlign...) + } + } + return tw.Render() +} + +type simpleBenchmark struct { + N int + MaxN int +} + +type benchmarkResult struct { + benchmarkName string + timings []timing + heapAllocs []allocBytes +} + +type timing struct { + N int + totalTime time.Duration +} + +type allocBytes struct { + N int + totalAlloc uint64 +} + +func (a allocBytes) allocsPerOp() uint64 { + return a.totalAlloc / uint64(a.N) +} + +func (t timing) timePerOp() time.Duration { + return time.Duration(int64(t.totalTime) / int64(t.N)) +} + +func (b *simpleBenchmark) run(name string, f func(*simpleBenchmark)) benchmarkResult { + var timings []timing + for n := 1000; n <= b.MaxN; n = n * 10 { + b.N = n + start := time.Now() + f(b) + delta := time.Now().Sub(start) + timings = append(timings, timing{N: n, totalTime: delta}) + } + old := debug.SetGCPercent(-1) + var allocs []allocBytes + for n := 1000; n <= b.MaxN; n = n * 10 { + runtime.GC() + var before, after runtime.MemStats + runtime.ReadMemStats(&before) + f(b) + runtime.ReadMemStats(&after) + allocs = append(allocs, allocBytes{N: n, totalAlloc: after.TotalAlloc - before.TotalAlloc}) + } + debug.SetGCPercent(old) + return benchmarkResult{name, timings, allocs} +} diff --git a/bindings/go/scip/symbol.go b/bindings/go/scip/symbol.go index 92ac6546..cc06f41c 100644 --- a/bindings/go/scip/symbol.go +++ b/bindings/go/scip/symbol.go @@ -1,10 +1,9 @@ package scip import ( - "fmt" "strings" - "github.com/cockroachdb/errors" + "github.com/sourcegraph/beaut" ) // IsGlobalSymbol returns true if the symbol is obviously not a local symbol. @@ -21,253 +20,55 @@ func IsLocalSymbol(symbol string) bool { return strings.HasPrefix(symbol, "local ") } -func isSimpleIdentifierCharacter(c rune) bool { - return c == '_' || c == '+' || c == '-' || c == '$' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') -} - -func isSimpleIdentifier(s string) bool { - for _, c := range s { - if isSimpleIdentifierCharacter(c) { - continue - } - return false - } - return true -} - -func tryParseLocalSymbol(symbol string) (string, error) { - if !strings.HasPrefix(symbol, "local ") { - return "", nil - } - suffix := symbol[6:] - if len(suffix) > 0 && isSimpleIdentifier(suffix) { - return suffix, nil - } - return "", errors.Newf("expected format 'local ' but got: %v", symbol) -} - // ParseSymbol parses an SCIP string into the Symbol message. +// +// Prefer using ParseSymbolUTF8 for strings already known to +// be valid UTF-8 encoded strings. For example, the Protobuf +// string type is guaranteed to be converted to a UTF-8 string +// in Go, you can avoid an extra UTF-8 validity check with +// this API. func ParseSymbol(symbol string) (*Symbol, error) { - return ParsePartialSymbol(symbol, true) -} - -// ParsePartialSymbol parses an SCIP string into the Symbol message -// with the option to exclude the `.Descriptor` field. -func ParsePartialSymbol(symbol string, includeDescriptors bool) (*Symbol, error) { - local, err := tryParseLocalSymbol(symbol) - if err != nil { - return nil, err - } - if local != "" { - return newLocalSymbol(local), nil - } - s := newSymbolParser(symbol) - scheme, err := s.acceptSpaceEscapedIdentifier("scheme") - if err != nil { - return nil, err - } - manager, err := s.acceptSpaceEscapedIdentifier("package manager") - if err != nil { - return nil, err - } - if manager == "." { - manager = "" - } - packageName, err := s.acceptSpaceEscapedIdentifier("package name") + s, err := beaut.NewUTF8String(symbol) if err != nil { return nil, err } - if packageName == "." { - packageName = "" - } - packageVersion, err := s.acceptSpaceEscapedIdentifier("package version") - if err != nil { - return nil, err - } - if packageVersion == "." { - packageVersion = "" - } - var descriptors []*Descriptor - if includeDescriptors { - descriptors, err = s.parseDescriptors() - } - return &Symbol{ - Scheme: scheme, - Package: &Package{ - Manager: manager, - Name: packageName, - Version: packageVersion, - }, - Descriptors: descriptors, - }, err + return ParseSymbolUTF8(s) } -func newLocalSymbol(id string) *Symbol { - return &Symbol{ - Scheme: "local", - Descriptors: []*Descriptor{ - {Name: id, Suffix: Descriptor_Local}, - }, - } -} - -type symbolParser struct { - Symbol []rune - index int - SymbolString string -} - -func newSymbolParser(symbol string) *symbolParser { - return &symbolParser{ - SymbolString: symbol, - Symbol: []rune(symbol), - index: 0, - } -} - -func (s *symbolParser) error(message string) error { - return errors.Newf("%s\n%s\n%s^", message, s.SymbolString, strings.Repeat("_", s.index)) -} - -func (s *symbolParser) current() rune { - if s.index < len(s.Symbol) { - return s.Symbol[s.index] - } - return '\x00' -} - -func (s *symbolParser) peekNext() rune { - if s.index+1 < len(s.Symbol) { - return s.Symbol[s.index] - } - return 0 -} - -func (s *symbolParser) parseDescriptors() ([]*Descriptor, error) { - var result []*Descriptor - for s.index < len(s.Symbol) { - descriptor, err := s.parseDescriptor() - if err != nil { - return nil, err - } - result = append(result, descriptor) - } - return result, nil -} - -func (s *symbolParser) parseDescriptor() (*Descriptor, error) { - start := s.index - switch s.peekNext() { - case '(': - s.index++ - name, err := s.acceptIdentifier("parameter name") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Suffix: Descriptor_Parameter}, s.acceptCharacter(')', "closing parameter name") - case '[': - s.index++ - name, err := s.acceptIdentifier("type parameter name") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Suffix: Descriptor_TypeParameter}, s.acceptCharacter(']', "closing type parameter name") - default: - name, err := s.acceptIdentifier("descriptor name") - if err != nil { - return nil, err - } - suffix := s.current() - s.index++ - switch suffix { - case '(': - disambiguator := "" - if s.peekNext() != ')' { - disambiguator, err = s.acceptIdentifier("method disambiguator") - if err != nil { - return nil, err - } - } - err = s.acceptCharacter(')', "closing method") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Disambiguator: disambiguator, Suffix: Descriptor_Method}, s.acceptCharacter('.', "closing method") - case '/': - return &Descriptor{Name: name, Suffix: Descriptor_Namespace}, nil - case '.': - return &Descriptor{Name: name, Suffix: Descriptor_Term}, nil - case '#': - return &Descriptor{Name: name, Suffix: Descriptor_Type}, nil - case ':': - return &Descriptor{Name: name, Suffix: Descriptor_Meta}, nil - case '!': - return &Descriptor{Name: name, Suffix: Descriptor_Macro}, nil - default: - } - } - - end := s.index - if s.index > len(s.Symbol) { - end = len(s.Symbol) - } - return nil, errors.Newf("unrecognized descriptor %q", string(s.Symbol[start:end])) -} - -func (s *symbolParser) acceptIdentifier(what string) (string, error) { - if s.current() == '`' { - s.index++ - return s.acceptBacktickEscapedIdentifier(what) - } - start := s.index - for s.index < len(s.Symbol) && isSimpleIdentifierCharacter(s.current()) { - s.index++ - } - if start == s.index { - return "", s.error("empty identifier") - } - return string(s.Symbol[start:s.index]), nil +// ParseSymbolUTF8 parses an SCIP string into the Symbol message. +// +// Unlike ParseSymbol, this skips UTF-8 validation. To customize +// parsing behavior, use ParseSymbolUTF8With. +func ParseSymbolUTF8(symbol beaut.UTF8String) (*Symbol, error) { + s := Symbol{} + err := ParseSymbolUTF8With(symbol, ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: &s}) + return &s, err } -func (s *symbolParser) acceptSpaceEscapedIdentifier(what string) (string, error) { - return s.acceptEscapedIdentifier(what, ' ') -} +type emptySymbolError struct{} -func (s *symbolParser) acceptBacktickEscapedIdentifier(what string) (string, error) { - return s.acceptEscapedIdentifier(what, '`') +func (emptySymbolError) Error() string { + return "empty symbol" } -func (s *symbolParser) acceptEscapedIdentifier(what string, escapeCharacter rune) (string, error) { - builder := strings.Builder{} - for s.index < len(s.Symbol) { - ch := s.current() - if ch == escapeCharacter { - s.index++ - if s.index >= len(s.Symbol) { - break - } - if s.current() == escapeCharacter { - // Escaped space character. - builder.WriteRune(ch) - } else { - return builder.String(), nil - } - } else { - builder.WriteRune(ch) - } - s.index++ - } - return "", s.error(fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", what, string(escapeCharacter))) +type ParseSymbolOptions struct { + // IncludeDescriptors indicates whether the the descriptors in the symbol should also be + // parsed. This setting is only respected for global symbols. + IncludeDescriptors bool + // RecordOutput, if provided, is used to record the output of the symbol parser. + // + // Otherwise, only validation is performed without any extraneous heap + // allocations (except for optimization misses by the Go compiler). + RecordOutput *Symbol } -func (s *symbolParser) acceptCharacter(r rune, what string) error { - if s.current() == r { - s.index++ - return nil +func ParseSymbolUTF8With(symbol beaut.UTF8String, options ParseSymbolOptions) error { + if symbol.Len() == 0 { + return emptySymbolError{} } - return s.error(fmt.Sprintf("expected '%v', obtained '%v', while parsing %v", string(r), string(s.current()), what)) + return parseSymbolV2(symbol, options.IncludeDescriptors, options.RecordOutput) } -func (x *Package) ID() string { - return fmt.Sprintf("%s %s %s", x.Manager, x.Name, x.Version) +func ValidateSymbolUTF8(symbol beaut.UTF8String) error { + return ParseSymbolUTF8With(symbol, ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: nil}) } diff --git a/bindings/go/scip/symbol_formatter.go b/bindings/go/scip/symbol_formatter.go index e78025e7..ad356d70 100644 --- a/bindings/go/scip/symbol_formatter.go +++ b/bindings/go/scip/symbol_formatter.go @@ -2,6 +2,8 @@ package scip import ( "strings" + + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" ) // SymbolFormatter configures how to format an SCIP symbol. @@ -139,7 +141,7 @@ func writeEscapedPackage(b *strings.Builder, name string) { func writeSuffixedDescriptor(b *strings.Builder, identifier string, suffixes ...rune) { escape := false for _, ch := range identifier { - if !isSimpleIdentifierCharacter(ch) { + if !shared.IsSimpleIdentifierCharacter(ch) { escape = true break } diff --git a/bindings/go/scip/symbol_parser.go b/bindings/go/scip/symbol_parser.go new file mode 100644 index 00000000..816b4476 --- /dev/null +++ b/bindings/go/scip/symbol_parser.go @@ -0,0 +1,578 @@ +package scip + +import ( + "fmt" + "strings" + "unicode" + + "github.com/cockroachdb/errors" + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" +) + +// stringWriter is a wrapper around a pair of (strings.Builder, *string) +// which can conditionally discard writes. +type stringWriter struct { + // builder is meant to be used for handling escapes, in which + // case we cannot get away with slicing the original string, + // and we need to allocate a new string. + builder strings.Builder + // finalCopySlot represents the final destination for the write. + // If nil, no writes are performed. + finalCopySlot *string +} + +// append appends the given string to the accumulated string. +func (w *stringWriter) append(s string) { + if w.finalCopySlot == nil { + return + } + w.builder.WriteString(s) +} + +// finish copies the accumulated string to the final destination, +// if present. +func (w *stringWriter) finish() { + if w.finalCopySlot == nil { + return + } + *w.finalCopySlot = w.builder.String() +} + +// writeFullAndFinish ignores any previous writes via append calls +// and writes the given string. +func (w *stringWriter) writeFullAndFinish(s string) { + if w.finalCopySlot == nil { + return + } + *w.finalCopySlot = s +} + +// normalize overwrites the string in the slot if it matches 'from'. +func (w *stringWriter) normalize(from string, to string) { + if w.finalCopySlot == nil || (*w.finalCopySlot != from) { + return + } + *w.finalCopySlot = to +} + +func (w *stringWriter) reset(newSlot *string) { + w.builder.Reset() + w.finalCopySlot = newSlot +} + +// parseSymbolV2 parses an SCIP string into the Symbol message +// with the option to exclude the `.Descriptor` field. +// +// Pre-condition: symbolUTF8 is non-empty. +func parseSymbolV2(symbolUTF8 beaut.UTF8String, includeDescriptors bool, out *Symbol) error { + symbol := symbolUTF8.RawValue() + isLocal, err := tryParseLocalSymbolV2(symbol, out) + if isLocal || err != nil { + return err + } + z := newSymbolParserV2(symbol) + var sw stringWriter + if out != nil { + sw.reset(&out.Scheme) + } + if err = z.acceptSpaceEscapedIdentifier(parseCtxScheme, &sw); err != nil { + return err + } + if out != nil { + if out.Package == nil { + out.Package = &Package{} + } + sw.reset(&out.Package.Manager) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageManager, &sw); err != nil { + return err + } + sw.normalize(".", "") + if out != nil { + sw.reset(&out.Package.Name) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageName, &sw); err != nil { + return err + } + sw.normalize(".", "") + if out != nil { + sw.reset(&out.Package.Version) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageVersion, &sw); err != nil { + return err + } + sw.normalize(".", "") + + if includeDescriptors { + var dw descriptorsWriter + if out != nil { + dw.shouldWrite = true + dw.descriptors = out.Descriptors + } + if err := z.parseDescriptors(&dw); err != nil { + return err + } + if out != nil { + out.Descriptors = dw.validDescriptors() + } + } + return nil +} + +func tryParseLocalSymbolV2(s string, out *Symbol) (bool, error) { + suffix := strings.TrimPrefix(s, "local ") + if len(suffix) == len(s) { + return false, nil + } + if len(suffix) == 0 || !shared.IsSimpleIdentifier(suffix) { + return false, expectedSimpleIdentifierError{""} + } + if out != nil { + out.Scheme = "local" + // This is a bit unfortunate; we cannot avoid allocating another Package value + // in the next parsing call if the next Symbol received is not a local variable. + out.Package = nil + if len(out.Descriptors) == 0 { + out.Descriptors = []*Descriptor{{Name: suffix, Suffix: Descriptor_Local}} + } else { + d := out.Descriptors[0] + d.Name = suffix + d.Disambiguator = "" + d.Suffix = Descriptor_Local + out.Descriptors = out.Descriptors[:1] + } + } + return true, nil +} + +type expectedSimpleIdentifierError struct { + s string +} + +func (e expectedSimpleIdentifierError) Error() string { + return fmt.Sprintf("expected format 'local ' but got: %v", e.s) +} + +// descriptorsWriter encapsulates the logic for writing descriptors +// while handling the zero-write/validation-only case. +type descriptorsWriter struct { + // descriptors represents the Descriptor values that should be written + // to. Only count elements of this slice should be interpreted. + descriptors []*Descriptor + // tmpStringWriter will discard writes if shouldWrite is false. + // Otherwise, it may be a name writer or a disambiguator writer. + tmpStringWriter stringWriter + // throwawaySuffix is for the !shouldWrite case, where we still + // want to provide a uniform type for the caller to "write" the + // suffix to (i.e. a pointer). If shouldWrite is true, + // then suffixes will be written to descriptors directly. + throwawaySuffix Descriptor_Suffix + count int32 + // shouldWrite controls if writes should be performed or discarded. + shouldWrite bool +} + +// prepareName appends a descriptor with the given suffix and an empty +// name and disambiguator, and returns a writer for the name. +// +// For writing the disambiguator, use getDisambiguatorForLast after +// calling prepare or prepareName. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) prepareName(suffix Descriptor_Suffix) *stringWriter { + if dw.shouldWrite { + dw.tmpStringWriter.builder.Reset() + dw.tmpStringWriter.finalCopySlot, _ = dw.internalPrepareSlot(suffix) + } + return &dw.tmpStringWriter +} + +// prepare is similar to prepareName, but allows delaying writing the suffix. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) prepare() (*stringWriter, *Descriptor_Suffix) { + suffixPtr := &dw.throwawaySuffix + if dw.shouldWrite { + dw.tmpStringWriter.builder.Reset() + dw.tmpStringWriter.finalCopySlot, suffixPtr = dw.internalPrepareSlot(Descriptor_UnspecifiedSuffix) + } + return &dw.tmpStringWriter, suffixPtr +} + +// getDisambiguatorForLast returns a writer for the disambiguator for the last +// descriptor that was inserted. +// +// Pre-condition: prepare or prepareName must have been called before this. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) getDisambiguatorForLast() *stringWriter { + if dw.shouldWrite { + dw.tmpStringWriter.builder.Reset() + dw.tmpStringWriter.finalCopySlot = &dw.descriptors[dw.count-1].Disambiguator + return &dw.tmpStringWriter + } + return &dw.tmpStringWriter +} + +// internalPrepareSlot optionally grows the slice of descriptors, assigns the provided +// suffix to the last descriptor, and returns pointers to the 'Name' and +// 'Suffix' fields for overwriting. +// +// Generally, higher-level code should only call prepare or prepareName. +// +// Pre-condition: This should only be called in the shouldWrite case. +func (dw *descriptorsWriter) internalPrepareSlot(suffix Descriptor_Suffix) (*string, *Descriptor_Suffix) { + assert(dw.shouldWrite, "should only call internalPrepareSlot in the shouldWrite case") + zeroLastSlot := func() { + lastPtr := &dw.descriptors[dw.count] + if last := *lastPtr; last == nil { + *lastPtr = &Descriptor{Suffix: suffix} + } else { + last.Name = "" + last.Suffix = suffix + last.Disambiguator = "" + } + } + if len(dw.descriptors) == int(dw.count) { + dw.descriptors = append(dw.descriptors, &Descriptor{Suffix: suffix}) + } else { + zeroLastSlot() + } + elt := dw.descriptors[dw.count] + dw.count++ + nameSlot := &elt.Name + suffixSlot := &elt.Suffix + return nameSlot, suffixSlot +} + +func (dw *descriptorsWriter) validDescriptors() []*Descriptor { + return dw.descriptors[:dw.count] +} + +// symbolParserV2 parses symbols while minimizing heap allocations. +type symbolParserV2 struct { + SymbolString string + // byteIndex is the index in SymbolString for the first byte of currentRune. + // However, at the end of parsing, this can be equal to len(SymbolString); + // see advanceOneByte. + byteIndex int + currentRune rune + bytesToNextRune int32 +} + +// findRuneAtIndex returns the rune at the given index. +// +// Pre-condition: string is well-formed UTF-8 +// Pre-condition: byteIndex is in bounds +// +// NOTE: We could technically use utf8.DecodeRuneInString here, but that +// has a more complex implementation which tries to handle invalid UTF-8. +// Looking at the code itself, it seems like it would be slower given that +// it is doing more operations. +// +// https://sourcegraph.com/github.com/golang/go/-/blob/src/unicode/utf8/utf8.go?L205-243 +// +// It might be worth benchmarking to see if that's faster/doesn't make +// a difference. +func findRuneAtIndex(s string, byteIndex int) (r rune, bytesRead int32) { + b1 := s[byteIndex] + if b1 < 0x80 { + return rune(b1), 1 + } + b2 := s[byteIndex+1] + if b1&0b11100000 == 0b11000000 { + return (int32(b1&0b00011111) << 6) | int32(b2&0b00111111), 2 + } + b3 := s[byteIndex+2] + if b1&0b11110000 == 0b11100000 { + return (int32(b1&0b00001111) << 12) | (int32(b2&0b00111111) << 6) | int32(b3&0b00111111), 3 + } + b4 := s[byteIndex+3] + return (int32(b1&0b00000111) << 18) | (int32(b2&0b00111111) << 12) | (int32(b3&0b00111111) << 6) | int32(b4&0b00111111), 4 +} + +// Pre-condition: string is well-formed UTF-8 +// Pre-condition: len(symbol) > 0 +func newSymbolParserV2(symbol string) symbolParserV2 { + r, bytesRead := findRuneAtIndex(symbol, 0) + return symbolParserV2{ + SymbolString: symbol, + byteIndex: 0, + currentRune: r, + bytesToNextRune: bytesRead, + } +} + +type errorCase int + +const ( + errorCaseEmptyIdent errorCase = iota + errorCaseByteNotFound +) + +// TODO: Enable https://github.com/nishanths/exhaustive in CI +type parseCtx int + +func (what parseCtx) String() string { + switch what { + case parseCtxParameterName: + return "parameter name" + case parseCtxClosingParameterName: + return "closing parameter name" + case parseCtxTypeParameterName: + return "type parameter name" + case parseCtxClosingTypeParameterName: + return "closing type parameter name" + case parseCtxDescriptorName: + return "descriptor name" + case parseCtxMethodDisambiguator: + return "method disambiguator" + case parseCtxClosingMethod: + return "closing method" + case parseCtxScheme: + return "scheme" + case parseCtxPackageManager: + return "package manager" + case parseCtxPackageName: + return "package name" + case parseCtxPackageVersion: + return "package version" + default: + return "unknown parseCtx" + } +} + +const ( + parseCtxParameterName parseCtx = iota + parseCtxClosingParameterName + parseCtxTypeParameterName + parseCtxClosingTypeParameterName + parseCtxDescriptorName + parseCtxMethodDisambiguator + parseCtxClosingMethod + parseCtxScheme + parseCtxPackageManager + parseCtxPackageName + parseCtxPackageVersion +) + +func (z *symbolParserV2) error(e errorCase, expectedByte byte, what parseCtx) error { + switch e { + case errorCaseEmptyIdent: + return errors.Newf("failed to parse: %q (context: %v)", z.SymbolString, what) + case errorCaseByteNotFound: + return errors.Newf("failed to parse: %q (expected byte: %c, context: %v)", z.SymbolString, rune(expectedByte), what) + default: + panic(fmt.Sprintf("unknown error case: %v", e)) + } +} + +func (z *symbolParserV2) peekNext() (rune, int32) { + if z.byteIndex+1 < len(z.SymbolString) { + return findRuneAtIndex(z.SymbolString, z.byteIndex+int(z.bytesToNextRune)) + } + return 0, 0 +} + +func (z *symbolParserV2) parseDescriptors(out *descriptorsWriter) error { + for z.byteIndex < len(z.SymbolString) { + if err := z.parseDescriptor(out); err != nil { + return err + } + } + return nil +} + +func (z *symbolParserV2) advance(nextRune rune, nextRuneByteLength int32) { + z.byteIndex += int(z.bytesToNextRune) + z.currentRune = nextRune + z.bytesToNextRune = nextRuneByteLength +} + +func (z *symbolParserV2) parseDescriptor(out *descriptorsWriter) error { + start := z.byteIndex + switch z.currentRune { + case '(': + z.advanceOneByte('(') + nameWriter := out.prepareName(Descriptor_Parameter) + if err := z.acceptIdentifier(parseCtxParameterName, nameWriter); err != nil { + return err + } + return z.acceptOneByte(')', parseCtxClosingParameterName) + case '[': + z.advanceOneByte('[') + nameWriter := out.prepareName(Descriptor_TypeParameter) + if err := z.acceptIdentifier(parseCtxTypeParameterName, nameWriter); err != nil { + return err + } + return z.acceptOneByte(']', parseCtxClosingTypeParameterName) + default: + nameWriter, descriptorPtr := out.prepare() + if err := z.acceptIdentifier(parseCtxDescriptorName, nameWriter); err != nil { + return err + } + suffixRune := z.currentRune + z.advanceRune() + switch suffixRune { + case '(': + *descriptorPtr = Descriptor_Method + if z.currentRune != ')' { + disambWriter := out.getDisambiguatorForLast() + if err := z.acceptIdentifier(parseCtxMethodDisambiguator, disambWriter); err != nil { + return err + } + } + if err := z.acceptOneByte(')', parseCtxClosingMethod); err != nil { + return err + } + return z.acceptOneByte('.', parseCtxClosingMethod) + case '/': + *descriptorPtr = Descriptor_Namespace + return nil + case '.': + *descriptorPtr = Descriptor_Term + return nil + case '#': + *descriptorPtr = Descriptor_Type + return nil + case ':': + *descriptorPtr = Descriptor_Meta + return nil + case '!': + *descriptorPtr = Descriptor_Macro + return nil + default: + } + } + + end := z.byteIndex + if z.byteIndex > len(z.SymbolString) { + end = len(z.SymbolString) + } + return unrecognizedDescriptorError{z.SymbolString[start:end]} +} + +type unrecognizedDescriptorError struct { + value string +} + +var _ error = unrecognizedDescriptorError{} + +func (e unrecognizedDescriptorError) Error() string { + return fmt.Sprintf("unrecognized descriptor %q", e.value) +} + +func isIdentifierCharacter(r rune) bool { + return unicode.IsLetter(r) || unicode.IsDigit(r) || r == '-' || r == '+' || r == '$' || r == '_' +} + +func (z *symbolParserV2) advanceOneByte(b byte) { + assert(z.currentRune == rune(b), "passed in byte does not match current rune") + nextRune, nextRuneByteLength := z.peekNext() + // CAUTION: z.byteIndex can become equal to len(z.SymbolString) here + z.byteIndex += 1 + z.currentRune = nextRune + z.bytesToNextRune = nextRuneByteLength +} + +func (z *symbolParserV2) advanceRune() { + nextRune, nextRuneByteLength := z.peekNext() + z.advance(nextRune, min(nextRuneByteLength, 1)) +} + +func (z *symbolParserV2) acceptOneByte(b byte, what parseCtx) error { + if z.currentRune == rune(b) { + z.advanceOneByte(b) + return nil + } + return z.error(errorCaseByteNotFound, b, what) +} + +func (z *symbolParserV2) acceptIdentifier(what parseCtx, sw *stringWriter) error { + if z.currentRune == '`' { + z.advanceOneByte('`') + return z.acceptBacktickEscapedIdentifier(what, sw) + } + start := z.byteIndex + slen := len(z.SymbolString) + for z.byteIndex < slen { + if !isIdentifierCharacter(z.currentRune) { + break + } + z.advanceRune() + } + if start == z.byteIndex { + return z.error(errorCaseEmptyIdent, 0, what) + } + sw.writeFullAndFinish(z.SymbolString[start:z.byteIndex]) + return nil +} + +func (z *symbolParserV2) acceptBacktickEscapedIdentifier(what parseCtx, sw *stringWriter) error { + return z.acceptTerminatedIdentifier(what, sw, '`') +} + +func (z *symbolParserV2) acceptSpaceEscapedIdentifier(what parseCtx, sw *stringWriter) error { + return z.acceptTerminatedIdentifier(what, sw, ' ') +} + +// acceptTerminatedIdentifier accepts an identifier that is terminated by 'terminator'. +// +// Consecutive occurrences of terminator are interpreted as a single literal character. +func (z *symbolParserV2) acceptTerminatedIdentifier(what parseCtx, sw *stringWriter, terminator byte) error { + slen := len(z.SymbolString) + terminatorRune := rune(terminator) + anchor := z.byteIndex + hasEscapedTerminator := false + for z.byteIndex < slen { + if z.currentRune != terminatorRune { + z.advanceRune() + continue + } + z.advanceOneByte(terminator) + if z.byteIndex == slen { + break + } + if z.currentRune == terminatorRune { + hasEscapedTerminator = true + // will include 1 copy of the terminator + sw.append(z.SymbolString[anchor:z.byteIndex]) + z.advanceOneByte(terminator) + anchor = z.byteIndex + continue + } + if hasEscapedTerminator { + // Append the rest to the builder and return + sw.append(z.SymbolString[anchor : z.byteIndex-1]) + sw.finish() + return nil + } + // In the non-escaped case, z.byteIndex is already 1 past the + // terminator, so do an extra -1 + sw.writeFullAndFinish(z.SymbolString[anchor : z.byteIndex-1]) + return nil + } + return endOfSymbolError{what, terminatorRune} +} + +type endOfSymbolError struct { + what parseCtx + expected rune +} + +var _ error = endOfSymbolError{} + +func (e endOfSymbolError) Error() string { + return fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", e.what, e.expected) +} + +func (x *Package) ID() string { + return fmt.Sprintf("%s %s %s", x.Manager, x.Name, x.Version) +} diff --git a/bindings/go/scip/symbol_test.go b/bindings/go/scip/symbol_test.go index 893d7294..b92b440b 100644 --- a/bindings/go/scip/symbol_test.go +++ b/bindings/go/scip/symbol_test.go @@ -13,7 +13,10 @@ func TestParseSymbol(t *testing.T) { Expected *Symbol } tests := []test{ - {Symbol: "local a", Expected: newLocalSymbol("a")}, + {Symbol: "local a", Expected: &Symbol{ + Scheme: "local", + Descriptors: []*Descriptor{{Name: "a", Suffix: Descriptor_Local}}, + }}, {Symbol: "a b c d method().", Expected: &Symbol{ Scheme: "a", Package: &Package{ @@ -70,12 +73,47 @@ func TestParseSymbol(t *testing.T) { }, }, }, + { + Symbol: "cxx . todo-pkg todo-version gfx/Rect#x(455f465bc33b4cdf).", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Name: "todo-pkg", Version: "todo-version"}, + Descriptors: []*Descriptor{ + {Name: "gfx", Suffix: Descriptor_Namespace}, + {Name: "Rect", Suffix: Descriptor_Type}, + {Name: "x", Disambiguator: "455f465bc33b4cdf", Suffix: Descriptor_Method}, + }, + }, + }, + { + Symbol: "cxx . . $ `/4398592474888995393/assert.h:92:11`!", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Manager: "", Name: "", Version: "$"}, + Descriptors: []*Descriptor{ + {Name: "/4398592474888995393/assert.h:92:11", Suffix: Descriptor_Macro}, + }, + }, + }, + { + Symbol: "cxx . . $ llvm/itanium_demangle/OutputBuffer#empty(50ce9a9e25b4a850).", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Manager: "", Name: "", Version: "$"}, + Descriptors: []*Descriptor{ + {Name: "llvm", Suffix: Descriptor_Namespace}, + {Name: "itanium_demangle", Suffix: Descriptor_Namespace}, + {Name: "OutputBuffer", Suffix: Descriptor_Type}, + {Name: "empty", Disambiguator: "50ce9a9e25b4a850", Suffix: Descriptor_Method}, + }, + }, + }, } for _, test := range tests { t.Run(test.Symbol, func(t *testing.T) { obtained, err := ParseSymbol(test.Symbol) require.Nil(t, err) - if diff := cmp.Diff(obtained.String(), test.Expected.String()); diff != "" { + if diff := cmp.Diff(test.Expected.String(), obtained.String()); diff != "" { t.Fatalf("unexpected response (-want +got):\n%s", diff) } }) @@ -93,9 +131,10 @@ func TestParseSymbolError(t *testing.T) { "local ", "local &&&", } { - - if _, err := ParseSymbol(symbolName); err == nil { - t.Fatalf("expected error from parsing %q", symbolName) - } + require.NotPanics(t, func() { + if _, err := ParseSymbol(symbolName); err == nil { + t.Fatalf("expected error from parsing %q", symbolName) + } + }, "panic when parsing %q", symbolName) } } diff --git a/bindings/haskell/src/Proto/Scip.hs b/bindings/haskell/src/Proto/Scip.hs index 93edca1e..b1979eec 100644 --- a/bindings/haskell/src/Proto/Scip.hs +++ b/bindings/haskell/src/Proto/Scip.hs @@ -6412,9 +6412,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\215\183\STX\n\ + \\ETXZig\DLE&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\206\184\STX\n\ \\a\DC2\ENQ\n\ - \\NUL\240\ACK\SOH\n\ + \\NUL\242\ACK\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\ @@ -6856,7 +6856,7 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\200\SOH\DC3\DC4\n\ \\f\n\ - \\STX\EOT\ACK\DC2\ACK\203\SOH\NUL\226\SOH\SOH\n\ + \\STX\EOT\ACK\DC2\ACK\203\SOH\NUL\228\SOH\SOH\n\ \\v\n\ \\ETX\EOT\ACK\SOH\DC2\EOT\203\SOH\b\DC2\n\ \\SO\n\ @@ -6962,8 +6962,10 @@ packedFileDescriptor \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\224\SOH\t\SYN\n\ \\r\n\ \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\224\SOH\EM\SUB\n\ - \\f\n\ - \\EOT\EOT\ACK\STX\STX\DC2\EOT\225\SOH\STX\DC4\n\ + \\130\SOH\n\ + \\EOT\EOT\ACK\STX\STX\DC2\EOT\225\SOH\STX\DC4\"t NOTE: If you add new fields here, make sure to update the prepareSlot()\n\ + \ function responsible for parsing symbols.\n\ + \\n\ \\r\n\ \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\225\SOH\STX\b\n\ \\r\n\ @@ -6971,23 +6973,23 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\225\SOH\DC2\DC3\n\ \\131\SOH\n\ - \\STX\EOT\a\DC2\ACK\230\SOH\NUL\182\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ + \\STX\EOT\a\DC2\ACK\232\SOH\NUL\184\ETX\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\230\SOH\b\EM\n\ + \\ETX\EOT\a\SOH\DC2\EOT\232\SOH\b\EM\n\ \\160\SOH\n\ - \\EOT\EOT\a\STX\NUL\DC2\EOT\233\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\235\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\233\SOH\STX\b\n\ + \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\235\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\233\SOH\t\SI\n\ + \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\235\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\233\SOH\DC2\DC3\n\ + \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\235\SOH\DC2\DC3\n\ \\180\ETX\n\ - \\EOT\EOT\a\STX\SOH\DC2\EOT\240\SOH\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ + \\EOT\EOT\a\STX\SOH\DC2\EOT\242\SOH\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ \ for this symbol. Use `SymbolInformation.signature_documentation` to\n\ \ document the method/class/type signature of this symbol.\n\ \ Due to historical reasons, indexers may include signature documentation in\n\ @@ -6995,39 +6997,39 @@ packedFileDescriptor \ include non-code documentation in this field, for example docstrings.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\240\SOH\STX\n\ + \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\242\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\240\SOH\v\DC1\n\ + \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\242\SOH\v\DC1\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\240\SOH\DC2\US\n\ + \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\242\SOH\DC2\US\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\240\SOH\"#\n\ + \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\242\SOH\"#\n\ \^\n\ - \\EOT\EOT\a\STX\STX\DC2\EOT\242\SOH\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ + \\EOT\EOT\a\STX\STX\DC2\EOT\244\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\242\SOH\STX\n\ + \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\244\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\242\SOH\v\ETB\n\ + \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\244\SOH\v\ETB\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\242\SOH\CAN%\n\ + \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\244\SOH\CAN%\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\242\SOH()\n\ + \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\244\SOH()\n\ \\164\SOH\n\ - \\EOT\EOT\a\STX\ETX\DC2\EOT\246\SOH\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ + \\EOT\EOT\a\STX\ETX\DC2\EOT\248\SOH\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ \ `SymbolDescriptor.Suffix` to determine whether something is, for example, a\n\ \ class or a method.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\ACK\DC2\EOT\246\SOH\STX\ACK\n\ + \\ENQ\EOT\a\STX\ETX\ACK\DC2\EOT\248\SOH\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\SOH\DC2\EOT\246\SOH\a\v\n\ + \\ENQ\EOT\a\STX\ETX\SOH\DC2\EOT\248\SOH\a\v\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\ETX\DC2\EOT\246\SOH\SO\SI\n\ + \\ENQ\EOT\a\STX\ETX\ETX\DC2\EOT\248\SOH\SO\SI\n\ \\245\ENQ\n\ - \\EOT\EOT\a\EOT\NUL\DC2\ACK\133\STX\STX\146\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ + \\EOT\EOT\a\EOT\NUL\DC2\ACK\135\STX\STX\148\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ \ information about the symbol's meaning in the language.\n\ \\n\ \ For example:\n\ @@ -7043,592 +7045,592 @@ packedFileDescriptor \ - If two symbols have different Suffixes, they should have different Kinds.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\EOT\NUL\SOH\DC2\EOT\133\STX\a\v\n\ + \\ENQ\EOT\a\EOT\NUL\SOH\DC2\EOT\135\STX\a\v\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\NUL\DC2\EOT\134\STX\ACK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\NUL\DC2\EOT\136\STX\ACK\SUB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NUL\SOH\DC2\EOT\134\STX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\NUL\SOH\DC2\EOT\136\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NUL\STX\DC2\EOT\134\STX\CAN\EM\n\ + \\a\EOT\a\EOT\NUL\STX\NUL\STX\DC2\EOT\136\STX\CAN\EM\n\ \R\n\ - \\ACK\EOT\a\EOT\NUL\STX\SOH\DC2\EOT\136\STX\ACK\SUB\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ + \\ACK\EOT\a\EOT\NUL\STX\SOH\DC2\EOT\138\STX\ACK\SUB\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SOH\SOH\DC2\EOT\136\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\SOH\SOH\DC2\EOT\138\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SOH\STX\DC2\EOT\136\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX\SOH\STX\DC2\EOT\138\STX\ETB\EM\n\ \*\n\ - \\ACK\EOT\a\EOT\NUL\STX\STX\DC2\EOT\138\STX\ACK\DC4\SUB\SUB For Ruby's attr_accessor\n\ + \\ACK\EOT\a\EOT\NUL\STX\STX\DC2\EOT\140\STX\ACK\DC4\SUB\SUB For Ruby's attr_accessor\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\STX\SOH\DC2\EOT\138\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\STX\SOH\DC2\EOT\140\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\STX\STX\DC2\EOT\138\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\STX\STX\DC2\EOT\140\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ETX\DC2\EOT\139\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\ETX\DC2\EOT\141\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETX\SOH\DC2\EOT\139\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\ETX\SOH\DC2\EOT\141\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETX\STX\DC2\EOT\139\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ETX\STX\DC2\EOT\141\STX\SO\SI\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX\EOT\DC2\EOT\141\STX\ACK\DC4\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX\EOT\DC2\EOT\143\STX\ACK\DC4\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EOT\SOH\DC2\EOT\141\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\EOT\SOH\DC2\EOT\143\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EOT\STX\DC2\EOT\141\STX\DC2\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\EOT\STX\DC2\EOT\143\STX\DC2\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ENQ\DC2\EOT\142\STX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STX\ENQ\DC2\EOT\144\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ENQ\SOH\DC2\EOT\142\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\ENQ\SOH\DC2\EOT\144\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ENQ\STX\DC2\EOT\142\STX\ETB\CAN\n\ + \\a\EOT\a\EOT\NUL\STX\ENQ\STX\DC2\EOT\144\STX\ETB\CAN\n\ \\EM\n\ - \\ACK\EOT\a\EOT\NUL\STX\ACK\DC2\EOT\144\STX\ACK\DC4\SUB\t For C++\n\ + \\ACK\EOT\a\EOT\NUL\STX\ACK\DC2\EOT\146\STX\ACK\DC4\SUB\t For C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ACK\SOH\DC2\EOT\144\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ACK\SOH\DC2\EOT\146\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ACK\STX\DC2\EOT\144\STX\DC2\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\ACK\STX\DC2\EOT\146\STX\DC2\DC3\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\a\DC2\EOT\146\STX\ACK\DLE\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\a\DC2\EOT\148\STX\ACK\DLE\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\a\SOH\DC2\EOT\146\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\a\SOH\DC2\EOT\148\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\a\STX\DC2\EOT\146\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\a\STX\DC2\EOT\148\STX\SO\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\b\DC2\EOT\147\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX\b\DC2\EOT\149\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\b\SOH\DC2\EOT\147\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\b\SOH\DC2\EOT\149\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\b\STX\DC2\EOT\147\STX\DLE\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\b\STX\DC2\EOT\149\STX\DLE\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\t\DC2\EOT\148\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\t\DC2\EOT\150\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\t\SOH\DC2\EOT\148\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\t\SOH\DC2\EOT\150\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\t\STX\DC2\EOT\148\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\t\STX\DC2\EOT\150\STX\SO\SI\n\ \\SO\n\ \\ACK\EOT\a\EOT\NUL\STX\n\ - \\DC2\EOT\149\STX\ACK\DC3\n\ + \\DC2\EOT\151\STX\ACK\DC3\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\149\STX\ACK\SO\n\ + \\SOH\DC2\EOT\151\STX\ACK\SO\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\STX\DC2\EOT\149\STX\DC1\DC2\n\ + \\STX\DC2\EOT\151\STX\DC1\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\150\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\152\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\150\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\152\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\150\STX\DC4\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\152\STX\DC4\NAK\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\152\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\154\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\152\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\154\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\152\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\154\STX\DC1\DC3\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\154\STX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\156\STX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\154\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\156\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\154\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\156\STX\DC3\NAK\n\ \\US\n\ - \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\156\STX\ACK\DC4\SUB\SI For C# and F#\n\ + \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\158\STX\ACK\DC4\SUB\SI For C# and F#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\156\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\158\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\156\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\158\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\157\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\159\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\157\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\159\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\157\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\159\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\158\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\160\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\158\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\160\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\158\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\160\STX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\159\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\161\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\159\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\161\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\159\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\161\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\160\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\162\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\160\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\162\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\160\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\162\STX\SO\DLE\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\162\STX\ACK\NAK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\164\STX\ACK\NAK\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\162\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\164\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\162\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\164\STX\DC2\DC4\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\164\STX\ACK\DLE\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\166\STX\ACK\DLE\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\164\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\166\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\164\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\166\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\165\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\167\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\165\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\167\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\165\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\167\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\166\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\168\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\166\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\168\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\166\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\168\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\167\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\169\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\167\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\169\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\167\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\169\STX\DC1\DC3\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\169\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\171\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\169\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\171\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\169\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\171\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\171\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\173\STX\ACK\DC3\SUB\n\ \ For Raku\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\171\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\173\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\171\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\173\STX\DLE\DC2\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\173\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ + \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\175\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\173\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\175\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\173\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\175\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\174\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\176\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\174\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\176\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\174\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\176\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\175\STX\ACK\SI\n\ + \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\177\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\175\STX\ACK\t\n\ + \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\177\STX\ACK\t\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\175\STX\f\SO\n\ + \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\177\STX\f\SO\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\177\STX\ACK\DLE\SUB\f For Racket\n\ + \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\179\STX\ACK\DLE\SUB\f For Racket\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\177\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\179\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\177\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\179\STX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\179\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\181\STX\ACK\DC1\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\179\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\181\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\179\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\181\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\181\STX\ACK\DC3\SUB\SO For solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\183\STX\ACK\DC3\SUB\SO For solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\181\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\183\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\181\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\183\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\182\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\184\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\182\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\184\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\182\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\184\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\183\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\185\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\183\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\185\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\183\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\185\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\185\STX\ACK\ETB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\187\STX\ACK\ETB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\185\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\187\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\185\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\187\STX\DC4\SYN\n\ \\148\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\188\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ + \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\190\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ \ like Go where the receiver doesn't have a conventional name.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\188\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\190\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\188\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\190\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\190\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ + \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\192\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\190\STX\ACK\EM\n\ + \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\192\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\190\STX\FS\RS\n\ + \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\192\STX\FS\RS\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\192\STX\ACK\DC3\SUB\SO For Protobuf\n\ + \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\194\STX\ACK\DC3\SUB\SO For Protobuf\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\192\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\194\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\192\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\194\STX\DLE\DC2\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\194\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\196\STX\ACK\DC1\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\194\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\196\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\194\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\196\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\196\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\198\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\196\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\198\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\196\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\198\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\197\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\199\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\197\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\199\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\197\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\199\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\198\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\200\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\198\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\200\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\198\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\200\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\199\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\201\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\199\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\201\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\199\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\201\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\200\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\202\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\200\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\202\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\200\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\202\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\201\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\203\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\201\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\203\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\201\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\203\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\202\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\204\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\202\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\204\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\202\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\204\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\203\STX\ACK\DC3\n\ + \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\205\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\203\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\205\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\203\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\205\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\204\STX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\206\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\204\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\206\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\204\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\206\STX\SYN\CAN\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\205\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\207\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\205\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\207\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\205\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\207\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\206\STX\ACK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\208\STX\ACK\SUB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\206\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\208\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\206\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\208\STX\ETB\EM\n\ \/\n\ - \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\208\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ + \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\210\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\208\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\210\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\208\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\210\STX\DLE\DC2\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\210\STX\ACK\NAK\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\212\STX\ACK\NAK\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\210\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\212\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\210\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\212\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\211\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\213\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\211\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\213\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\211\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\213\STX\DC1\DC3\n\ \Q\n\ - \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\213\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ + \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\215\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\213\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\215\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\213\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\215\STX\DC1\DC3\n\ \K\n\ - \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\215\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ + \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\217\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\215\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\217\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\215\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\217\STX\ETB\EM\n\ \9\n\ - \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\217\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ + \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\219\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\217\STX\ACK\ETB\n\ + \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\219\STX\ACK\ETB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\217\STX\SUB\FS\n\ + \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\219\STX\SUB\FS\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\219\STX\ACK\ETB\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\221\STX\ACK\ETB\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\219\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\221\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\219\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\221\STX\DC4\SYN\n\ \4\n\ - \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\221\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ + \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\223\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\221\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\223\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\221\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\223\STX\SYN\CAN\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\223\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\225\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\223\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\225\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\223\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\225\STX\SI\DC1\n\ \3\n\ - \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\225\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ + \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\227\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\225\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\227\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\225\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\227\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\227\STX\ACK\SUB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\229\STX\ACK\SUB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\227\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\229\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\227\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\229\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\229\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ + \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\231\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\229\STX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\231\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\229\STX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\231\STX\CAN\SUB\n\ \5\n\ - \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\231\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ + \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\233\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\231\STX\ACK\SYN\n\ + \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\233\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\231\STX\EM\ESC\n\ + \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\233\STX\EM\ESC\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\233\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\235\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\233\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\235\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\233\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\235\STX\DC4\SYN\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\235\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\237\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\235\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\237\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\235\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\237\STX\DC4\SYN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\237\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\239\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\237\STX\ACK\DC2\n\ + \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\239\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\237\STX\NAK\ETB\n\ + \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\239\STX\NAK\ETB\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\239\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\241\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\239\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\241\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\239\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\241\STX\ETB\EM\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\241\STX\ACK\SUB\SUB\f For C, C++\n\ + \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\243\STX\ACK\SUB\SUB\f For C, C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\241\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\243\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\241\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\243\STX\ETB\EM\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\242\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\244\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\242\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\244\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\242\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\244\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\243\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\245\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\243\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\245\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\243\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\245\STX\SI\DC1\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\245\STX\ACK\NAK\SUB\v For Swift\n\ + \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\247\STX\ACK\NAK\SUB\v For Swift\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\245\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\247\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\245\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\247\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\247\STX\ACK\DC2\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\249\STX\ACK\DC2\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\247\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\249\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\247\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\249\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\249\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\251\STX\ACK\DC3\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\249\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\251\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\249\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\251\STX\DLE\DC2\n\ \U\n\ - \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\252\STX\ACK\EM\SUBE Method receiver for languages\n\ + \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\254\STX\ACK\EM\SUBE Method receiver for languages\n\ \ 'this' in JavaScript, C++, Java etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\252\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\254\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\252\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\254\STX\SYN\CAN\n\ \O\n\ - \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\254\STX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\128\ETX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\254\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\128\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\254\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\128\ETX\SO\DLE\n\ \E\n\ - \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\128\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\130\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\128\ETX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\130\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\128\ETX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\130\ETX\DC4\SYN\n\ \\137\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\131\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ + \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\133\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ \ rather than separate keywords like `struct` and `enum`.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\131\ETX\ACK\n\ + \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\133\ETX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\131\ETX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\133\ETX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\132\ETX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\134\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\132\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\134\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\132\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\134\ETX\DC2\DC4\n\ \S\n\ - \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\134\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\136\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\134\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\136\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\134\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\136\ETX\DC2\DC4\n\ \M\n\ - \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\136\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\138\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\136\ETX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\138\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\136\ETX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\138\ETX\CAN\SUB\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\138\ETX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\140\ETX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\138\ETX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\140\ETX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\138\ETX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\140\ETX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\139\ETX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\141\ETX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\139\ETX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\141\ETX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\139\ETX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\141\ETX\SYN\CAN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\141\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ + \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\143\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\141\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\143\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\141\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\143\ETX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\142\ETX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\144\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\142\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\144\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\142\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\144\ETX\SO\DLE\n\ \[\n\ - \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\143\ETX\ACK\DC4\"K Next = 86;\n\ + \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\145\ETX\ACK\DC4\"K Next = 86;\n\ \ Feel free to open a PR proposing new language-specific kinds.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\143\ETX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\145\ETX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\143\ETX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\145\ETX\DC1\DC3\n\ \\243\ETX\n\ - \\EOT\EOT\a\STX\EOT\DC2\EOT\156\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ + \\EOT\EOT\a\STX\EOT\DC2\EOT\158\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ \ For example, the symbol \"com/example/MyClass#myMethod(+1).\" should have the\n\ \ display name \"myMethod\". The `symbol` field is not a reliable source of\n\ \ the display name for several reasons:\n\ @@ -7639,13 +7641,13 @@ packedFileDescriptor \ displayed to the user.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\156\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\158\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\156\ETX\t\NAK\n\ + \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\158\ETX\t\NAK\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\156\ETX\CAN\EM\n\ + \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\158\ETX\CAN\EM\n\ \\196\ETX\n\ - \\EOT\EOT\a\STX\ENQ\DC2\EOT\163\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ + \\EOT\EOT\a\STX\ENQ\DC2\EOT\165\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ \ documentation or in hover tooltips. For example, a Java method that adds\n\ \ two numbers this would have `Document.language = \"java\"` and `Document.text\n\ \ = \"void add(int a, int b)\". The `language` and `text` fields are required\n\ @@ -7653,14 +7655,14 @@ packedFileDescriptor \ included to support hyperlinking referenced symbols in the signature.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\163\ETX\STX\n\ + \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\165\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\163\ETX\v\"\n\ + \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\165\ETX\v\"\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\163\ETX%&\n\ + \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\165\ETX%&\n\ \\201\b\n\ - \\EOT\EOT\a\STX\ACK\DC2\EOT\181\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ + \\EOT\EOT\a\STX\ACK\DC2\EOT\183\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ \ symbols, the enclosing symbol should be parsed from the `symbol` field\n\ \ using the `Descriptor` grammar.\n\ \\n\ @@ -7679,25 +7681,25 @@ packedFileDescriptor \ symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\181\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\183\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\181\ETX\t\EM\n\ + \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\183\ETX\t\EM\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\181\ETX\FS\GS\n\ + \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\183\ETX\FS\GS\n\ \\f\n\ - \\STX\EOT\b\DC2\ACK\185\ETX\NUL\241\ETX\SOH\n\ + \\STX\EOT\b\DC2\ACK\187\ETX\NUL\243\ETX\SOH\n\ \\v\n\ - \\ETX\EOT\b\SOH\DC2\EOT\185\ETX\b\DC4\n\ + \\ETX\EOT\b\SOH\DC2\EOT\187\ETX\b\DC4\n\ \\f\n\ - \\EOT\EOT\b\STX\NUL\DC2\EOT\186\ETX\STX\DC4\n\ + \\EOT\EOT\b\STX\NUL\DC2\EOT\188\ETX\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\186\ETX\STX\b\n\ + \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\188\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\186\ETX\t\SI\n\ + \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\188\ETX\t\SI\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\186\ETX\DC2\DC3\n\ + \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\188\ETX\DC2\DC3\n\ \\222\b\n\ - \\EOT\EOT\b\STX\SOH\DC2\EOT\211\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ + \\EOT\EOT\b\STX\SOH\DC2\EOT\213\ETX\STX\CAN\SUB\207\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\ @@ -7723,13 +7725,13 @@ packedFileDescriptor \ `Animal#sound()` method as well.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\211\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\213\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\211\ETX\a\DC3\n\ + \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\213\ETX\a\DC3\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\211\ETX\SYN\ETB\n\ + \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\213\ETX\SYN\ETB\n\ \\238\ETX\n\ - \\EOT\EOT\b\STX\STX\DC2\EOT\220\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ + \\EOT\EOT\b\STX\STX\DC2\EOT\222\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ \ It's common for `is_implementation` and `is_reference` to both be true but\n\ \ it's not always the case.\n\ \ In the TypeScript example above, observe that `Dog#` has an\n\ @@ -7739,22 +7741,22 @@ packedFileDescriptor \ implementations\" on the \"Animal#\" symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\220\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\222\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\220\ETX\a\CAN\n\ + \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\222\ETX\a\CAN\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\220\ETX\ESC\FS\n\ + \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\222\ETX\ESC\FS\n\ \P\n\ - \\EOT\EOT\b\STX\ETX\DC2\EOT\222\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\EOT\EOT\b\STX\ETX\DC2\EOT\224\ETX\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\222\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\224\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\222\ETX\a\EM\n\ + \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\224\ETX\a\EM\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\222\ETX\FS\GS\n\ + \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\224\ETX\FS\GS\n\ \\167\a\n\ - \\EOT\EOT\b\STX\EOT\DC2\EOT\239\ETX\STX\EM\SUB\213\ACK Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ + \\EOT\EOT\b\STX\EOT\DC2\EOT\241\ETX\STX\EM\SUB\213\ACK 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\ @@ -7773,387 +7775,387 @@ packedFileDescriptor \\"A Update registerInverseRelationships on adding a new field here.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\239\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\241\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\239\ETX\a\DC4\n\ + \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\241\ETX\a\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\239\ETX\ETB\CAN\n\ + \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\241\ETX\ETB\CAN\n\ \\136\ETX\n\ - \\STX\ENQ\ETX\DC2\ACK\248\ETX\NUL\142\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ + \\STX\ENQ\ETX\DC2\ACK\250\ETX\NUL\144\EOT\SOH\SUB\249\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\ETX\SOH\DC2\EOT\248\ETX\ENQ\SI\n\ + \\ETX\ENQ\ETX\SOH\DC2\EOT\250\ETX\ENQ\SI\n\ \v\n\ - \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\251\ETX\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ + \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\253\ETX\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\ETX\STX\NUL\SOH\DC2\EOT\251\ETX\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\253\ETX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\251\ETX\SUB\ESC\n\ + \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\253\ETX\SUB\ESC\n\ \T\n\ - \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\253\ETX\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ + \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\255\ETX\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\253\ETX\STX\f\n\ + \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\255\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\253\ETX\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\255\ETX\SI\DC2\n\ \,\n\ - \\EOT\ENQ\ETX\STX\STX\DC2\EOT\255\ETX\STX\SI\SUB\RS Is the symbol imported here?\n\ + \\EOT\ENQ\ETX\STX\STX\DC2\EOT\129\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\255\ETX\STX\b\n\ + \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\129\EOT\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\255\ETX\v\SO\n\ + \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\129\EOT\v\SO\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\129\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ + \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\131\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\129\EOT\STX\r\n\ + \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\131\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\129\EOT\DLE\DC3\n\ + \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\131\EOT\DLE\DC3\n\ \(\n\ - \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\131\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ + \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\133\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\131\EOT\STX\f\n\ + \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\133\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\131\EOT\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\133\EOT\SI\DC2\n\ \0\n\ - \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\133\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ + \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\135\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\133\EOT\STX\v\n\ + \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\135\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\133\EOT\SO\DC2\n\ + \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\135\EOT\SO\DC2\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\135\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ + \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\137\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\135\EOT\STX\ACK\n\ + \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\137\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\135\EOT\t\r\n\ + \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\137\EOT\t\r\n\ \\237\SOH\n\ - \\EOT\ENQ\ETX\STX\a\DC2\EOT\141\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ + \\EOT\ENQ\ETX\STX\a\DC2\EOT\143\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ \\n\ \ Applies to forward declarations for languages like C, C++\n\ \ and Objective-C, as well as `val` declarations in interface\n\ \ files in languages like SML and OCaml.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\141\EOT\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\143\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\141\EOT\SYN\SUB\n\ + \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\143\EOT\SYN\SUB\n\ \\f\n\ - \\STX\ENQ\EOT\DC2\ACK\144\EOT\NUL\237\EOT\SOH\n\ + \\STX\ENQ\EOT\DC2\ACK\146\EOT\NUL\239\EOT\SOH\n\ \\v\n\ - \\ETX\ENQ\EOT\SOH\DC2\EOT\144\EOT\ENQ\SI\n\ + \\ETX\ENQ\EOT\SOH\DC2\EOT\146\EOT\ENQ\SI\n\ \\v\n\ - \\ETX\ENQ\EOT\ETX\DC2\EOT\145\EOT\STX\FS\n\ + \\ETX\ENQ\EOT\ETX\DC2\EOT\147\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\145\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\147\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\147\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\149\EOT\STX\FS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\147\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\149\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\147\EOT\SUB\ESC\n\ + \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\149\EOT\SUB\ESC\n\ \;\n\ - \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\150\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ + \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\152\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\150\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\152\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\150\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\152\EOT\f\r\n\ \\ESC\n\ - \\EOT\ENQ\EOT\STX\STX\DC2\EOT\153\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ + \\EOT\ENQ\EOT\STX\STX\DC2\EOT\155\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\153\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\155\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\153\EOT\EM\SUB\n\ + \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\155\EOT\EM\SUB\n\ \2\n\ - \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\155\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ + \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\157\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\155\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\157\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\155\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\157\EOT\ETB\CAN\n\ \5\n\ - \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\158\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ + \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\160\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\158\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\160\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\158\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\160\EOT\f\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\159\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\161\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\159\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\161\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\159\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\161\EOT\SYN\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\159\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\161\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\159\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\161\EOT\EM(\n\ \\RS\n\ - \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\162\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ + \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\164\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\162\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\164\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\162\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\164\EOT\ETB\CAN\n\ \X\n\ - \\EOT\ENQ\EOT\STX\a\DC2\EOT\165\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ + \\EOT\ENQ\EOT\STX\a\DC2\EOT\167\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\165\EOT\STX\f\n\ + \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\167\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\165\EOT\SI\DLE\n\ + \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\167\EOT\SI\DLE\n\ \N\n\ - \\EOT\ENQ\EOT\STX\b\DC2\EOT\167\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ + \\EOT\ENQ\EOT\STX\b\DC2\EOT\169\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\167\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\169\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\167\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\169\EOT\SYN\ETB\n\ \[\n\ - \\EOT\ENQ\EOT\STX\t\DC2\EOT\169\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ + \\EOT\ENQ\EOT\STX\t\DC2\EOT\171\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\169\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\171\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\169\EOT\DC3\DC4\n\ + \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\171\EOT\DC3\DC4\n\ \.\n\ \\EOT\ENQ\EOT\STX\n\ - \\DC2\EOT\171\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ + \\DC2\EOT\173\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ \\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\SOH\DC2\EOT\171\EOT\STX\DC4\n\ + \\SOH\DC2\EOT\173\EOT\STX\DC4\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\STX\DC2\EOT\171\EOT\ETB\CAN\n\ + \\STX\DC2\EOT\173\EOT\ETB\CAN\n\ \'\n\ - \\EOT\ENQ\EOT\STX\v\DC2\EOT\173\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ + \\EOT\ENQ\EOT\STX\v\DC2\EOT\175\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\173\EOT\STX\EM\n\ + \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\175\EOT\STX\EM\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\173\EOT\FS\RS\n\ + \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\175\EOT\FS\RS\n\ \3\n\ - \\EOT\ENQ\EOT\STX\f\DC2\EOT\175\EOT\STX\ESC\SUB% Parameter definition and references\n\ + \\EOT\ENQ\EOT\STX\f\DC2\EOT\177\EOT\STX\ESC\SUB% Parameter definition and references\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\175\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\177\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\175\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\177\EOT\CAN\SUB\n\ \X\n\ - \\EOT\ENQ\EOT\STX\r\DC2\EOT\177\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ + \\EOT\ENQ\EOT\STX\r\DC2\EOT\179\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\177\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\179\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\177\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\179\EOT\DC4\SYN\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SO\DC2\EOT\179\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ + \\EOT\ENQ\EOT\STX\SO\DC2\EOT\181\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\179\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\181\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\179\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\181\EOT\ETB\EM\n\ \\205\SOH\n\ - \\EOT\ENQ\EOT\STX\SI\DC2\EOT\184\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ + \\EOT\ENQ\EOT\STX\SI\DC2\EOT\186\EOT\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\EOT\STX\SI\SOH\DC2\EOT\184\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\186\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\184\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\186\EOT\CAN\SUB\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\185\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\187\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\185\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\187\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\185\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\187\EOT\NAK\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\185\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\187\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\185\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\187\EOT\EM(\n\ \4\n\ - \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\188\EOT\STX\SUB\SUB& Function references, including calls\n\ + \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\190\EOT\STX\SUB\SUB& Function references, including calls\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\188\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\190\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\188\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\190\EOT\ETB\EM\n\ \(\n\ - \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\190\EOT\STX$\SUB\SUB Function definition only\n\ + \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\192\EOT\STX$\SUB\SUB Function definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\190\EOT\STX\RS\n\ + \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\192\EOT\STX\RS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\190\EOT!#\n\ + \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\192\EOT!#\n\ \7\n\ - \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\193\EOT\STX\ETB\SUB) Macro references, including invocations\n\ + \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\195\EOT\STX\ETB\SUB) Macro references, including invocations\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\193\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\195\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\193\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\195\EOT\DC4\SYN\n\ \%\n\ - \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\195\EOT\STX!\SUB\ETB Macro definition only\n\ + \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\197\EOT\STX!\SUB\ETB Macro definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\195\EOT\STX\ESC\n\ + \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\197\EOT\STX\ESC\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\195\EOT\RS \n\ + \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\197\EOT\RS \n\ \!\n\ - \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\198\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ + \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\200\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\198\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\200\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\198\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\200\EOT\DC3\NAK\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\200\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ + \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\202\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\200\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\202\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\200\EOT\SUB\FS\n\ + \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\202\EOT\SUB\FS\n\ \7\n\ - \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\203\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ + \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\205\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\203\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\205\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\203\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\205\EOT\CAN\SUB\n\ \\DC4\n\ - \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\206\EOT\STX\DC3\SUB\ACK `\\b`\n\ + \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\208\EOT\STX\DC3\SUB\ACK `\\b`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\206\EOT\STX\r\n\ + \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\208\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\206\EOT\DLE\DC2\n\ + \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\208\EOT\DLE\DC2\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\EM\DC2\EOT\208\EOT\STX\NAK\SUB\n\ + \\EOT\ENQ\EOT\STX\EM\DC2\EOT\210\EOT\STX\NAK\SUB\n\ \ `*`, `+`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\208\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\210\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\208\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\210\EOT\DC2\DC4\n\ \\DC3\n\ - \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\210\EOT\STX\NAK\SUB\ENQ `.`\n\ + \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\212\EOT\STX\NAK\SUB\ENQ `.`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\210\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\212\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\210\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\212\EOT\DC2\DC4\n\ \\"\n\ - \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\212\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ + \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\214\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\212\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\214\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\212\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\214\EOT\DC3\NAK\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\FS\DC2\EOT\214\EOT\STX\DC1\SUB\n\ + \\EOT\ENQ\EOT\STX\FS\DC2\EOT\216\EOT\STX\DC1\SUB\n\ \ `|`, `-`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\214\EOT\STX\v\n\ + \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\216\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\214\EOT\SO\DLE\n\ + \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\216\EOT\SO\DLE\n\ \0\n\ - \\EOT\ENQ\EOT\STX\GS\DC2\EOT\217\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ + \\EOT\ENQ\EOT\STX\GS\DC2\EOT\219\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\217\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\219\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\217\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\219\EOT\DC2\DC4\n\ \-\n\ - \\EOT\ENQ\EOT\STX\RS\DC2\EOT\219\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ + \\EOT\ENQ\EOT\STX\RS\DC2\EOT\221\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\219\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\221\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\219\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\221\EOT\CAN\SUB\n\ \_\n\ - \\EOT\ENQ\EOT\STX\US\DC2\EOT\221\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ + \\EOT\ENQ\EOT\STX\US\DC2\EOT\223\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\221\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\223\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\221\EOT\EM\ESC\n\ + \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\223\EOT\EM\ESC\n\ \G\n\ - \\EOT\ENQ\EOT\STX \DC2\EOT\223\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ + \\EOT\ENQ\EOT\STX \DC2\EOT\225\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\223\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\225\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\223\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\225\EOT\NAK\ETB\n\ \V\n\ - \\EOT\ENQ\EOT\STX!\DC2\EOT\225\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ + \\EOT\ENQ\EOT\STX!\DC2\EOT\227\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\225\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\227\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\225\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\227\EOT\NAK\ETB\n\ \9\n\ - \\EOT\ENQ\EOT\STX\"\DC2\EOT\227\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ + \\EOT\ENQ\EOT\STX\"\DC2\EOT\229\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\227\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\229\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\227\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\229\EOT\DC3\NAK\n\ \\US\n\ - \\EOT\ENQ\EOT\STX#\DC2\EOT\229\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ + \\EOT\ENQ\EOT\STX#\DC2\EOT\231\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\229\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\231\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\229\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\231\EOT\DC3\NAK\n\ \&\n\ - \\EOT\ENQ\EOT\STX$\DC2\EOT\232\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ + \\EOT\ENQ\EOT\STX$\DC2\EOT\234\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\232\EOT\STX\ENQ\n\ + \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\234\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\232\EOT\b\n\ + \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\234\EOT\b\n\ \\n\ \/\n\ - \\EOT\ENQ\EOT\STX%\DC2\EOT\234\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ + \\EOT\ENQ\EOT\STX%\DC2\EOT\236\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\234\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\236\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\234\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\236\EOT\DC1\DC3\n\ \,\n\ - \\EOT\ENQ\EOT\STX&\DC2\EOT\236\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ + \\EOT\ENQ\EOT\STX&\DC2\EOT\238\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\236\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\238\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\236\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\238\EOT\DC1\DC3\n\ \\249\SOH\n\ - \\STX\EOT\t\DC2\ACK\244\EOT\NUL\213\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ + \\STX\EOT\t\DC2\ACK\246\EOT\NUL\215\ENQ\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\244\EOT\b\DC2\n\ + \\ETX\EOT\t\SOH\DC2\EOT\246\EOT\b\DC2\n\ \\232\b\n\ - \\EOT\EOT\t\STX\NUL\DC2\EOT\140\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ + \\EOT\EOT\t\STX\NUL\DC2\EOT\142\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ \ elements:\n\ \\n\ \ - Four elements: `[startLine, startCharacter, endLine, endCharacter]`\n\ @@ -8178,36 +8180,36 @@ packedFileDescriptor \ improvements make up for it.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\140\ENQ\STX\n\ + \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\142\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\140\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\142\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\140\ENQ\DC1\SYN\n\ + \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\142\ENQ\DC1\SYN\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\140\ENQ\EM\SUB\n\ + \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\142\ENQ\EM\SUB\n\ \\138\SOH\n\ - \\EOT\EOT\t\STX\SOH\DC2\EOT\143\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ + \\EOT\EOT\t\STX\SOH\DC2\EOT\145\ENQ\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\143\ENQ\STX\b\n\ + \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\145\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\143\ENQ\t\SI\n\ + \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\145\ENQ\t\SI\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\143\ENQ\DC2\DC3\n\ + \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\145\ENQ\DC2\DC3\n\ \\151\SOH\n\ - \\EOT\EOT\t\STX\STX\DC2\EOT\146\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ + \\EOT\EOT\t\STX\STX\DC2\EOT\148\ENQ\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\146\ENQ\STX\a\n\ + \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\148\ENQ\STX\a\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\146\ENQ\b\DC4\n\ + \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\148\ENQ\b\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\146\ENQ\ETB\CAN\n\ + \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\148\ENQ\ETB\CAN\n\ \\241\ETX\n\ - \\EOT\EOT\t\STX\ETX\DC2\EOT\155\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ + \\EOT\EOT\t\STX\ETX\DC2\EOT\157\ENQ\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\ @@ -8217,37 +8219,37 @@ packedFileDescriptor \ which commonly allow for type-changing assignment.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\155\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\157\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\155\ENQ\v\DC1\n\ + \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\157\ENQ\v\DC1\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\155\ENQ\DC2(\n\ + \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\157\ENQ\DC2(\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\155\ENQ+,\n\ + \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\157\ENQ+,\n\ \X\n\ - \\EOT\EOT\t\STX\EOT\DC2\EOT\157\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ + \\EOT\EOT\t\STX\EOT\DC2\EOT\159\ENQ\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\157\ENQ\STX\f\n\ + \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\159\ENQ\STX\f\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\157\ENQ\r\CAN\n\ + \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\159\ENQ\r\CAN\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\157\ENQ\ESC\FS\n\ + \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\159\ENQ\ESC\FS\n\ \W\n\ - \\EOT\EOT\t\STX\ENQ\DC2\EOT\159\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ + \\EOT\EOT\t\STX\ENQ\DC2\EOT\161\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\159\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\161\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\159\ENQ\v\NAK\n\ + \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\161\ENQ\v\NAK\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\159\ENQ\SYN!\n\ + \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\161\ENQ\SYN!\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\159\ENQ$%\n\ + \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\161\ENQ$%\n\ \\183\SO\n\ - \\EOT\EOT\t\STX\ACK\DC2\EOT\212\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ + \\EOT\EOT\t\STX\ACK\DC2\EOT\214\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ \ source range of the nearest non-trivial enclosing AST node. This range must\n\ \ enclose the `range` field. Example applications that make use of the\n\ \ enclosing_range field:\n\ @@ -8301,152 +8303,152 @@ packedFileDescriptor \ ```\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\212\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\214\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\212\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\214\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\212\ENQ\DC1 \n\ + \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\214\ENQ\DC1 \n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\212\ENQ#$\n\ + \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\214\ENQ#$\n\ \w\n\ \\STX\EOT\n\ - \\DC2\ACK\217\ENQ\NUL\228\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ + \\DC2\ACK\219\ENQ\NUL\230\ENQ\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\217\ENQ\b\DC2\n\ + \\SOH\DC2\EOT\219\ENQ\b\DC2\n\ \W\n\ \\EOT\EOT\n\ - \\STX\NUL\DC2\EOT\219\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ + \\STX\NUL\DC2\EOT\221\ENQ\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\219\ENQ\STX\n\ + \\STX\NUL\ACK\DC2\EOT\221\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\SOH\DC2\EOT\219\ENQ\v\DC3\n\ + \\STX\NUL\SOH\DC2\EOT\221\ENQ\v\DC3\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ETX\DC2\EOT\219\ENQ\SYN\ETB\n\ + \\STX\NUL\ETX\DC2\EOT\221\ENQ\SYN\ETB\n\ \]\n\ \\EOT\EOT\n\ - \\STX\SOH\DC2\EOT\221\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ + \\STX\SOH\DC2\EOT\223\ENQ\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\221\ENQ\STX\b\n\ + \\STX\SOH\ENQ\DC2\EOT\223\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\SOH\DC2\EOT\221\ENQ\t\r\n\ + \\STX\SOH\SOH\DC2\EOT\223\ENQ\t\r\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ETX\DC2\EOT\221\ENQ\DLE\DC1\n\ + \\STX\SOH\ETX\DC2\EOT\223\ENQ\DLE\DC1\n\ \+\n\ \\EOT\EOT\n\ - \\STX\STX\DC2\EOT\223\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ + \\STX\STX\DC2\EOT\225\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ENQ\DC2\EOT\223\ENQ\STX\b\n\ + \\STX\STX\ENQ\DC2\EOT\225\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\SOH\DC2\EOT\223\ENQ\t\DLE\n\ + \\STX\STX\SOH\DC2\EOT\225\ENQ\t\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ETX\DC2\EOT\223\ENQ\DC3\DC4\n\ + \\STX\STX\ETX\DC2\EOT\225\ENQ\DC3\DC4\n\ \~\n\ \\EOT\EOT\n\ - \\STX\ETX\DC2\EOT\226\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ + \\STX\ETX\DC2\EOT\228\ENQ\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\226\ENQ\STX\b\n\ + \\STX\ETX\ENQ\DC2\EOT\228\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\SOH\DC2\EOT\226\ENQ\t\SI\n\ + \\STX\ETX\SOH\DC2\EOT\228\ENQ\t\SI\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ETX\DC2\EOT\226\ENQ\DC2\DC3\n\ + \\STX\ETX\ETX\DC2\EOT\228\ENQ\DC2\DC3\n\ \\f\n\ \\EOT\EOT\n\ - \\STX\EOT\DC2\EOT\227\ENQ\STX\"\n\ + \\STX\EOT\DC2\EOT\229\ENQ\STX\"\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\EOT\DC2\EOT\227\ENQ\STX\n\ + \\STX\EOT\EOT\DC2\EOT\229\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ACK\DC2\EOT\227\ENQ\v\CAN\n\ + \\STX\EOT\ACK\DC2\EOT\229\ENQ\v\CAN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\SOH\DC2\EOT\227\ENQ\EM\GS\n\ + \\STX\EOT\SOH\DC2\EOT\229\ENQ\EM\GS\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ETX\DC2\EOT\227\ENQ !\n\ + \\STX\EOT\ETX\DC2\EOT\229\ENQ !\n\ \\f\n\ - \\STX\ENQ\ENQ\DC2\ACK\230\ENQ\NUL\236\ENQ\SOH\n\ + \\STX\ENQ\ENQ\DC2\ACK\232\ENQ\NUL\238\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ENQ\SOH\DC2\EOT\230\ENQ\ENQ\r\n\ + \\ETX\ENQ\ENQ\SOH\DC2\EOT\232\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\231\ENQ\STX\SUB\n\ + \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\233\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\231\ENQ\STX\NAK\n\ + \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\233\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\231\ENQ\CAN\EM\n\ + \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\233\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\232\ENQ\STX\f\n\ + \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\234\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\232\ENQ\STX\a\n\ + \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\234\ENQ\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\232\ENQ\n\ + \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\234\ENQ\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\233\ENQ\STX\SO\n\ + \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\235\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\233\ENQ\STX\t\n\ + \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\235\ENQ\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\233\ENQ\f\r\n\ + \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\235\ENQ\f\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\234\ENQ\STX\DC2\n\ + \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\236\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\234\ENQ\STX\r\n\ + \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\236\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\234\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\236\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\235\ENQ\STX\v\n\ + \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\237\ENQ\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\235\ENQ\STX\ACK\n\ + \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\237\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\235\ENQ\t\n\ + \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\237\ENQ\t\n\ \\n\ \\f\n\ - \\STX\ENQ\ACK\DC2\ACK\238\ENQ\NUL\242\ENQ\SOH\n\ + \\STX\ENQ\ACK\DC2\ACK\240\ENQ\NUL\244\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ACK\SOH\DC2\EOT\238\ENQ\ENQ\DC2\n\ + \\ETX\ENQ\ACK\SOH\DC2\EOT\240\ENQ\ENQ\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\239\ENQ\STX\US\n\ + \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\241\ENQ\STX\US\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\239\ENQ\STX\SUB\n\ + \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\241\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\239\ENQ\GS\RS\n\ + \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\241\ENQ\GS\RS\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\240\ENQ\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\242\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\240\ENQ\STX\r\n\ + \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\242\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\240\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\242\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\STX\DC2\EOT\241\ENQ\STX\DC1\n\ + \\EOT\ENQ\ACK\STX\STX\DC2\EOT\243\ENQ\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\241\ENQ\STX\f\n\ + \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\243\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\241\ENQ\SI\DLE\n\ + \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\243\ENQ\SI\DLE\n\ \\208\ETX\n\ - \\STX\ENQ\a\DC2\ACK\250\ENQ\NUL\240\ACK\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ + \\STX\ENQ\a\DC2\ACK\252\ENQ\NUL\242\ACK\SOH\SUB\193\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\ @@ -8454,708 +8456,708 @@ packedFileDescriptor \ Feel free to send a pull-request to add missing programming languages.\n\ \\n\ \\v\n\ - \\ETX\ENQ\a\SOH\DC2\EOT\250\ENQ\ENQ\r\n\ + \\ETX\ENQ\a\SOH\DC2\EOT\252\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\NUL\DC2\EOT\251\ENQ\STX\SUB\n\ + \\EOT\ENQ\a\STX\NUL\DC2\EOT\253\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\251\ENQ\STX\NAK\n\ + \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\253\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\251\ENQ\CAN\EM\n\ + \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\253\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\a\STX\SOH\DC2\EOT\252\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\SOH\DC2\EOT\254\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\252\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\254\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\252\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\254\ENQ\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\STX\DC2\EOT\253\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\STX\DC2\EOT\255\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\253\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\255\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\253\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\255\ENQ\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETX\DC2\EOT\254\ENQ\STX\v\n\ + \\EOT\ENQ\a\STX\ETX\DC2\EOT\128\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\254\ENQ\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\128\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\254\ENQ\b\n\ + \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\128\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\EOT\DC2\EOT\255\ENQ\STX\v\n\ + \\EOT\ENQ\a\STX\EOT\DC2\EOT\129\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\255\ENQ\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\129\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\255\ENQ\b\n\ + \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\129\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\ENQ\DC2\EOT\128\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ENQ\DC2\EOT\130\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\128\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\130\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\128\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\130\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ACK\DC2\EOT\129\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\ACK\DC2\EOT\131\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\129\ACK\STX\n\ + \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\131\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\129\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\131\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\a\DC2\EOT\130\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\a\DC2\EOT\132\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\130\ACK\STX\n\ + \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\132\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\130\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\132\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\b\DC2\EOT\131\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\b\DC2\EOT\133\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\131\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\133\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\131\ACK\b\n\ + \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\133\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\t\DC2\EOT\132\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\t\DC2\EOT\134\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\132\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\134\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\132\ACK\b\n\ + \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\134\ACK\b\n\ \\n\ \\f\n\ \\EOT\ENQ\a\STX\n\ - \\DC2\EOT\133\ACK\STX\SO\n\ + \\DC2\EOT\135\ACK\STX\SO\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\SOH\DC2\EOT\133\ACK\STX\b\n\ + \\SOH\DC2\EOT\135\ACK\STX\b\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\STX\DC2\EOT\133\ACK\v\r\n\ + \\STX\DC2\EOT\135\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\v\DC2\EOT\134\ACK\STX\t\n\ + \\EOT\ENQ\a\STX\v\DC2\EOT\136\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\134\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\136\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\134\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\136\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX\f\DC2\EOT\135\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\f\DC2\EOT\137\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\135\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\137\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\135\ACK\n\ + \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\137\ACK\n\ \\f\n\ \H\n\ - \\EOT\ENQ\a\STX\r\DC2\EOT\136\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ + \\EOT\ENQ\a\STX\r\DC2\EOT\138\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\136\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\138\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\136\ACK\b\n\ + \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\138\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SO\DC2\EOT\137\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\SO\DC2\EOT\139\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\137\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\139\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\137\ACK\b\n\ + \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\139\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SI\DC2\EOT\138\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\SI\DC2\EOT\140\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\138\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\140\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\138\ACK\v\f\n\ + \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\140\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX\DLE\DC2\EOT\139\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\DLE\DC2\EOT\141\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\139\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\141\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\139\ACK\f\r\n\ + \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\141\ACK\f\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC1\DC2\EOT\140\ACK\STX\DC4\n\ + \\EOT\ENQ\a\STX\DC1\DC2\EOT\142\ACK\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\140\ACK\STX\SO\n\ + \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\142\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\140\ACK\DC1\DC3\n\ + \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\142\ACK\DC1\DC3\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC2\DC2\EOT\141\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX\DC2\DC2\EOT\143\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\141\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\143\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\141\ACK\SI\DLE\n\ + \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\143\ACK\SI\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC3\DC2\EOT\142\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\DC3\DC2\EOT\144\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\142\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\144\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\142\ACK\b\n\ + \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\144\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC4\DC2\EOT\143\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\DC4\DC2\EOT\145\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\143\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\145\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\143\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\145\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\NAK\DC2\EOT\144\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\NAK\DC2\EOT\146\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\144\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\146\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\144\ACK\t\n\ + \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\146\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SYN\DC2\EOT\145\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SYN\DC2\EOT\147\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\145\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\147\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\145\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\147\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETB\DC2\EOT\146\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ETB\DC2\EOT\148\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\146\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\148\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\146\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\148\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\CAN\DC2\EOT\147\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\CAN\DC2\EOT\149\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\147\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\149\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\147\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\149\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\EM\DC2\EOT\148\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\EM\DC2\EOT\150\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\148\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\150\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\148\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\150\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\SUB\DC2\EOT\149\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SUB\DC2\EOT\151\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\149\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\151\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\149\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\151\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ESC\DC2\EOT\150\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\ESC\DC2\EOT\152\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\150\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\152\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\150\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\152\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\FS\DC2\EOT\151\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\FS\DC2\EOT\153\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\151\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\153\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\151\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\153\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\GS\DC2\EOT\152\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\GS\DC2\EOT\154\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\152\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\154\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\152\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\154\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\RS\DC2\EOT\153\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\RS\DC2\EOT\155\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\153\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\155\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\153\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\155\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\US\DC2\EOT\154\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX\US\DC2\EOT\156\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\154\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\156\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\154\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\156\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX \DC2\EOT\155\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX \DC2\EOT\157\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX \SOH\DC2\EOT\155\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX \SOH\DC2\EOT\157\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX \STX\DC2\EOT\155\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX \STX\DC2\EOT\157\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX!\DC2\EOT\156\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX!\DC2\EOT\158\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\156\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\158\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\STX\DC2\EOT\156\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX!\STX\DC2\EOT\158\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\"\DC2\EOT\157\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\"\DC2\EOT\159\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\157\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\159\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\157\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\159\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX#\DC2\EOT\158\ACK\STX\n\ + \\EOT\ENQ\a\STX#\DC2\EOT\160\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\158\ACK\STX\EOT\n\ + \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\160\ACK\STX\EOT\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\STX\DC2\EOT\158\ACK\a\t\n\ + \\ENQ\ENQ\a\STX#\STX\DC2\EOT\160\ACK\a\t\n\ \\f\n\ - \\EOT\ENQ\a\STX$\DC2\EOT\159\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX$\DC2\EOT\161\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\159\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\161\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\STX\DC2\EOT\159\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX$\STX\DC2\EOT\161\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX%\DC2\EOT\160\ACK\STX\r\n\ + \\EOT\ENQ\a\STX%\DC2\EOT\162\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\160\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\162\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\STX\DC2\EOT\160\ACK\v\f\n\ + \\ENQ\ENQ\a\STX%\STX\DC2\EOT\162\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX&\DC2\EOT\161\ACK\STX\f\n\ + \\EOT\ENQ\a\STX&\DC2\EOT\163\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\161\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\163\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\STX\DC2\EOT\161\ACK\t\v\n\ + \\ENQ\ENQ\a\STX&\STX\DC2\EOT\163\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX'\DC2\EOT\162\ACK\STX\f\n\ + \\EOT\ENQ\a\STX'\DC2\EOT\164\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\162\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\164\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\STX\DC2\EOT\162\ACK\t\v\n\ + \\ENQ\ENQ\a\STX'\STX\DC2\EOT\164\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX(\DC2\EOT\163\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX(\DC2\EOT\165\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\163\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\165\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\STX\DC2\EOT\163\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX(\STX\DC2\EOT\165\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX)\DC2\EOT\164\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX)\DC2\EOT\166\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\164\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\166\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\STX\DC2\EOT\164\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX)\STX\DC2\EOT\166\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX*\DC2\EOT\165\ACK\STX\r\n\ + \\EOT\ENQ\a\STX*\DC2\EOT\167\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\165\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\167\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\STX\DC2\EOT\165\ACK\n\ + \\ENQ\ENQ\a\STX*\STX\DC2\EOT\167\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX+\DC2\EOT\166\ACK\STX\v\n\ + \\EOT\ENQ\a\STX+\DC2\EOT\168\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\166\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\168\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\STX\DC2\EOT\166\ACK\b\n\ + \\ENQ\ENQ\a\STX+\STX\DC2\EOT\168\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX,\DC2\EOT\167\ACK\STX\t\n\ + \\EOT\ENQ\a\STX,\DC2\EOT\169\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\167\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\169\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\STX\DC2\EOT\167\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX,\STX\DC2\EOT\169\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX-\DC2\EOT\168\ACK\STX\f\n\ + \\EOT\ENQ\a\STX-\DC2\EOT\170\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\168\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\170\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\STX\DC2\EOT\168\ACK\t\v\n\ + \\ENQ\ENQ\a\STX-\STX\DC2\EOT\170\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX.\DC2\EOT\169\ACK\STX\v\n\ + \\EOT\ENQ\a\STX.\DC2\EOT\171\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\169\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\171\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\STX\DC2\EOT\169\ACK\t\n\ + \\ENQ\ENQ\a\STX.\STX\DC2\EOT\171\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX/\DC2\EOT\170\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX/\DC2\EOT\172\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\170\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\172\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\STX\DC2\EOT\170\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX/\STX\DC2\EOT\172\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX0\DC2\EOT\171\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STX0\DC2\EOT\173\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\171\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\173\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\STX\DC2\EOT\171\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STX0\STX\DC2\EOT\173\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STX1\DC2\EOT\172\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX1\DC2\EOT\174\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\172\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\174\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\STX\DC2\EOT\172\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX1\STX\DC2\EOT\174\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX2\DC2\EOT\173\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX2\DC2\EOT\175\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\173\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\175\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\STX\DC2\EOT\173\ACK\v\r\n\ + \\ENQ\ENQ\a\STX2\STX\DC2\EOT\175\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX3\DC2\EOT\174\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX3\DC2\EOT\176\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\174\ACK\STX\n\ + \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\176\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\STX\DC2\EOT\174\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STX3\STX\DC2\EOT\176\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX4\DC2\EOT\175\ACK\STX\r\n\ + \\EOT\ENQ\a\STX4\DC2\EOT\177\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\175\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\177\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\STX\DC2\EOT\175\ACK\v\f\n\ + \\ENQ\ENQ\a\STX4\STX\DC2\EOT\177\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX5\DC2\EOT\176\ACK\STX\r\n\ + \\EOT\ENQ\a\STX5\DC2\EOT\178\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\176\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\178\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\STX\DC2\EOT\176\ACK\n\ + \\ENQ\ENQ\a\STX5\STX\DC2\EOT\178\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX6\DC2\EOT\177\ACK\STX\f\n\ + \\EOT\ENQ\a\STX6\DC2\EOT\179\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\177\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\179\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\STX\DC2\EOT\177\ACK\t\v\n\ + \\ENQ\ENQ\a\STX6\STX\DC2\EOT\179\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX7\DC2\EOT\178\ACK\STX\f\n\ + \\EOT\ENQ\a\STX7\DC2\EOT\180\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\178\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\180\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\STX\DC2\EOT\178\ACK\t\v\n\ + \\ENQ\ENQ\a\STX7\STX\DC2\EOT\180\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX8\DC2\EOT\179\ACK\STX\v\n\ + \\EOT\ENQ\a\STX8\DC2\EOT\181\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\179\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\181\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\STX\DC2\EOT\179\ACK\b\n\ + \\ENQ\ENQ\a\STX8\STX\DC2\EOT\181\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX9\DC2\EOT\180\ACK\STX\r\n\ + \\EOT\ENQ\a\STX9\DC2\EOT\182\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\180\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\182\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\STX\DC2\EOT\180\ACK\t\f\n\ + \\ENQ\ENQ\a\STX9\STX\DC2\EOT\182\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STX:\DC2\EOT\181\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX:\DC2\EOT\183\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\181\ACK\STX\n\ + \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\183\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\STX\DC2\EOT\181\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX:\STX\DC2\EOT\183\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX;\DC2\EOT\182\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX;\DC2\EOT\184\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\182\ACK\STX\n\ + \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\184\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\STX\DC2\EOT\182\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX;\STX\DC2\EOT\184\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX<\DC2\EOT\183\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX<\DC2\EOT\185\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\183\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\185\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\STX\DC2\EOT\183\ACK\v\r\n\ + \\ENQ\ENQ\a\STX<\STX\DC2\EOT\185\ACK\v\r\n\ \(\n\ - \\EOT\ENQ\a\STX=\DC2\EOT\184\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ + \\EOT\ENQ\a\STX=\DC2\EOT\186\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\184\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\186\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\STX\DC2\EOT\184\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX=\STX\DC2\EOT\186\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX>\DC2\EOT\185\ACK\STX\v\n\ + \\EOT\ENQ\a\STX>\DC2\EOT\187\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\185\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\187\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\STX\DC2\EOT\185\ACK\b\n\ + \\ENQ\ENQ\a\STX>\STX\DC2\EOT\187\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX?\DC2\EOT\186\ACK\STX\r\n\ + \\EOT\ENQ\a\STX?\DC2\EOT\188\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\186\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\188\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\STX\DC2\EOT\186\ACK\n\ + \\ENQ\ENQ\a\STX?\STX\DC2\EOT\188\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX@\DC2\EOT\187\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STX@\DC2\EOT\189\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\187\ACK\STX\r\n\ + \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\189\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\STX\DC2\EOT\187\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STX@\STX\DC2\EOT\189\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXA\DC2\EOT\188\ACK\STX\NAK\n\ + \\EOT\ENQ\a\STXA\DC2\EOT\190\ACK\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\188\ACK\STX\SI\n\ + \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\190\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\STX\DC2\EOT\188\ACK\DC2\DC4\n\ + \\ENQ\ENQ\a\STXA\STX\DC2\EOT\190\ACK\DC2\DC4\n\ \\f\n\ - \\EOT\ENQ\a\STXB\DC2\EOT\189\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXB\DC2\EOT\191\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\189\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\191\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\STX\DC2\EOT\189\ACK\v\r\n\ + \\ENQ\ENQ\a\STXB\STX\DC2\EOT\191\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXC\DC2\EOT\190\ACK\STX\v\n\ + \\EOT\ENQ\a\STXC\DC2\EOT\192\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\190\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\192\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\STX\DC2\EOT\190\ACK\b\n\ + \\ENQ\ENQ\a\STXC\STX\DC2\EOT\192\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXD\DC2\EOT\191\ACK\STX\r\n\ + \\EOT\ENQ\a\STXD\DC2\EOT\193\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\191\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\193\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\STX\DC2\EOT\191\ACK\n\ + \\ENQ\ENQ\a\STXD\STX\DC2\EOT\193\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STXE\DC2\EOT\192\ACK\STX\f\n\ + \\EOT\ENQ\a\STXE\DC2\EOT\194\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\192\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\194\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\STX\DC2\EOT\192\ACK\t\v\n\ + \\ENQ\ENQ\a\STXE\STX\DC2\EOT\194\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXF\DC2\EOT\193\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXF\DC2\EOT\195\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\193\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\195\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\STX\DC2\EOT\193\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXF\STX\DC2\EOT\195\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXG\DC2\EOT\194\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXG\DC2\EOT\196\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\194\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\196\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\STX\DC2\EOT\194\ACK\v\r\n\ + \\ENQ\ENQ\a\STXG\STX\DC2\EOT\196\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXH\DC2\EOT\195\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STXH\DC2\EOT\197\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\195\ACK\STX\n\ + \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\197\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\STX\DC2\EOT\195\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STXH\STX\DC2\EOT\197\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STXI\DC2\EOT\196\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXI\DC2\EOT\198\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\196\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\198\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\STX\DC2\EOT\196\ACK\v\r\n\ + \\ENQ\ENQ\a\STXI\STX\DC2\EOT\198\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXJ\DC2\EOT\197\ACK\STX\t\n\ + \\EOT\ENQ\a\STXJ\DC2\EOT\199\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\197\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\199\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\197\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\199\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STXK\DC2\EOT\198\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXK\DC2\EOT\200\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\198\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\200\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\STX\DC2\EOT\198\ACK\v\r\n\ + \\ENQ\ENQ\a\STXK\STX\DC2\EOT\200\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXL\DC2\EOT\199\ACK\STX\f\n\ + \\EOT\ENQ\a\STXL\DC2\EOT\201\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\199\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\201\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\STX\DC2\EOT\199\ACK\t\v\n\ + \\ENQ\ENQ\a\STXL\STX\DC2\EOT\201\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXM\DC2\EOT\200\ACK\STX\r\n\ + \\EOT\ENQ\a\STXM\DC2\EOT\202\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\200\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\202\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\STX\DC2\EOT\200\ACK\n\ + \\ENQ\ENQ\a\STXM\STX\DC2\EOT\202\ACK\n\ \\f\n\ \2\n\ - \\EOT\ENQ\a\STXN\DC2\EOT\201\ACK\STX\SO\"$ Internal language for testing SCIP\n\ + \\EOT\ENQ\a\STXN\DC2\EOT\203\ACK\STX\SO\"$ Internal language for testing SCIP\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\201\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\203\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\STX\DC2\EOT\201\ACK\n\ + \\ENQ\ENQ\a\STXN\STX\DC2\EOT\203\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STXO\DC2\EOT\202\ACK\STX\f\n\ + \\EOT\ENQ\a\STXO\DC2\EOT\204\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\202\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\204\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\STX\DC2\EOT\202\ACK\t\v\n\ + \\ENQ\ENQ\a\STXO\STX\DC2\EOT\204\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXP\DC2\EOT\203\ACK\STX\f\n\ + \\EOT\ENQ\a\STXP\DC2\EOT\205\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\203\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\205\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\STX\DC2\EOT\203\ACK\t\v\n\ + \\ENQ\ENQ\a\STXP\STX\DC2\EOT\205\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXQ\DC2\EOT\204\ACK\STX\f\n\ + \\EOT\ENQ\a\STXQ\DC2\EOT\206\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\204\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\206\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\204\ACK\t\v\n\ + \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\206\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXR\DC2\EOT\205\ACK\STX\v\n\ + \\EOT\ENQ\a\STXR\DC2\EOT\207\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\205\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\STX\DC2\EOT\205\ACK\b\n\ + \\ENQ\ENQ\a\STXR\STX\DC2\EOT\207\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXS\DC2\EOT\206\ACK\STX\f\n\ + \\EOT\ENQ\a\STXS\DC2\EOT\208\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\206\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\208\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\STX\DC2\EOT\206\ACK\t\v\n\ + \\ENQ\ENQ\a\STXS\STX\DC2\EOT\208\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXT\DC2\EOT\207\ACK\STX\v\n\ + \\EOT\ENQ\a\STXT\DC2\EOT\209\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\209\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\STX\DC2\EOT\207\ACK\b\n\ + \\ENQ\ENQ\a\STXT\STX\DC2\EOT\209\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXU\DC2\EOT\208\ACK\STX\v\n\ + \\EOT\ENQ\a\STXU\DC2\EOT\210\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\208\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\210\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\STX\DC2\EOT\208\ACK\b\n\ + \\ENQ\ENQ\a\STXU\STX\DC2\EOT\210\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXV\DC2\EOT\209\ACK\STX\f\n\ + \\EOT\ENQ\a\STXV\DC2\EOT\211\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\209\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\211\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\STX\DC2\EOT\209\ACK\t\v\n\ + \\ENQ\ENQ\a\STXV\STX\DC2\EOT\211\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXW\DC2\EOT\210\ACK\STX\f\n\ + \\EOT\ENQ\a\STXW\DC2\EOT\212\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\210\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\212\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\STX\DC2\EOT\210\ACK\n\ + \\ENQ\ENQ\a\STXW\STX\DC2\EOT\212\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STXX\DC2\EOT\211\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXX\DC2\EOT\213\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\211\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\213\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\STX\DC2\EOT\211\ACK\v\r\n\ + \\ENQ\ENQ\a\STXX\STX\DC2\EOT\213\ACK\v\r\n\ \\DC4\n\ - \\EOT\ENQ\a\STXY\DC2\EOT\212\ACK\STX\DC3\"\ACK Bash\n\ + \\EOT\ENQ\a\STXY\DC2\EOT\214\ACK\STX\DC3\"\ACK Bash\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\212\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\214\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\STX\DC2\EOT\212\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXY\STX\DC2\EOT\214\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXZ\DC2\EOT\213\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXZ\DC2\EOT\215\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\213\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\215\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\213\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\215\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX[\DC2\EOT\214\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX[\DC2\EOT\216\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\214\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\216\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\STX\DC2\EOT\214\ACK\n\ + \\ENQ\ENQ\a\STX[\STX\DC2\EOT\216\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\\\DC2\EOT\215\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\\\DC2\EOT\217\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\215\ACK\STX\n\ + \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\217\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\215\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\217\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX]\DC2\EOT\216\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX]\DC2\EOT\218\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\216\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\218\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\STX\DC2\EOT\216\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX]\STX\DC2\EOT\218\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX^\DC2\EOT\217\ACK\STX\f\n\ + \\EOT\ENQ\a\STX^\DC2\EOT\219\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\217\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\219\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\STX\DC2\EOT\217\ACK\n\ + \\ENQ\ENQ\a\STX^\STX\DC2\EOT\219\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STX_\DC2\EOT\218\ACK\STX\f\n\ + \\EOT\ENQ\a\STX_\DC2\EOT\220\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\218\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\220\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\STX\DC2\EOT\218\ACK\b\v\n\ + \\ENQ\ENQ\a\STX_\STX\DC2\EOT\220\ACK\b\v\n\ \\f\n\ - \\EOT\ENQ\a\STX`\DC2\EOT\219\ACK\STX\f\n\ + \\EOT\ENQ\a\STX`\DC2\EOT\221\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\219\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\221\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\STX\DC2\EOT\219\ACK\t\v\n\ + \\ENQ\ENQ\a\STX`\STX\DC2\EOT\221\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXa\DC2\EOT\220\ACK\STX\v\n\ + \\EOT\ENQ\a\STXa\DC2\EOT\222\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\220\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\222\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\STX\DC2\EOT\220\ACK\b\n\ + \\ENQ\ENQ\a\STXa\STX\DC2\EOT\222\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXb\DC2\EOT\221\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXb\DC2\EOT\223\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\221\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\223\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\STX\DC2\EOT\221\ACK\v\SO\n\ + \\ENQ\ENQ\a\STXb\STX\DC2\EOT\223\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXc\DC2\EOT\222\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXc\DC2\EOT\224\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\222\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\224\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\STX\DC2\EOT\222\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXc\STX\DC2\EOT\224\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXd\DC2\EOT\223\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STXd\DC2\EOT\225\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\223\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\225\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\STX\DC2\EOT\223\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STXd\STX\DC2\EOT\225\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STXe\DC2\EOT\224\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STXe\DC2\EOT\226\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\224\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\226\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\STX\DC2\EOT\224\ACK\f\SI\n\ + \\ENQ\ENQ\a\STXe\STX\DC2\EOT\226\ACK\f\SI\n\ \\f\n\ - \\EOT\ENQ\a\STXf\DC2\EOT\225\ACK\STX\r\n\ + \\EOT\ENQ\a\STXf\DC2\EOT\227\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\225\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\227\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\STX\DC2\EOT\225\ACK\t\f\n\ + \\ENQ\ENQ\a\STXf\STX\DC2\EOT\227\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STXg\DC2\EOT\226\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STXg\DC2\EOT\228\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\226\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\228\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\STX\DC2\EOT\226\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXg\STX\DC2\EOT\228\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXh\DC2\EOT\227\ACK\STX\v\n\ + \\EOT\ENQ\a\STXh\DC2\EOT\229\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\227\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\STX\DC2\EOT\227\ACK\b\n\ + \\ENQ\ENQ\a\STXh\STX\DC2\EOT\229\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXi\DC2\EOT\228\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXi\DC2\EOT\230\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\228\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\230\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\STX\DC2\EOT\228\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXi\STX\DC2\EOT\230\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXj\DC2\EOT\229\ACK\STX\v\n\ + \\EOT\ENQ\a\STXj\DC2\EOT\231\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\231\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\STX\DC2\EOT\229\ACK\b\n\ + \\ENQ\ENQ\a\STXj\STX\DC2\EOT\231\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXk\DC2\EOT\230\ACK\STX\v\n\ + \\EOT\ENQ\a\STXk\DC2\EOT\232\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\230\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\232\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\STX\DC2\EOT\230\ACK\b\n\ + \\ENQ\ENQ\a\STXk\STX\DC2\EOT\232\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXl\DC2\EOT\231\ACK\STX\f\n\ + \\EOT\ENQ\a\STXl\DC2\EOT\233\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\231\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\233\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\STX\DC2\EOT\231\ACK\t\v\n\ + \\ENQ\ENQ\a\STXl\STX\DC2\EOT\233\ACK\t\v\n\ \\147\ETX\n\ - \\EOT\ENQ\a\STXm\DC2\EOT\232\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ + \\EOT\ENQ\a\STXm\DC2\EOT\234\ACK\STX\v\"\132\ETX NextLanguage = 111;\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\ @@ -9164,7 +9166,7 @@ packedFileDescriptor \ 5. (optional) Add a brief comment behind the language if the name is not self-explanatory\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\232\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\234\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\STX\DC2\EOT\232\ACK\b\n\ + \\ENQ\ENQ\a\STXm\STX\DC2\EOT\234\ACK\b\n\ \b\ACKproto3" \ No newline at end of file diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 19eb8ba0..3e98c1bc 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -4664,8 +4664,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ g\x10h\x12\x08\n\x04VHDL\x10i\x12\x0f\n\x0bVisualBasic\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-gi\ - thub.com/sourcegraph/scip/bindings/go/scip/J\xd7\xb7\x02\n\x07\x12\x05\n\ - \0\xf0\x06\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20ind\ + thub.com/sourcegraph/scip/bindings/go/scip/J\xce\xb8\x02\n\x07\x12\x05\n\ + \0\xf2\x06\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20ind\ ex\x20contains\x20one\x20or\x20more\x20pieces\x20of\x20information\x20ab\ out\x20a\x20given\x20piece\x20of\n\x20source\x20code\x20or\x20software\ \x20artifact.\x20Complementary\x20information\x20can\x20be\x20merged\n\ @@ -4926,7 +4926,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\xc8\x01\x02\x15\n\r\n\x05\ \x04\x05\x02\x02\x05\x12\x04\xc8\x01\x02\x08\n\r\n\x05\x04\x05\x02\x02\ \x01\x12\x04\xc8\x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\xc8\x01\ - \x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xcb\x01\0\xe2\x01\x01\n\x0b\n\x03\ + \x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xcb\x01\0\xe4\x01\x01\n\x0b\n\x03\ \x04\x06\x01\x12\x04\xcb\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\x06\ \xcc\x01\x02\xde\x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\xcc\x01\x07\ \r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\xcd\x01\x04\x1e\n\x0e\n\x06\x04\ @@ -4969,605 +4969,608 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x12\x04\xdf\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xe0\x01\x02\ \x1b\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xe0\x01\x02\x08\n\r\n\x05\x04\ \x06\x02\x01\x01\x12\x04\xe0\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\x12\ - \x04\xe0\x01\x19\x1a\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xe1\x01\x02\x14\ - \n\r\n\x05\x04\x06\x02\x02\x06\x12\x04\xe1\x01\x02\x08\n\r\n\x05\x04\x06\ - \x02\x02\x01\x12\x04\xe1\x01\t\x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\ - \xe1\x01\x12\x13\n\x83\x01\n\x02\x04\x07\x12\x06\xe6\x01\0\xb6\x03\x01\ - \x1au\x20SymbolInformation\x20defines\x20metadata\x20about\x20a\x20symbo\ - l,\x20such\x20as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20pack\ - age\x20it's\x20defined\x20it.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xe6\x01\ - \x08\x19\n\xa0\x01\n\x04\x04\x07\x02\0\x12\x04\xe9\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\xe9\x01\x02\x08\n\r\n\x05\x04\x07\ - \x02\0\x01\x12\x04\xe9\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xe9\ - \x01\x12\x13\n\xb4\x03\n\x04\x04\x07\x02\x01\x12\x04\xf0\x01\x02$\x1a\ - \xa5\x03\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ - down-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20Use\x20`S\ - ymbolInformation.signature_documentation`\x20to\n\x20document\x20the\x20\ - method/class/type\x20signature\x20of\x20this\x20symbol.\n\x20Due\x20to\ - \x20historical\x20reasons,\x20indexers\x20may\x20include\x20signature\ - \x20documentation\x20in\n\x20this\x20field\x20by\x20rendering\x20markdow\ - n\x20code\x20blocks.\x20New\x20indexers\x20should\x20only\n\x20include\ - \x20non-code\x20documentation\x20in\x20this\x20field,\x20for\x20example\ - \x20docstrings.\n\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\xf0\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x01\x05\x12\x04\xf0\x01\x0b\x11\n\r\n\x05\x04\x07\ - \x02\x01\x01\x12\x04\xf0\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\ - \x04\xf0\x01\"#\n^\n\x04\x04\x07\x02\x02\x12\x04\xf2\x01\x02*\x1aP\x20(o\ - ptional)\x20Relationships\x20to\x20other\x20symbols\x20(e.g.,\x20impleme\ - nts,\x20type\x20definition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xf2\ - \x01\x02\n\n\r\n\x05\x04\x07\x02\x02\x06\x12\x04\xf2\x01\x0b\x17\n\r\n\ - \x05\x04\x07\x02\x02\x01\x12\x04\xf2\x01\x18%\n\r\n\x05\x04\x07\x02\x02\ - \x03\x12\x04\xf2\x01()\n\xa4\x01\n\x04\x04\x07\x02\x03\x12\x04\xf6\x01\ - \x02\x10\x1a\x95\x01\x20The\x20kind\x20of\x20this\x20symbol.\x20Use\x20t\ - his\x20field\x20instead\x20of\n\x20`SymbolDescriptor.Suffix`\x20to\x20de\ - termine\x20whether\x20something\x20is,\x20for\x20example,\x20a\n\x20clas\ - s\x20or\x20a\x20method.\n\n\r\n\x05\x04\x07\x02\x03\x06\x12\x04\xf6\x01\ - \x02\x06\n\r\n\x05\x04\x07\x02\x03\x01\x12\x04\xf6\x01\x07\x0b\n\r\n\x05\ - \x04\x07\x02\x03\x03\x12\x04\xf6\x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\ - \0\x12\x06\x85\x02\x02\x92\x03\x03\x1a\xe4\x05\x20(optional)\x20Kind\x20\ - represents\x20the\x20fine-grained\x20category\x20of\x20a\x20symbol,\x20s\ - uitable\x20for\x20presenting\n\x20information\x20about\x20the\x20symbol'\ - s\x20meaning\x20in\x20the\x20language.\n\n\x20For\x20example:\n\x20-\x20\ - A\x20Java\x20method\x20would\x20have\x20the\x20kind\x20`Method`\x20while\ - \x20a\x20Go\x20function\x20would\n\x20\x20\x20have\x20the\x20kind\x20`Fu\ - nction`,\x20even\x20if\x20the\x20symbols\x20for\x20these\x20use\x20the\ - \x20same\n\x20\x20\x20syntax\x20for\x20the\x20descriptor\x20`SymbolDescr\ - iptor.Suffix.Method`.\n\x20-\x20A\x20Go\x20struct\x20has\x20the\x20symbo\ - l\x20kind\x20`Struct`\x20while\x20a\x20Java\x20class\x20has\n\x20\x20\ - \x20the\x20symbol\x20kind\x20`Class`\x20even\x20if\x20they\x20both\x20ha\ - ve\x20the\x20same\x20descriptor:\n\x20\x20\x20`SymbolDescriptor.Suffix.T\ - ype`.\n\n\x20Since\x20Kind\x20is\x20more\x20fine-grained\x20than\x20Suff\ - ix:\n\x20-\x20If\x20two\x20symbols\x20have\x20the\x20same\x20Kind,\x20th\ - ey\x20should\x20share\x20the\x20same\x20Suffix.\n\x20-\x20If\x20two\x20s\ - ymbols\x20have\x20different\x20Suffixes,\x20they\x20should\x20have\x20di\ - fferent\x20Kinds.\n\n\r\n\x05\x04\x07\x04\0\x01\x12\x04\x85\x02\x07\x0b\ - \n\x0e\n\x06\x04\x07\x04\0\x02\0\x12\x04\x86\x02\x06\x1a\n\x0f\n\x07\x04\ - \x07\x04\0\x02\0\x01\x12\x04\x86\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ - \x02\0\x02\x12\x04\x86\x02\x18\x19\nR\n\x06\x04\x07\x04\0\x02\x01\x12\ - \x04\x88\x02\x06\x1a\x1aB\x20A\x20method\x20which\x20may\x20or\x20may\ - \x20not\x20have\x20a\x20body.\x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x01\x01\x12\x04\x88\x02\x06\x14\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x01\x02\x12\x04\x88\x02\x17\x19\n*\n\x06\x04\x07\x04\0\ - \x02\x02\x12\x04\x8a\x02\x06\x14\x1a\x1a\x20For\x20Ruby's\x20attr_access\ - or\n\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x01\x12\x04\x8a\x02\x06\x0e\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x02\x02\x12\x04\x8a\x02\x11\x13\n\x0e\n\x06\x04\ - \x07\x04\0\x02\x03\x12\x04\x8b\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x03\x01\x12\x04\x8b\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x02\ - \x12\x04\x8b\x02\x0e\x0f\n\x1b\n\x06\x04\x07\x04\0\x02\x04\x12\x04\x8d\ - \x02\x06\x14\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x04\ - \x01\x12\x04\x8d\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x02\x12\ - \x04\x8d\x02\x12\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x05\x12\x04\x8e\x02\ - \x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02\x05\x01\x12\x04\x8e\x02\x06\x14\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x05\x02\x12\x04\x8e\x02\x17\x18\n\x19\n\x06\ - \x04\x07\x04\0\x02\x06\x12\x04\x90\x02\x06\x14\x1a\t\x20For\x20C++\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x06\x01\x12\x04\x90\x02\x06\x0f\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x06\x02\x12\x04\x90\x02\x12\x13\n\x1a\n\x06\x04\x07\ - \x04\0\x02\x07\x12\x04\x92\x02\x06\x10\x1a\n\x20For\x20Lean\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x07\x01\x12\x04\x92\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x07\x02\x12\x04\x92\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x08\x12\x04\x93\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x01\ - \x12\x04\x93\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\x93\ - \x02\x10\x11\n\x0e\n\x06\x04\x07\x04\0\x02\t\x12\x04\x94\x02\x06\x10\n\ - \x0f\n\x07\x04\x07\x04\0\x02\t\x01\x12\x04\x94\x02\x06\x0b\n\x0f\n\x07\ - \x04\x07\x04\0\x02\t\x02\x12\x04\x94\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\ - \0\x02\n\x12\x04\x95\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\ - \x04\x95\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x95\x02\ - \x11\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x0b\x12\x04\x96\x02\x06\x16\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x0b\x01\x12\x04\x96\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0b\x02\x12\x04\x96\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\ - \x02\x0c\x12\x04\x98\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x0c\x01\x12\x04\x98\x02\x06\x0e\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0c\x02\x12\x04\x98\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\ - \x02\r\x12\x04\x9a\x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\r\x01\x12\x04\x9a\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ - \x02\r\x02\x12\x04\x9a\x02\x13\x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0e\x12\ - \x04\x9c\x02\x06\x14\x1a\x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0e\x01\x12\x04\x9c\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x0e\x02\x12\x04\x9c\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\ - \x12\x04\x9d\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\ - \x9d\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\x9d\x02\r\ - \x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x10\x12\x04\x9e\x02\x06\x16\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x10\x01\x12\x04\x9e\x02\x06\x10\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x10\x02\x12\x04\x9e\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x11\x12\x04\x9f\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\ - \x12\x04\x9f\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\ - \x9f\x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa0\x02\x06\ - \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x12\x01\x12\x04\xa0\x02\x06\x0b\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x12\x02\x12\x04\xa0\x02\x0e\x10\n\x1a\n\x06\x04\ - \x07\x04\0\x02\x13\x12\x04\xa2\x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x13\x01\x12\x04\xa2\x02\x06\x0f\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x13\x02\x12\x04\xa2\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\ - \x02\x14\x12\x04\xa4\x02\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x14\x01\x12\x04\xa4\x02\x06\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02\x14\x02\x12\x04\xa4\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x15\ - \x12\x04\xa5\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\ - \xa5\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa5\x02\ - \x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x16\x12\x04\xa6\x02\x06\x10\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x16\x01\x12\x04\xa6\x02\x06\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x16\x02\x12\x04\xa6\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x17\x12\x04\xa7\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x01\ - \x12\x04\xa7\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\ - \xa7\x02\x11\x13\n;\n\x06\x04\x07\x04\0\x02\x18\x12\x04\xa9\x02\x06\x12\ - \x1a+\x20For\x20'get'\x20in\x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x18\x01\x12\x04\xa9\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x18\x02\x12\x04\xa9\x02\x0f\x11\n\x1a\n\x06\x04\x07\ - \x04\0\x02\x19\x12\x04\xab\x02\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x19\x01\x12\x04\xab\x02\x06\r\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x19\x02\x12\x04\xab\x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\ - \x1a\x12\x04\xad\x02\x06\x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x01\x12\x04\xad\x02\x06\x0e\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x1a\x02\x12\x04\xad\x02\x11\x13\n\x0e\n\x06\x04\ - \x07\x04\0\x02\x1b\x12\x04\xae\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x1b\x01\x12\x04\xae\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\ - \x12\x04\xae\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xaf\ - \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xaf\x02\x06\t\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x02\x12\x04\xaf\x02\x0c\x0e\n\x1c\n\ - \x06\x04\x07\x04\0\x02\x1d\x12\x04\xb1\x02\x06\x10\x1a\x0c\x20For\x20Rac\ - ket\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1d\x01\x12\x04\xb1\x02\x06\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x1d\x02\x12\x04\xb1\x02\r\x0f\n\x1a\n\x06\x04\ - \x07\x04\0\x02\x1e\x12\x04\xb3\x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x1e\x01\x12\x04\xb3\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x1e\x02\x12\x04\xb3\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\ - \x02\x1f\x12\x04\xb5\x02\x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x1f\x01\x12\x04\xb5\x02\x06\r\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x1f\x02\x12\x04\xb5\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\ - \x20\x12\x04\xb6\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\ - \x04\xb6\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xb6\ - \x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02!\x12\x04\xb7\x02\x06\x12\n\ - \x0f\n\x07\x04\x07\x04\0\x02!\x01\x12\x04\xb7\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02!\x02\x12\x04\xb7\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\ - \0\x02\"\x12\x04\xb9\x02\x06\x17\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\"\x01\x12\x04\xb9\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\ - \x02\"\x02\x12\x04\xb9\x02\x14\x16\n\x94\x01\n\x06\x04\x07\x04\0\x02#\ - \x12\x04\xbc\x02\x06\x1a\x1a\x83\x01\x20Analogous\x20to\x20'ThisParamete\ - r'\x20and\x20'SelfParameter',\x20but\x20for\x20languages\n\x20like\x20Go\ - \x20where\x20the\x20receiver\x20doesn't\x20have\x20a\x20conventional\x20\ - name.\n\n\x0f\n\x07\x04\x07\x04\0\x02#\x01\x12\x04\xbc\x02\x06\x14\n\x0f\ - \n\x07\x04\x07\x04\0\x02#\x02\x12\x04\xbc\x02\x17\x19\n8\n\x06\x04\x07\ - \x04\0\x02$\x12\x04\xbe\x02\x06\x1f\x1a(\x20Analogous\x20to\x20'Abstract\ - Method',\x20for\x20Go.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xbe\ - \x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02$\x02\x12\x04\xbe\x02\x1c\x1e\ - \n\x1e\n\x06\x04\x07\x04\0\x02%\x12\x04\xc0\x02\x06\x13\x1a\x0e\x20For\ - \x20Protobuf\n\n\x0f\n\x07\x04\x07\x04\0\x02%\x01\x12\x04\xc0\x02\x06\r\ - \n\x0f\n\x07\x04\x07\x04\0\x02%\x02\x12\x04\xc0\x02\x10\x12\n\x1a\n\x06\ - \x04\x07\x04\0\x02&\x12\x04\xc2\x02\x06\x11\x1a\n\x20For\x20Dart\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02&\x01\x12\x04\xc2\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02&\x02\x12\x04\xc2\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\ - \x02'\x12\x04\xc4\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02'\x01\x12\x04\xc4\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\ - \0\x02'\x02\x12\x04\xc4\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02(\x12\ - \x04\xc5\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc5\x02\ - \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02(\x02\x12\x04\xc5\x02\x0f\x11\n\ - \x0e\n\x06\x04\x07\x04\0\x02)\x12\x04\xc6\x02\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02)\x01\x12\x04\xc6\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\ - \x02)\x02\x12\x04\xc6\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\ - \xc7\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02*\x01\x12\x04\xc7\x02\x06\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02*\x02\x12\x04\xc7\x02\r\x0f\n\x0e\n\x06\ - \x04\x07\x04\0\x02+\x12\x04\xc8\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x02+\x01\x12\x04\xc8\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\ - \x04\xc8\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xc9\x02\x06\ - \x12\n\x0f\n\x07\x04\x07\x04\0\x02,\x01\x12\x04\xc9\x02\x06\x0c\n\x0f\n\ - \x07\x04\x07\x04\0\x02,\x02\x12\x04\xc9\x02\x0f\x11\n\x0e\n\x06\x04\x07\ - \x04\0\x02-\x12\x04\xca\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\ - \x12\x04\xca\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xca\ - \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02.\x12\x04\xcb\x02\x06\x13\n\ - \x0f\n\x07\x04\x07\x04\0\x02.\x01\x12\x04\xcb\x02\x06\r\n\x0f\n\x07\x04\ - \x07\x04\0\x02.\x02\x12\x04\xcb\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\ - \x02/\x12\x04\xcc\x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\ - \xcc\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02/\x02\x12\x04\xcc\x02\x16\ - \x18\n\x0e\n\x06\x04\x07\x04\0\x020\x12\x04\xcd\x02\x06\x15\n\x0f\n\x07\ - \x04\x07\x04\0\x020\x01\x12\x04\xcd\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\ - \0\x020\x02\x12\x04\xcd\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x021\x12\ - \x04\xce\x02\x06\x1a\n\x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xce\x02\ - \x06\x14\n\x0f\n\x07\x04\x07\x04\0\x021\x02\x12\x04\xce\x02\x17\x19\n/\n\ - \x06\x04\x07\x04\0\x022\x12\x04\xd0\x02\x06\x13\x1a\x1f\x20For\x20Haskel\ - l's\x20PatternSynonyms\n\n\x0f\n\x07\x04\x07\x04\0\x022\x01\x12\x04\xd0\ - \x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x022\x02\x12\x04\xd0\x02\x10\x12\n\ - \x1b\n\x06\x04\x07\x04\0\x023\x12\x04\xd2\x02\x06\x15\x1a\x0b\x20For\x20\ - Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x023\x01\x12\x04\xd2\x02\x06\x0f\n\x0f\ - \n\x07\x04\x07\x04\0\x023\x02\x12\x04\xd2\x02\x12\x14\n\x0e\n\x06\x04\ - \x07\x04\0\x024\x12\x04\xd3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x024\ - \x01\x12\x04\xd3\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\ - \xd3\x02\x11\x13\nQ\n\x06\x04\x07\x04\0\x025\x12\x04\xd5\x02\x06\x14\x1a\ - A\x20Analogous\x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\ - \x20and\x20Objective-C\n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd5\ - \x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd5\x02\x11\x13\ - \nK\n\x06\x04\x07\x04\0\x026\x12\x04\xd7\x02\x06\x1a\x1a;\x20Analogous\ - \x20to\x20'AbstractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\ - \x0f\n\x07\x04\x07\x04\0\x026\x01\x12\x04\xd7\x02\x06\x14\n\x0f\n\x07\ - \x04\x07\x04\0\x026\x02\x12\x04\xd7\x02\x17\x19\n9\n\x06\x04\x07\x04\0\ - \x027\x12\x04\xd9\x02\x06\x1d\x1a)\x20Analogous\x20to\x20'AbstractMethod\ - ',\x20for\x20C++.\n\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\xd9\x02\ - \x06\x17\n\x0f\n\x07\x04\x07\x04\0\x027\x02\x12\x04\xd9\x02\x1a\x1c\n\ - \x1d\n\x06\x04\x07\x04\0\x028\x12\x04\xdb\x02\x06\x17\x1a\r\x20For\x20Ha\ - skell\n\n\x0f\n\x07\x04\x07\x04\0\x028\x01\x12\x04\xdb\x02\x06\x11\n\x0f\ - \n\x07\x04\x07\x04\0\x028\x02\x12\x04\xdb\x02\x14\x16\n4\n\x06\x04\x07\ - \x04\0\x029\x12\x04\xdd\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20R\ - ust,\x20Swift\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xdd\ - \x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xdd\x02\x16\x18\ - \n;\n\x06\x04\x07\x04\0\x02:\x12\x04\xdf\x02\x06\x12\x1a+\x20For\x20'set\ - '\x20in\x20Swift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02:\x01\x12\x04\xdf\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02:\ - \x02\x12\x04\xdf\x02\x0f\x11\n3\n\x06\x04\x07\x04\0\x02;\x12\x04\xe1\x02\ - \x06\x15\x1a#\x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02;\x01\x12\x04\xe1\x02\x06\x0f\n\x0f\n\x07\x04\x07\ - \x04\0\x02;\x02\x12\x04\xe1\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02<\ - \x12\x04\xe3\x02\x06\x1a\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02<\x01\x12\x04\xe3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\ - \x12\x04\xe3\x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02=\x12\x04\xe5\x02\x06\ - \x1b\x1a(\x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02=\x01\x12\x04\xe5\x02\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02=\x02\x12\x04\xe5\x02\x18\x1a\n5\n\x06\x04\x07\x04\0\x02>\ - \x12\x04\xe7\x02\x06\x1c\x1a%\x20Analogous\x20to\x20'StaticField',\x20fo\ - r\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\xe7\x02\x06\x16\n\ - \x0f\n\x07\x04\x07\x04\0\x02>\x02\x12\x04\xe7\x02\x19\x1b\n\x18\n\x06\ - \x04\x07\x04\0\x02?\x12\x04\xe9\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02?\x01\x12\x04\xe9\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02?\x02\x12\x04\xe9\x02\x14\x16\n\x18\n\x06\x04\x07\x04\0\ - \x02@\x12\x04\xeb\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02@\x01\x12\x04\xeb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\ - \x02\x12\x04\xeb\x02\x14\x16\n(\n\x06\x04\x07\x04\0\x02A\x12\x04\xed\x02\ - \x06\x18\x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02A\x01\x12\x04\xed\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x02A\x02\x12\x04\xed\x02\x15\x17\n)\n\x06\x04\x07\x04\0\x02B\x12\x04\ - \xef\x02\x06\x1a\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02B\x01\x12\x04\xef\x02\x06\x14\n\x0f\n\x07\x04\x07\ - \x04\0\x02B\x02\x12\x04\xef\x02\x17\x19\n\x1c\n\x06\x04\x07\x04\0\x02C\ - \x12\x04\xf1\x02\x06\x1a\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02C\x01\x12\x04\xf1\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ - \x02C\x02\x12\x04\xf1\x02\x17\x19\n\x0e\n\x06\x04\x07\x04\0\x02D\x12\x04\ - \xf2\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf2\x02\x06\ - \x0c\n\x0f\n\x07\x04\x07\x04\0\x02D\x02\x12\x04\xf2\x02\x0f\x11\n\x0e\n\ - \x06\x04\x07\x04\0\x02E\x12\x04\xf3\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\ - \0\x02E\x01\x12\x04\xf3\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\ - \x12\x04\xf3\x02\x0f\x11\n\x1b\n\x06\x04\x07\x04\0\x02F\x12\x04\xf5\x02\ - \x06\x15\x1a\x0b\x20For\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02F\x01\ - \x12\x04\xf5\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02F\x02\x12\x04\xf5\ - \x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02G\x12\x04\xf7\x02\x06\x12\x1a\ - \n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02G\x01\x12\x04\xf7\x02\ - \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02G\x02\x12\x04\xf7\x02\x0f\x11\n\ - \x1a\n\x06\x04\x07\x04\0\x02H\x12\x04\xf9\x02\x06\x13\x1a\n\x20For\x20Le\ - an\n\n\x0f\n\x07\x04\x07\x04\0\x02H\x01\x12\x04\xf9\x02\x06\r\n\x0f\n\ - \x07\x04\x07\x04\0\x02H\x02\x12\x04\xf9\x02\x10\x12\nU\n\x06\x04\x07\x04\ - \0\x02I\x12\x04\xfc\x02\x06\x19\x1aE\x20Method\x20receiver\x20for\x20lan\ - guages\n\x20'this'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02I\x01\x12\x04\xfc\x02\x06\x13\n\x0f\n\x07\x04\ - \x07\x04\0\x02I\x02\x12\x04\xfc\x02\x16\x18\nO\n\x06\x04\x07\x04\0\x02J\ - \x12\x04\xfe\x02\x06\x11\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\ - \x20'TypeClass',\x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02J\x01\x12\x04\xfe\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02J\ - \x02\x12\x04\xfe\x02\x0e\x10\nE\n\x06\x04\x07\x04\0\x02K\x12\x04\x80\x03\ - \x06\x17\x1a5\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\ - \x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x80\x03\ - \x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02K\x02\x12\x04\x80\x03\x14\x16\n\ - \x89\x01\n\x06\x04\x07\x04\0\x02L\x12\x04\x83\x03\x06\x10\x1ay\x20Data\ - \x20type\x20definition\x20for\x20languages\x20like\x20OCaml\x20which\x20\ - use\x20`type`\n\x20rather\x20than\x20separate\x20keywords\x20like\x20`st\ - ruct`\x20and\x20`enum`.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\x12\x04\x83\ - \x03\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x02\x12\x04\x83\x03\r\x0f\n\ - \x0e\n\x06\x04\x07\x04\0\x02M\x12\x04\x84\x03\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02M\x01\x12\x04\x84\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\ - \x02M\x02\x12\x04\x84\x03\x12\x14\nS\n\x06\x04\x07\x04\0\x02N\x12\x04\ - \x86\x03\x06\x15\x1aC\x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol'\ - ,\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02N\x01\x12\x04\x86\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02N\x02\x12\ - \x04\x86\x03\x12\x14\nM\n\x06\x04\x07\x04\0\x02O\x12\x04\x88\x03\x06\x1b\ - \x1a=\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Haskell,\x20Pure\ - script\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02O\x01\x12\x04\x88\x03\x06\ - \x15\n\x0f\n\x07\x04\x07\x04\0\x02O\x02\x12\x04\x88\x03\x18\x1a\n\x1d\n\ - \x06\x04\x07\x04\0\x02P\x12\x04\x8a\x03\x06\x16\x1a\r\x20For\x20Haskell\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02P\x01\x12\x04\x8a\x03\x06\x10\n\x0f\n\ - \x07\x04\x07\x04\0\x02P\x02\x12\x04\x8a\x03\x13\x15\n\x0e\n\x06\x04\x07\ - \x04\0\x02Q\x12\x04\x8b\x03\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\ - \x12\x04\x8b\x03\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8b\ - \x03\x16\x18\n(\n\x06\x04\x07\x04\0\x02R\x12\x04\x8d\x03\x06\x11\x1a\x18\ - \x20For\x20C,\x20C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02R\ - \x01\x12\x04\x8d\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02R\x02\x12\x04\ - \x8d\x03\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02S\x12\x04\x8e\x03\x06\x11\ - \n\x0f\n\x07\x04\x07\x04\0\x02S\x01\x12\x04\x8e\x03\x06\x0b\n\x0f\n\x07\ - \x04\x07\x04\0\x02S\x02\x12\x04\x8e\x03\x0e\x10\n[\n\x06\x04\x07\x04\0\ - \x02T\x12\x04\x8f\x03\x06\x14\"K\x20Next\x20=\x2086;\n\x20Feel\x20free\ - \x20to\x20open\x20a\x20PR\x20proposing\x20new\x20language-specific\x20ki\ - nds.\n\n\x0f\n\x07\x04\x07\x04\0\x02T\x01\x12\x04\x8f\x03\x06\x0e\n\x0f\ - \n\x07\x04\x07\x04\0\x02T\x02\x12\x04\x8f\x03\x11\x13\n\xf3\x03\n\x04\ - \x04\x07\x02\x04\x12\x04\x9c\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20Th\ - e\x20name\x20of\x20this\x20symbol\x20as\x20it\x20should\x20be\x20display\ - ed\x20to\x20the\x20user.\n\x20For\x20example,\x20the\x20symbol\x20\"com/\ - example/MyClass#myMethod(+1).\"\x20should\x20have\x20the\n\x20display\ - \x20name\x20\"myMethod\".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\ - \x20reliable\x20source\x20of\n\x20the\x20display\x20name\x20for\x20sever\ - al\x20reasons:\n\n\x20-\x20Local\x20symbols\x20don't\x20encode\x20the\ - \x20name.\n\x20-\x20Some\x20languages\x20have\x20case-insensitive\x20nam\ - es,\x20so\x20the\x20symbol\x20is\x20all-lowercase.\n\x20-\x20The\x20symb\ - ol\x20may\x20encode\x20names\x20with\x20special\x20characters\x20that\ - \x20should\x20not\x20be\n\x20\x20\x20displayed\x20to\x20the\x20user.\n\n\ - \r\n\x05\x04\x07\x02\x04\x05\x12\x04\x9c\x03\x02\x08\n\r\n\x05\x04\x07\ - \x02\x04\x01\x12\x04\x9c\x03\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\ - \x9c\x03\x18\x19\n\xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xa3\x03\x02'\ - \x1a\xb5\x03\x20(optional)\x20The\x20signature\x20of\x20this\x20symbol\ - \x20as\x20it's\x20displayed\x20in\x20API\n\x20documentation\x20or\x20in\ - \x20hover\x20tooltips.\x20For\x20example,\x20a\x20Java\x20method\x20that\ - \x20adds\n\x20two\x20numbers\x20this\x20would\x20have\x20`Document.langu\ - age\x20=\x20\"java\"`\x20and\x20`Document.text\n\x20=\x20\"void\x20add(i\ - nt\x20a,\x20int\x20b)\".\x20The\x20`language`\x20and\x20`text`\x20fields\ - \x20are\x20required\n\x20while\x20other\x20fields\x20such\x20as\x20`Docu\ - mentation.occurrences`\x20can\x20be\x20optionally\n\x20included\x20to\ - \x20support\x20hyperlinking\x20referenced\x20symbols\x20in\x20the\x20sig\ - nature.\n\n\r\n\x05\x04\x07\x02\x05\x06\x12\x04\xa3\x03\x02\n\n\r\n\x05\ - \x04\x07\x02\x05\x01\x12\x04\xa3\x03\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\ - \x12\x04\xa3\x03%&\n\xc9\x08\n\x04\x04\x07\x02\x06\x12\x04\xb5\x03\x02\ - \x1e\x1a\xba\x08\x20(optional)\x20The\x20enclosing\x20symbol\x20if\x20th\ - is\x20is\x20a\x20local\x20symbol.\x20\x20For\x20non-local\n\x20symbols,\ - \x20the\x20enclosing\x20symbol\x20should\x20be\x20parsed\x20from\x20the\ - \x20`symbol`\x20field\n\x20using\x20the\x20`Descriptor`\x20grammar.\n\n\ - \x20The\x20primary\x20use-case\x20for\x20this\x20field\x20is\x20to\x20al\ - low\x20local\x20symbol\x20to\x20be\x20displayed\n\x20in\x20a\x20symbol\ - \x20hierarchy\x20for\x20API\x20documentation.\x20It's\x20OK\x20to\x20lea\ - ve\x20this\x20field\n\x20empty\x20for\x20local\x20variables\x20since\x20\ - local\x20variables\x20usually\x20don't\x20belong\x20in\x20API\n\x20docum\ - entation.\x20However,\x20in\x20the\x20situation\x20that\x20you\x20wish\ - \x20to\x20include\x20a\x20local\n\x20symbol\x20in\x20the\x20hierarchy,\ - \x20then\x20you\x20can\x20use\x20`enclosing_symbol`\x20to\x20locate\x20t\ - he\n\x20\"parent\"\x20or\x20\"owner\"\x20of\x20this\x20local\x20symbol.\ - \x20For\x20example,\x20a\x20Java\x20indexer\x20may\n\x20choose\x20to\x20\ - use\x20local\x20symbols\x20for\x20private\x20class\x20fields\x20while\ - \x20providing\x20an\n\x20`enclosing_symbol`\x20to\x20reference\x20the\ - \x20enclosing\x20class\x20to\x20allow\x20the\x20field\x20to\n\x20be\x20p\ - art\x20of\x20the\x20class\x20documentation\x20hierarchy.\x20From\x20the\ - \x20perspective\x20of\x20an\n\x20author\x20of\x20an\x20indexer,\x20the\ - \x20decision\x20to\x20use\x20a\x20local\x20symbol\x20or\x20global\x20sym\ - bol\n\x20should\x20exclusively\x20be\x20determined\x20whether\x20the\x20\ - local\x20symbol\x20is\x20accessible\n\x20outside\x20the\x20document,\x20\ - not\x20by\x20the\x20capability\x20to\x20find\x20the\x20enclosing\n\x20sy\ - mbol.\n\n\r\n\x05\x04\x07\x02\x06\x05\x12\x04\xb5\x03\x02\x08\n\r\n\x05\ - \x04\x07\x02\x06\x01\x12\x04\xb5\x03\t\x19\n\r\n\x05\x04\x07\x02\x06\x03\ - \x12\x04\xb5\x03\x1c\x1d\n\x0c\n\x02\x04\x08\x12\x06\xb9\x03\0\xf1\x03\ - \x01\n\x0b\n\x03\x04\x08\x01\x12\x04\xb9\x03\x08\x14\n\x0c\n\x04\x04\x08\ - \x02\0\x12\x04\xba\x03\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xba\ - \x03\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xba\x03\t\x0f\n\r\n\x05\ - \x04\x08\x02\0\x03\x12\x04\xba\x03\x12\x13\n\xde\x08\n\x04\x04\x08\x02\ - \x01\x12\x04\xd3\x03\x02\x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\ - \x20references\",\x20this\x20field\x20documents\x20what\x20other\x20symb\ - ols\n\x20should\x20be\x20included\x20together\x20with\x20this\x20symbol.\ - \x20For\x20example,\x20consider\x20the\n\x20following\x20TypeScript\x20c\ - ode\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\x20Anima\ - l#sound()\n\x20}\n\x20class\x20Dog\x20implements\x20Animal\x20{\n\x20\ - \x20\x20\x20\x20\x20\x20^^^\x20definition\x20Dog#,\x20relationships\x20=\ - \x20[{symbol:\x20\"Animal#\",\x20is_implementation:\x20true}]\n\x20\x20\ - \x20public\x20sound():\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\ - \x20references_symbols\x20=\x20Animal#sound(),\x20relationships\x20=\x20\ - [{symbol:\x20\"Animal#sound()\",\x20is_implementation:true,\x20is_refere\ - nce:\x20true}]\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\x20refere\ - nces\"\x20on\x20the\x20symbol\x20`Animal#sound()`\x20should\x20return\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\xd3\x03\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\ - \xd3\x03\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd3\x03\x16\x17\n\ - \xee\x03\n\x04\x04\x08\x02\x02\x12\x04\xdc\x03\x02\x1d\x1a\xdf\x03\x20Si\ - milar\x20to\x20`is_reference`\x20but\x20for\x20\"Find\x20implementations\ - \".\n\x20It's\x20common\x20for\x20`is_implementation`\x20and\x20`is_refe\ - rence`\x20to\x20both\x20be\x20true\x20but\n\x20it's\x20not\x20always\x20\ - the\x20case.\n\x20In\x20the\x20TypeScript\x20example\x20above,\x20observ\ - e\x20that\x20`Dog#`\x20has\x20an\n\x20`is_implementation`\x20relationshi\ - p\x20with\x20`\"Animal#\"`\x20but\x20not\x20`is_reference`.\n\x20This\ - \x20is\x20because\x20\"Find\x20references\"\x20on\x20the\x20\"Animal#\"\ - \x20symbol\x20should\x20not\x20return\n\x20\"Dog#\".\x20We\x20only\x20wa\ - nt\x20\"Dog#\"\x20to\x20return\x20as\x20a\x20result\x20for\x20\"Find\n\ - \x20implementations\"\x20on\x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\ - \x04\x08\x02\x02\x05\x12\x04\xdc\x03\x02\x06\n\r\n\x05\x04\x08\x02\x02\ - \x01\x12\x04\xdc\x03\x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xdc\ - \x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\x12\x04\xde\x03\x02\x1e\x1aB\x20Si\ - milar\x20to\x20`references_symbols`\x20but\x20for\x20\"Go\x20to\x20type\ - \x20definition\".\n\n\r\n\x05\x04\x08\x02\x03\x05\x12\x04\xde\x03\x02\ - \x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\xde\x03\x07\x19\n\r\n\x05\x04\ - \x08\x02\x03\x03\x12\x04\xde\x03\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\ - \x12\x04\xef\x03\x02\x19\x1a\xd5\x06\x20Allows\x20overriding\x20the\x20b\ - ehavior\x20of\x20\"Go\x20to\x20definition\"\x20and\x20\"Find\x20referenc\ - es\"\n\x20for\x20symbols\x20which\x20do\x20not\x20have\x20a\x20definitio\ - n\x20of\x20their\x20own\x20or\x20could\n\x20potentially\x20have\x20multi\ - ple\x20definitions.\n\n\x20For\x20example,\x20in\x20a\x20language\x20wit\ - h\x20single\x20inheritance\x20and\x20no\x20field\x20overriding,\n\x20inh\ - erited\x20fields\x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\ - \x20ancestor\x20which\x20declares\n\x20the\x20field.\x20In\x20such\x20a\ - \x20situation,\x20is_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\ - \x20other\x20hand,\x20in\x20languages\x20with\x20single\x20inheritance\ - \x20and\x20some\x20form\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_de\ - finition\x20to\x20relate\x20the\x20symbol\x20to\x20the\n\x20matching\x20\ - symbol\x20in\x20ancestor\x20classes,\x20and\x20is_reference\x20to\x20rel\ - ate\x20the\n\x20symbol\x20to\x20the\x20matching\x20symbol\x20in\x20mixin\ - s.\n\n\x20NOTE:\x20At\x20the\x20moment,\x20due\x20to\x20limitations\x20o\ - f\x20the\x20SCIP\x20to\x20LSIF\x20conversion,\n\x20only\x20global\x20sym\ - bols\x20in\x20an\x20index\x20are\x20allowed\x20to\x20use\x20is_definitio\ - n.\n\x20The\x20relationship\x20may\x20not\x20get\x20recorded\x20if\x20ei\ - ther\x20symbol\x20is\x20local.\n\"A\x20Update\x20registerInverseRelation\ - ships\x20on\x20adding\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\ - \x02\x04\x05\x12\x04\xef\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\ - \x04\xef\x03\x07\x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xef\x03\x17\ - \x18\n\x88\x03\n\x02\x05\x03\x12\x06\xf8\x03\0\x8e\x04\x01\x1a\xf9\x02\ - \x20SymbolRole\x20declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20\ - in\x20an\x20occurrence.\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bi\ - tset\x20where\x20each\x20bit\x20represents\x20a\x20different\x20role.\ - \x20For\x20example,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20rol\ - e\x20is\x20set,\x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\ - \n\x20enum\x20value\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20ca\ - n\x20be\x20implemented\x20with\x20the\n\x20logic:\x20`const\x20isImportR\ - ole\x20=\x20(role.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\ - \x0b\n\x03\x05\x03\x01\x12\x04\xf8\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\ - \x12\x04\xfb\x03\x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20t\ - o\x20be\x20used;\x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\ - \x20from\x20the\x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\ - \x02\0\x01\x12\x04\xfb\x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\ - \xfb\x03\x1a\x1b\nT\n\x04\x05\x03\x02\x01\x12\x04\xfd\x03\x02\x13\x1aF\ - \x20Is\x20the\x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20thi\ - s\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\ - \x04\xfd\x03\x02\x0c\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\xfd\x03\x0f\ - \x12\n,\n\x04\x05\x03\x02\x02\x12\x04\xff\x03\x02\x0f\x1a\x1e\x20Is\x20t\ - he\x20symbol\x20imported\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\ - \x04\xff\x03\x02\x08\n\r\n\x05\x05\x03\x02\x02\x02\x12\x04\xff\x03\x0b\ - \x0e\n+\n\x04\x05\x03\x02\x03\x12\x04\x81\x04\x02\x14\x1a\x1d\x20Is\x20t\ - he\x20symbol\x20written\x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\ - \x81\x04\x02\r\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x81\x04\x10\x13\n(\ - \n\x04\x05\x03\x02\x04\x12\x04\x83\x04\x02\x13\x1a\x1a\x20Is\x20the\x20s\ - ymbol\x20read\x20here?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x83\x04\ - \x02\x0c\n\r\n\x05\x05\x03\x02\x04\x02\x12\x04\x83\x04\x0f\x12\n0\n\x04\ - \x05\x03\x02\x05\x12\x04\x85\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\ - \x20in\x20generated\x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x85\ - \x04\x02\x0b\n\r\n\x05\x05\x03\x02\x05\x02\x12\x04\x85\x04\x0e\x12\n+\n\ - \x04\x05\x03\x02\x06\x12\x04\x87\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20sym\ - bol\x20in\x20test\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x87\ - \x04\x02\x06\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x87\x04\t\r\n\xed\x01\ - \n\x04\x05\x03\x02\x07\x12\x04\x8d\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\ - \x20a\x20signature\x20for\x20a\x20symbol\x20that\x20is\x20defined\x20els\ - ewhere?\n\n\x20Applies\x20to\x20forward\x20declarations\x20for\x20langua\ - ges\x20like\x20C,\x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\ - \x20`val`\x20declarations\x20in\x20interface\n\x20files\x20in\x20languag\ - es\x20like\x20SML\x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\ - \x04\x8d\x04\x02\x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x8d\x04\x16\ - \x1a\n\x0c\n\x02\x05\x04\x12\x06\x90\x04\0\xed\x04\x01\n\x0b\n\x03\x05\ - \x04\x01\x12\x04\x90\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x91\x04\ - \x02\x1c\n\x0c\n\x04\x05\x04\x03\x02\x12\x04\x91\x04\x02\x1c\n\x0c\n\x04\ - \x05\x04\x02\0\x12\x04\x93\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\ - \x04\x93\x04\x02\x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x93\x04\x1a\x1b\ - \n;\n\x04\x05\x04\x02\x01\x12\x04\x96\x04\x02\x0e\x1a-\x20Comment,\x20in\ - cluding\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\ - \x01\x12\x04\x96\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x96\x04\ - \x0c\r\n\x1b\n\x04\x05\x04\x02\x02\x12\x04\x99\x04\x02\x1b\x1a\r\x20`;`\ - \x20`.`\x20`,`\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x99\x04\x02\x16\n\ - \r\n\x05\x05\x04\x02\x02\x02\x12\x04\x99\x04\x19\x1a\n2\n\x04\x05\x04\ - \x02\x03\x12\x04\x9b\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20use\ - d\x20syntactically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9b\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\x9b\x04\x17\x18\n5\n\x04\x05\ - \x04\x02\x04\x12\x04\x9e\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return\ - `,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\x9e\x04\ - \x02\t\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\x9e\x04\x0c\r\n\x0c\n\x04\ - \x05\x04\x02\x05\x12\x04\x9f\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\ - \x04\x9f\x04\x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\x9f\x04\x16\ - \x17\n\r\n\x05\x05\x04\x02\x05\x03\x12\x04\x9f\x04\x18)\n\x0e\n\x06\x05\ - \x04\x02\x05\x03\x01\x12\x04\x9f\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\ - \x12\x04\xa2\x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\ - \x04\x02\x06\x01\x12\x04\xa2\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\ - \x12\x04\xa2\x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa5\x04\x02\ - \x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20identifier\x20no\ - t\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\ - \x12\x04\xa5\x04\x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa5\x04\ - \x0f\x10\nN\n\x04\x05\x04\x02\x08\x12\x04\xa7\x04\x02\x18\x1a@\x20Identi\ - fiers\x20builtin\x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\ - \x20Python.\n\n\r\n\x05\x05\x04\x02\x08\x01\x12\x04\xa7\x04\x02\x13\n\r\ - \n\x05\x05\x04\x02\x08\x02\x12\x04\xa7\x04\x16\x17\n[\n\x04\x05\x04\x02\ - \t\x12\x04\xa9\x04\x02\x15\x1aM\x20Identifiers\x20representing\x20`null`\ - -like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\ - \n\x05\x05\x04\x02\t\x01\x12\x04\xa9\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\ - \x02\x12\x04\xa9\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xab\x04\x02\ - \x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\ - \x05\x05\x04\x02\n\x01\x12\x04\xab\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\ - \x02\x12\x04\xab\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xad\x04\ - \x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\ - \x05\x04\x02\x0b\x01\x12\x04\xad\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\ - \x02\x12\x04\xad\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xaf\x04\ - \x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20references\n\n\r\n\ - \x05\x05\x04\x02\x0c\x01\x12\x04\xaf\x04\x02\x15\n\r\n\x05\x05\x04\x02\ - \x0c\x02\x12\x04\xaf\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb1\x04\ - \x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20definitions\x20and\ - \x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\ - \r\x01\x12\x04\xb1\x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb1\ - \x04\x14\x16\nK\n\x04\x05\x04\x02\x0e\x12\x04\xb3\x04\x02\x1a\x1a=\x20Id\ - entifiers\x20that\x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\ - \x20scope\n\n\r\n\x05\x05\x04\x02\x0e\x01\x12\x04\xb3\x04\x02\x14\n\r\n\ - \x05\x05\x04\x02\x0e\x02\x12\x04\xb3\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\ - \x02\x0f\x12\x04\xb8\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representi\ - ng\x20a\x20unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\ - \n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20\ - and\x20JVM\x20languages,\n\x20and\x20a\x20module\x20in\x20languages\x20l\ - ike\x20Python\x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\ - \x04\xb8\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xb8\x04\x18\ - \x1a\n\x0c\n\x04\x05\x04\x02\x10\x12\x04\xb9\x04\x02*\n\r\n\x05\x05\x04\ - \x02\x10\x01\x12\x04\xb9\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\ - \x04\xb9\x04\x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xb9\x04\x18)\ - \n\x0e\n\x06\x05\x04\x02\x10\x03\x01\x12\x04\xb9\x04\x19(\n4\n\x04\x05\ - \x04\x02\x11\x12\x04\xbc\x04\x02\x1a\x1a&\x20Function\x20references,\x20\ - including\x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xbc\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x11\x02\x12\x04\xbc\x04\x17\x19\n(\n\x04\x05\ - \x04\x02\x12\x12\x04\xbe\x04\x02$\x1a\x1a\x20Function\x20definition\x20o\ - nly\n\n\r\n\x05\x05\x04\x02\x12\x01\x12\x04\xbe\x04\x02\x1e\n\r\n\x05\ - \x05\x04\x02\x12\x02\x12\x04\xbe\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\ - \xc1\x04\x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocation\ - s\n\n\r\n\x05\x05\x04\x02\x13\x01\x12\x04\xc1\x04\x02\x11\n\r\n\x05\x05\ - \x04\x02\x13\x02\x12\x04\xc1\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\ - \x04\xc3\x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\ - \x04\x02\x14\x01\x12\x04\xc3\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\ - \x12\x04\xc3\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xc6\x04\x02\ - \x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\ - \x04\xc6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xc6\x04\x13\ - \x15\nK\n\x04\x05\x04\x02\x16\x12\x04\xc8\x04\x02\x1d\x1a=\x20builtin\ - \x20types\x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int\ - `\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xc8\x04\x02\x17\n\ - \r\n\x05\x05\x04\x02\x16\x02\x12\x04\xc8\x04\x1a\x1c\n7\n\x04\x05\x04\ - \x02\x17\x12\x04\xcb\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\ - \x20__attribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcb\x04\x02\ - \x15\n\r\n\x05\x05\x04\x02\x17\x02\x12\x04\xcb\x04\x18\x1a\n\x14\n\x04\ - \x05\x04\x02\x18\x12\x04\xce\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\ - \x05\x04\x02\x18\x01\x12\x04\xce\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\ - \x12\x04\xce\x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd0\x04\x02\ - \x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd0\ - \x04\x02\x0f\n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd0\x04\x12\x14\n\x13\ - \n\x04\x05\x04\x02\x1a\x12\x04\xd2\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\ - \x05\x05\x04\x02\x1a\x01\x12\x04\xd2\x04\x02\x0f\n\r\n\x05\x05\x04\x02\ - \x1a\x02\x12\x04\xd2\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd4\ - \x04\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\ - \x02\x1b\x01\x12\x04\xd4\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\ - \x04\xd4\x04\x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xd6\x04\x02\x11\ - \x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xd6\x04\ - \x02\x0b\n\r\n\x05\x05\x04\x02\x1c\x02\x12\x04\xd6\x04\x0e\x10\n0\n\x04\ - \x05\x04\x02\x1d\x12\x04\xd9\x04\x02\x15\x1a\"\x20Literal\x20strings:\ - \x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xd9\x04\ - \x02\x0f\n\r\n\x05\x05\x04\x02\x1d\x02\x12\x04\xd9\x04\x12\x14\n-\n\x04\ - \x05\x04\x02\x1e\x12\x04\xdb\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes\ - :\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdb\x04\ - \x02\x15\n\r\n\x05\x05\x04\x02\x1e\x02\x12\x04\xdb\x04\x18\x1a\n_\n\x04\ - \x05\x04\x02\x1f\x12\x04\xdd\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20\ - strings,\x20special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20\ - format\x20strings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xdd\x04\x02\ - \x16\n\r\n\x05\x05\x04\x02\x1f\x02\x12\x04\xdd\x04\x19\x1b\nG\n\x04\x05\ - \x04\x02\x20\x12\x04\xdf\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\ - \":\x20\"value\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\ - \x05\x05\x04\x02\x20\x01\x12\x04\xdf\x04\x02\x12\n\r\n\x05\x05\x04\x02\ - \x20\x02\x12\x04\xdf\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe1\x04\ - \x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20dif\ - ferentiate\x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\ - \x12\x04\xe1\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe1\x04\x15\ - \x17\n9\n\x04\x05\x04\x02\"\x12\x04\xe3\x04\x02\x16\x1a+\x20Literal\x20n\ - umbers,\x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\ - \x01\x12\x04\xe3\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe3\x04\ - \x13\x15\n\x1f\n\x04\x05\x04\x02#\x12\x04\xe5\x04\x02\x16\x1a\x11\x20`tr\ - ue`,\x20`false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe5\x04\x02\x10\n\r\ - \n\x05\x05\x04\x02#\x02\x12\x04\xe5\x04\x13\x15\n&\n\x04\x05\x04\x02$\ - \x12\x04\xe8\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\ - \r\n\x05\x05\x04\x02$\x01\x12\x04\xe8\x04\x02\x05\n\r\n\x05\x05\x04\x02$\ - \x02\x12\x04\xe8\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xea\x04\x02\x14\ - \x1a!\x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\ - \x02%\x01\x12\x04\xea\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xea\ - \x04\x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xec\x04\x02\x14\x1a\x1e\x20De\ - limiters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\ - \xec\x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xec\x04\x11\x13\n\ - \xf9\x01\n\x02\x04\t\x12\x06\xf4\x04\0\xd5\x05\x01\x1a\xea\x01\x20Occurr\ - ence\x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20\ - and/or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20index\ - ers\x20should\x20try\x20to\x20bundle\x20logically\x20related\x20informat\ - ion\n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20t\ - o\x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf4\x04\ - \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x8c\x05\x02\x1b\x1a\xd9\x08\ + \x04\xe0\x01\x19\x1a\n\x82\x01\n\x04\x04\x06\x02\x02\x12\x04\xe1\x01\x02\ + \x14\"t\x20NOTE:\x20If\x20you\x20add\x20new\x20fields\x20here,\x20make\ + \x20sure\x20to\x20update\x20the\x20prepareSlot()\n\x20function\x20respon\ + sible\x20for\x20parsing\x20symbols.\n\n\r\n\x05\x04\x06\x02\x02\x06\x12\ + \x04\xe1\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xe1\x01\t\x0f\ + \n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xe1\x01\x12\x13\n\x83\x01\n\x02\ + \x04\x07\x12\x06\xe8\x01\0\xb8\x03\x01\x1au\x20SymbolInformation\x20defi\ + nes\x20metadata\x20about\x20a\x20symbol,\x20such\x20as\x20the\x20symbol'\ + s\n\x20docstring\x20or\x20what\x20package\x20it's\x20defined\x20it.\n\n\ + \x0b\n\x03\x04\x07\x01\x12\x04\xe8\x01\x08\x19\n\xa0\x01\n\x04\x04\x07\ + \x02\0\x12\x04\xeb\x01\x02\x14\x1a\x91\x01\x20Identifier\x20of\x20this\ + \x20symbol,\x20which\x20can\x20be\x20referenced\x20from\x20`Occurence.sy\ + mbol`.\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\xeb\x01\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\xeb\x01\t\x0f\n\ + \r\n\x05\x04\x07\x02\0\x03\x12\x04\xeb\x01\x12\x13\n\xb4\x03\n\x04\x04\ + \x07\x02\x01\x12\x04\xf2\x01\x02$\x1a\xa5\x03\x20(optional,\x20but\x20st\ + rongly\x20recommended)\x20The\x20markdown-formatted\x20documentation\n\ + \x20for\x20this\x20symbol.\x20Use\x20`SymbolInformation.signature_docume\ + ntation`\x20to\n\x20document\x20the\x20method/class/type\x20signature\ + \x20of\x20this\x20symbol.\n\x20Due\x20to\x20historical\x20reasons,\x20in\ + dexers\x20may\x20include\x20signature\x20documentation\x20in\n\x20this\ + \x20field\x20by\x20rendering\x20markdown\x20code\x20blocks.\x20New\x20in\ + dexers\x20should\x20only\n\x20include\x20non-code\x20documentation\x20in\ + \x20this\x20field,\x20for\x20example\x20docstrings.\n\n\r\n\x05\x04\x07\ + \x02\x01\x04\x12\x04\xf2\x01\x02\n\n\r\n\x05\x04\x07\x02\x01\x05\x12\x04\ + \xf2\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xf2\x01\x12\x1f\n\ + \r\n\x05\x04\x07\x02\x01\x03\x12\x04\xf2\x01\"#\n^\n\x04\x04\x07\x02\x02\ + \x12\x04\xf4\x01\x02*\x1aP\x20(optional)\x20Relationships\x20to\x20other\ + \x20symbols\x20(e.g.,\x20implements,\x20type\x20definition).\n\n\r\n\x05\ + \x04\x07\x02\x02\x04\x12\x04\xf4\x01\x02\n\n\r\n\x05\x04\x07\x02\x02\x06\ + \x12\x04\xf4\x01\x0b\x17\n\r\n\x05\x04\x07\x02\x02\x01\x12\x04\xf4\x01\ + \x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xf4\x01()\n\xa4\x01\n\x04\ + \x04\x07\x02\x03\x12\x04\xf8\x01\x02\x10\x1a\x95\x01\x20The\x20kind\x20o\ + f\x20this\x20symbol.\x20Use\x20this\x20field\x20instead\x20of\n\x20`Symb\ + olDescriptor.Suffix`\x20to\x20determine\x20whether\x20something\x20is,\ + \x20for\x20example,\x20a\n\x20class\x20or\x20a\x20method.\n\n\r\n\x05\ + \x04\x07\x02\x03\x06\x12\x04\xf8\x01\x02\x06\n\r\n\x05\x04\x07\x02\x03\ + \x01\x12\x04\xf8\x01\x07\x0b\n\r\n\x05\x04\x07\x02\x03\x03\x12\x04\xf8\ + \x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\x87\x02\x02\x94\x03\ + \x03\x1a\xe4\x05\x20(optional)\x20Kind\x20represents\x20the\x20fine-grai\ + ned\x20category\x20of\x20a\x20symbol,\x20suitable\x20for\x20presenting\n\ + \x20information\x20about\x20the\x20symbol's\x20meaning\x20in\x20the\x20l\ + anguage.\n\n\x20For\x20example:\n\x20-\x20A\x20Java\x20method\x20would\ + \x20have\x20the\x20kind\x20`Method`\x20while\x20a\x20Go\x20function\x20w\ + ould\n\x20\x20\x20have\x20the\x20kind\x20`Function`,\x20even\x20if\x20th\ + e\x20symbols\x20for\x20these\x20use\x20the\x20same\n\x20\x20\x20syntax\ + \x20for\x20the\x20descriptor\x20`SymbolDescriptor.Suffix.Method`.\n\x20-\ + \x20A\x20Go\x20struct\x20has\x20the\x20symbol\x20kind\x20`Struct`\x20whi\ + le\x20a\x20Java\x20class\x20has\n\x20\x20\x20the\x20symbol\x20kind\x20`C\ + lass`\x20even\x20if\x20they\x20both\x20have\x20the\x20same\x20descriptor\ + :\n\x20\x20\x20`SymbolDescriptor.Suffix.Type`.\n\n\x20Since\x20Kind\x20i\ + s\x20more\x20fine-grained\x20than\x20Suffix:\n\x20-\x20If\x20two\x20symb\ + ols\x20have\x20the\x20same\x20Kind,\x20they\x20should\x20share\x20the\ + \x20same\x20Suffix.\n\x20-\x20If\x20two\x20symbols\x20have\x20different\ + \x20Suffixes,\x20they\x20should\x20have\x20different\x20Kinds.\n\n\r\n\ + \x05\x04\x07\x04\0\x01\x12\x04\x87\x02\x07\x0b\n\x0e\n\x06\x04\x07\x04\0\ + \x02\0\x12\x04\x88\x02\x06\x1a\n\x0f\n\x07\x04\x07\x04\0\x02\0\x01\x12\ + \x04\x88\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\0\x02\x12\x04\x88\x02\ + \x18\x19\nR\n\x06\x04\x07\x04\0\x02\x01\x12\x04\x8a\x02\x06\x1a\x1aB\x20\ + A\x20method\x20which\x20may\x20or\x20may\x20not\x20have\x20a\x20body.\ + \x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02\x01\ + \x01\x12\x04\x8a\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x01\x02\x12\ + \x04\x8a\x02\x17\x19\n*\n\x06\x04\x07\x04\0\x02\x02\x12\x04\x8c\x02\x06\ + \x14\x1a\x1a\x20For\x20Ruby's\x20attr_accessor\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02\x02\x01\x12\x04\x8c\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x02\ + \x02\x12\x04\x8c\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x03\x12\x04\ + \x8d\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x01\x12\x04\x8d\x02\ + \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x02\x12\x04\x8d\x02\x0e\x0f\n\ + \x1b\n\x06\x04\x07\x04\0\x02\x04\x12\x04\x8f\x02\x06\x14\x1a\x0b\x20For\ + \x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x01\x12\x04\x8f\x02\x06\ + \x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x02\x12\x04\x8f\x02\x12\x13\n\x0e\ + \n\x06\x04\x07\x04\0\x02\x05\x12\x04\x90\x02\x06\x19\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x05\x01\x12\x04\x90\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x05\x02\x12\x04\x90\x02\x17\x18\n\x19\n\x06\x04\x07\x04\0\x02\x06\x12\ + \x04\x92\x02\x06\x14\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x06\x01\x12\x04\x92\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x06\x02\ + \x12\x04\x92\x02\x12\x13\n\x1a\n\x06\x04\x07\x04\0\x02\x07\x12\x04\x94\ + \x02\x06\x10\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x07\ + \x01\x12\x04\x94\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x07\x02\x12\ + \x04\x94\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x08\x12\x04\x95\x02\ + \x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x01\x12\x04\x95\x02\x06\r\n\ + \x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\x95\x02\x10\x11\n\x0e\n\x06\ + \x04\x07\x04\0\x02\t\x12\x04\x96\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ + \x02\t\x01\x12\x04\x96\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\t\x02\ + \x12\x04\x96\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\n\x12\x04\x97\x02\ + \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\x04\x97\x02\x06\x0e\n\ + \x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x97\x02\x11\x12\n\x0e\n\x06\ + \x04\x07\x04\0\x02\x0b\x12\x04\x98\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x0b\x01\x12\x04\x98\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0b\ + \x02\x12\x04\x98\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\x02\x0c\x12\x04\ + \x9a\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x0c\x01\x12\x04\x9a\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\ + \x02\x12\x04\x9a\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\x02\r\x12\x04\x9c\ + \x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02\r\ + \x01\x12\x04\x9c\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\r\x02\x12\x04\ + \x9c\x02\x13\x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0e\x12\x04\x9e\x02\x06\ + \x14\x1a\x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x0e\x01\x12\x04\x9e\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x02\ + \x12\x04\x9e\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\x12\x04\x9f\ + \x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\x9f\x02\x06\n\ + \n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\x9f\x02\r\x0f\n\x0e\n\x06\ + \x04\x07\x04\0\x02\x10\x12\x04\xa0\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x10\x01\x12\x04\xa0\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x10\ + \x02\x12\x04\xa0\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\x11\x12\x04\ + \xa1\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\x12\x04\xa1\x02\ + \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\xa1\x02\x0e\x10\n\ + \x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa2\x02\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x12\x01\x12\x04\xa2\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x12\x02\x12\x04\xa2\x02\x0e\x10\n\x1a\n\x06\x04\x07\x04\0\x02\x13\ + \x12\x04\xa4\x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02\x13\x01\x12\x04\xa4\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x13\ + \x02\x12\x04\xa4\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\x02\x14\x12\x04\ + \xa6\x02\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x14\x01\x12\x04\xa6\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x02\x12\ + \x04\xa6\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x15\x12\x04\xa7\x02\x06\ + \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\xa7\x02\x06\x0b\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa7\x02\x0e\x10\n\x0e\n\x06\x04\ + \x07\x04\0\x02\x16\x12\x04\xa8\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x16\x01\x12\x04\xa8\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x16\x02\x12\ + \x04\xa8\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x17\x12\x04\xa9\x02\x06\ + \x14\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x01\x12\x04\xa9\x02\x06\x0e\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\xa9\x02\x11\x13\n;\n\x06\x04\ + \x07\x04\0\x02\x18\x12\x04\xab\x02\x06\x12\x1a+\x20For\x20'get'\x20in\ + \x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x18\x01\x12\x04\xab\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x18\ + \x02\x12\x04\xab\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x19\x12\x04\ + \xad\x02\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x19\x01\x12\x04\xad\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x02\x12\ + \x04\xad\x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\x1a\x12\x04\xaf\x02\x06\ + \x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1a\x01\x12\x04\xaf\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x1a\x02\x12\x04\xaf\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x1b\x12\ + \x04\xb0\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x01\x12\x04\xb0\ + \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\x12\x04\xb0\x02\x12\ + \x14\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xb1\x02\x06\x0f\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xb1\x02\x06\t\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1c\x02\x12\x04\xb1\x02\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\ + \x1d\x12\x04\xb3\x02\x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x1d\x01\x12\x04\xb3\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1d\x02\x12\x04\xb3\x02\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x1e\x12\ + \x04\xb5\x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1e\x01\x12\x04\xb5\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\ + \x02\x12\x04\xb5\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02\x1f\x12\x04\ + \xb7\x02\x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1f\x01\x12\x04\xb7\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\x02\ + \x12\x04\xb7\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x20\x12\x04\xb8\ + \x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\x04\xb8\x02\x06\ + \x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xb8\x02\x0e\x10\n\x0e\ + \n\x06\x04\x07\x04\0\x02!\x12\x04\xb9\x02\x06\x12\n\x0f\n\x07\x04\x07\ + \x04\0\x02!\x01\x12\x04\xb9\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02!\ + \x02\x12\x04\xb9\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\"\x12\x04\xbb\ + \x02\x06\x17\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\ + \x12\x04\xbb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\"\x02\x12\x04\xbb\ + \x02\x14\x16\n\x94\x01\n\x06\x04\x07\x04\0\x02#\x12\x04\xbe\x02\x06\x1a\ + \x1a\x83\x01\x20Analogous\x20to\x20'ThisParameter'\x20and\x20'SelfParame\ + ter',\x20but\x20for\x20languages\n\x20like\x20Go\x20where\x20the\x20rece\ + iver\x20doesn't\x20have\x20a\x20conventional\x20name.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02#\x01\x12\x04\xbe\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x02#\x02\x12\x04\xbe\x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02$\x12\x04\ + \xc0\x02\x06\x1f\x1a(\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ + Go.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xc0\x02\x06\x19\n\x0f\n\ + \x07\x04\x07\x04\0\x02$\x02\x12\x04\xc0\x02\x1c\x1e\n\x1e\n\x06\x04\x07\ + \x04\0\x02%\x12\x04\xc2\x02\x06\x13\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02%\x01\x12\x04\xc2\x02\x06\r\n\x0f\n\x07\x04\x07\ + \x04\0\x02%\x02\x12\x04\xc2\x02\x10\x12\n\x1a\n\x06\x04\x07\x04\0\x02&\ + \x12\x04\xc4\x02\x06\x11\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02&\x01\x12\x04\xc4\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02&\x02\ + \x12\x04\xc4\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02'\x12\x04\xc6\x02\ + \x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02'\x01\ + \x12\x04\xc6\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02'\x02\x12\x04\xc6\ + \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02(\x12\x04\xc7\x02\x06\x12\n\ + \x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc7\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02(\x02\x12\x04\xc7\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ + \0\x02)\x12\x04\xc8\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02)\x01\x12\ + \x04\xc8\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02)\x02\x12\x04\xc8\x02\ + \x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\xc9\x02\x06\x10\n\x0f\n\ + \x07\x04\x07\x04\0\x02*\x01\x12\x04\xc9\x02\x06\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02*\x02\x12\x04\xc9\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02+\x12\ + \x04\xca\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02+\x01\x12\x04\xca\x02\ + \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\x04\xca\x02\x0f\x11\n\ + \x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xcb\x02\x06\x12\n\x0f\n\x07\x04\ + \x07\x04\0\x02,\x01\x12\x04\xcb\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\ + \x02,\x02\x12\x04\xcb\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02-\x12\x04\ + \xcc\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\x12\x04\xcc\x02\x06\ + \x0e\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xcc\x02\x11\x13\n\x0e\n\ + \x06\x04\x07\x04\0\x02.\x12\x04\xcd\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\ + \0\x02.\x01\x12\x04\xcd\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02.\x02\x12\ + \x04\xcd\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02/\x12\x04\xce\x02\x06\ + \x19\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\xce\x02\x06\x13\n\x0f\n\ + \x07\x04\x07\x04\0\x02/\x02\x12\x04\xce\x02\x16\x18\n\x0e\n\x06\x04\x07\ + \x04\0\x020\x12\x04\xcf\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x020\x01\ + \x12\x04\xcf\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x020\x02\x12\x04\xcf\ + \x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x021\x12\x04\xd0\x02\x06\x1a\n\ + \x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xd0\x02\x06\x14\n\x0f\n\x07\ + \x04\x07\x04\0\x021\x02\x12\x04\xd0\x02\x17\x19\n/\n\x06\x04\x07\x04\0\ + \x022\x12\x04\xd2\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSyno\ + nyms\n\n\x0f\n\x07\x04\x07\x04\0\x022\x01\x12\x04\xd2\x02\x06\r\n\x0f\n\ + \x07\x04\x07\x04\0\x022\x02\x12\x04\xd2\x02\x10\x12\n\x1b\n\x06\x04\x07\ + \x04\0\x023\x12\x04\xd4\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\ + \x07\x04\x07\x04\0\x023\x01\x12\x04\xd4\x02\x06\x0f\n\x0f\n\x07\x04\x07\ + \x04\0\x023\x02\x12\x04\xd4\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x024\ + \x12\x04\xd5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x024\x01\x12\x04\xd5\ + \x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\xd5\x02\x11\x13\ + \nQ\n\x06\x04\x07\x04\0\x025\x12\x04\xd7\x02\x06\x14\x1aA\x20Analogous\ + \x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Objec\ + tive-C\n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd7\x02\x06\x0e\n\ + \x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd7\x02\x11\x13\nK\n\x06\x04\ + \x07\x04\0\x026\x12\x04\xd9\x02\x06\x1a\x1a;\x20Analogous\x20to\x20'Abst\ + ractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x026\x01\x12\x04\xd9\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x026\x02\x12\x04\xd9\x02\x17\x19\n9\n\x06\x04\x07\x04\0\x027\x12\x04\ + \xdb\x02\x06\x1d\x1a)\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ + C++.\n\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\xdb\x02\x06\x17\n\x0f\ + \n\x07\x04\x07\x04\0\x027\x02\x12\x04\xdb\x02\x1a\x1c\n\x1d\n\x06\x04\ + \x07\x04\0\x028\x12\x04\xdd\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\x0f\ + \n\x07\x04\x07\x04\0\x028\x01\x12\x04\xdd\x02\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x028\x02\x12\x04\xdd\x02\x14\x16\n4\n\x06\x04\x07\x04\0\x029\ + \x12\x04\xdf\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20Rust,\x20Swi\ + ft\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xdf\x02\x06\x13\ + \n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xdf\x02\x16\x18\n;\n\x06\x04\ + \x07\x04\0\x02:\x12\x04\xe1\x02\x06\x12\x1a+\x20For\x20'set'\x20in\x20Sw\ + ift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02:\x01\ + \x12\x04\xe1\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02:\x02\x12\x04\xe1\ + \x02\x0f\x11\n3\n\x06\x04\x07\x04\0\x02;\x12\x04\xe3\x02\x06\x15\x1a#\ + \x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02;\x01\x12\x04\xe3\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02;\ + \x02\x12\x04\xe3\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02<\x12\x04\xe5\ + \x02\x06\x1a\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02<\x01\ + \x12\x04\xe5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\x12\x04\xe5\ + \x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02=\x12\x04\xe7\x02\x06\x1b\x1a(\ + \x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02=\x01\x12\x04\xe7\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ + \x02=\x02\x12\x04\xe7\x02\x18\x1a\n5\n\x06\x04\x07\x04\0\x02>\x12\x04\ + \xe9\x02\x06\x1c\x1a%\x20Analogous\x20to\x20'StaticField',\x20for\x20C++\ + \n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\xe9\x02\x06\x16\n\x0f\n\ + \x07\x04\x07\x04\0\x02>\x02\x12\x04\xe9\x02\x19\x1b\n\x18\n\x06\x04\x07\ + \x04\0\x02?\x12\x04\xeb\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02?\x01\x12\x04\xeb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\ + \0\x02?\x02\x12\x04\xeb\x02\x14\x16\n\x18\n\x06\x04\x07\x04\0\x02@\x12\ + \x04\xed\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02@\x01\x12\x04\xed\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\x02\x12\ + \x04\xed\x02\x14\x16\n(\n\x06\x04\x07\x04\0\x02A\x12\x04\xef\x02\x06\x18\ + \x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02A\x01\x12\x04\xef\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02A\x02\ + \x12\x04\xef\x02\x15\x17\n)\n\x06\x04\x07\x04\0\x02B\x12\x04\xf1\x02\x06\ + \x1a\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02B\x01\x12\x04\xf1\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02B\ + \x02\x12\x04\xf1\x02\x17\x19\n\x1c\n\x06\x04\x07\x04\0\x02C\x12\x04\xf3\ + \x02\x06\x1a\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + C\x01\x12\x04\xf3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02C\x02\x12\x04\ + \xf3\x02\x17\x19\n\x0e\n\x06\x04\x07\x04\0\x02D\x12\x04\xf4\x02\x06\x12\ + \n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf4\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02D\x02\x12\x04\xf4\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ + \0\x02E\x12\x04\xf5\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02E\x01\x12\ + \x04\xf5\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\x12\x04\xf5\x02\ + \x0f\x11\n\x1b\n\x06\x04\x07\x04\0\x02F\x12\x04\xf7\x02\x06\x15\x1a\x0b\ + \x20For\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02F\x01\x12\x04\xf7\x02\ + \x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02F\x02\x12\x04\xf7\x02\x12\x14\n\ + \x1a\n\x06\x04\x07\x04\0\x02G\x12\x04\xf9\x02\x06\x12\x1a\n\x20For\x20Le\ + an\n\n\x0f\n\x07\x04\x07\x04\0\x02G\x01\x12\x04\xf9\x02\x06\x0c\n\x0f\n\ + \x07\x04\x07\x04\0\x02G\x02\x12\x04\xf9\x02\x0f\x11\n\x1a\n\x06\x04\x07\ + \x04\0\x02H\x12\x04\xfb\x02\x06\x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02H\x01\x12\x04\xfb\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\ + \x02H\x02\x12\x04\xfb\x02\x10\x12\nU\n\x06\x04\x07\x04\0\x02I\x12\x04\ + \xfe\x02\x06\x19\x1aE\x20Method\x20receiver\x20for\x20languages\n\x20'th\ + is'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02I\x01\x12\x04\xfe\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02I\ + \x02\x12\x04\xfe\x02\x16\x18\nO\n\x06\x04\x07\x04\0\x02J\x12\x04\x80\x03\ + \x06\x11\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeClass',\ + \x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02J\x01\ + \x12\x04\x80\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02J\x02\x12\x04\x80\ + \x03\x0e\x10\nE\n\x06\x04\x07\x04\0\x02K\x12\x04\x82\x03\x06\x17\x1a5\ + \x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\x20Scala\x20etc\ + .\n\n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x82\x03\x06\x11\n\x0f\n\ + \x07\x04\x07\x04\0\x02K\x02\x12\x04\x82\x03\x14\x16\n\x89\x01\n\x06\x04\ + \x07\x04\0\x02L\x12\x04\x85\x03\x06\x10\x1ay\x20Data\x20type\x20definiti\ + on\x20for\x20languages\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20r\ + ather\x20than\x20separate\x20keywords\x20like\x20`struct`\x20and\x20`enu\ + m`.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\x12\x04\x85\x03\x06\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02L\x02\x12\x04\x85\x03\r\x0f\n\x0e\n\x06\x04\x07\ + \x04\0\x02M\x12\x04\x86\x03\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02M\x01\ + \x12\x04\x86\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02M\x02\x12\x04\x86\ + \x03\x12\x14\nS\n\x06\x04\x07\x04\0\x02N\x12\x04\x88\x03\x06\x15\x1aC\ + \x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\ + \x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02N\x01\x12\x04\x88\ + \x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02N\x02\x12\x04\x88\x03\x12\x14\ + \nM\n\x06\x04\x07\x04\0\x02O\x12\x04\x8a\x03\x06\x1b\x1a=\x20Analogous\ + \x20to\x20'AbstractMethod',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\ + \x0f\n\x07\x04\x07\x04\0\x02O\x01\x12\x04\x8a\x03\x06\x15\n\x0f\n\x07\ + \x04\x07\x04\0\x02O\x02\x12\x04\x8a\x03\x18\x1a\n\x1d\n\x06\x04\x07\x04\ + \0\x02P\x12\x04\x8c\x03\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02P\x01\x12\x04\x8c\x03\x06\x10\n\x0f\n\x07\x04\x07\x04\ + \0\x02P\x02\x12\x04\x8c\x03\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02Q\x12\ + \x04\x8d\x03\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\x12\x04\x8d\x03\ + \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8d\x03\x16\x18\n(\n\ + \x06\x04\x07\x04\0\x02R\x12\x04\x8f\x03\x06\x11\x1a\x18\x20For\x20C,\x20\ + C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02R\x01\x12\x04\x8f\ + \x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02R\x02\x12\x04\x8f\x03\x0e\x10\ + \n\x0e\n\x06\x04\x07\x04\0\x02S\x12\x04\x90\x03\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x02S\x01\x12\x04\x90\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ + \x02S\x02\x12\x04\x90\x03\x0e\x10\n[\n\x06\x04\x07\x04\0\x02T\x12\x04\ + \x91\x03\x06\x14\"K\x20Next\x20=\x2086;\n\x20Feel\x20free\x20to\x20open\ + \x20a\x20PR\x20proposing\x20new\x20language-specific\x20kinds.\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02T\x01\x12\x04\x91\x03\x06\x0e\n\x0f\n\x07\x04\x07\ + \x04\0\x02T\x02\x12\x04\x91\x03\x11\x13\n\xf3\x03\n\x04\x04\x07\x02\x04\ + \x12\x04\x9e\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20The\x20name\x20of\ + \x20this\x20symbol\x20as\x20it\x20should\x20be\x20displayed\x20to\x20the\ + \x20user.\n\x20For\x20example,\x20the\x20symbol\x20\"com/example/MyClass\ + #myMethod(+1).\"\x20should\x20have\x20the\n\x20display\x20name\x20\"myMe\ + thod\".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\x20reliable\x20sou\ + rce\x20of\n\x20the\x20display\x20name\x20for\x20several\x20reasons:\n\n\ + \x20-\x20Local\x20symbols\x20don't\x20encode\x20the\x20name.\n\x20-\x20S\ + ome\x20languages\x20have\x20case-insensitive\x20names,\x20so\x20the\x20s\ + ymbol\x20is\x20all-lowercase.\n\x20-\x20The\x20symbol\x20may\x20encode\ + \x20names\x20with\x20special\x20characters\x20that\x20should\x20not\x20b\ + e\n\x20\x20\x20displayed\x20to\x20the\x20user.\n\n\r\n\x05\x04\x07\x02\ + \x04\x05\x12\x04\x9e\x03\x02\x08\n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\ + \x9e\x03\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\x9e\x03\x18\x19\n\ + \xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xa5\x03\x02'\x1a\xb5\x03\x20(opti\ + onal)\x20The\x20signature\x20of\x20this\x20symbol\x20as\x20it's\x20displ\ + ayed\x20in\x20API\n\x20documentation\x20or\x20in\x20hover\x20tooltips.\ + \x20For\x20example,\x20a\x20Java\x20method\x20that\x20adds\n\x20two\x20n\ + umbers\x20this\x20would\x20have\x20`Document.language\x20=\x20\"java\"`\ + \x20and\x20`Document.text\n\x20=\x20\"void\x20add(int\x20a,\x20int\x20b)\ + \".\x20The\x20`language`\x20and\x20`text`\x20fields\x20are\x20required\n\ + \x20while\x20other\x20fields\x20such\x20as\x20`Documentation.occurrences\ + `\x20can\x20be\x20optionally\n\x20included\x20to\x20support\x20hyperlink\ + ing\x20referenced\x20symbols\x20in\x20the\x20signature.\n\n\r\n\x05\x04\ + \x07\x02\x05\x06\x12\x04\xa5\x03\x02\n\n\r\n\x05\x04\x07\x02\x05\x01\x12\ + \x04\xa5\x03\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\x12\x04\xa5\x03%&\n\xc9\ + \x08\n\x04\x04\x07\x02\x06\x12\x04\xb7\x03\x02\x1e\x1a\xba\x08\x20(optio\ + nal)\x20The\x20enclosing\x20symbol\x20if\x20this\x20is\x20a\x20local\x20\ + symbol.\x20\x20For\x20non-local\n\x20symbols,\x20the\x20enclosing\x20sym\ + bol\x20should\x20be\x20parsed\x20from\x20the\x20`symbol`\x20field\n\x20u\ + sing\x20the\x20`Descriptor`\x20grammar.\n\n\x20The\x20primary\x20use-cas\ + e\x20for\x20this\x20field\x20is\x20to\x20allow\x20local\x20symbol\x20to\ + \x20be\x20displayed\n\x20in\x20a\x20symbol\x20hierarchy\x20for\x20API\ + \x20documentation.\x20It's\x20OK\x20to\x20leave\x20this\x20field\n\x20em\ + pty\x20for\x20local\x20variables\x20since\x20local\x20variables\x20usual\ + ly\x20don't\x20belong\x20in\x20API\n\x20documentation.\x20However,\x20in\ + \x20the\x20situation\x20that\x20you\x20wish\x20to\x20include\x20a\x20loc\ + al\n\x20symbol\x20in\x20the\x20hierarchy,\x20then\x20you\x20can\x20use\ + \x20`enclosing_symbol`\x20to\x20locate\x20the\n\x20\"parent\"\x20or\x20\ + \"owner\"\x20of\x20this\x20local\x20symbol.\x20For\x20example,\x20a\x20J\ + ava\x20indexer\x20may\n\x20choose\x20to\x20use\x20local\x20symbols\x20fo\ + r\x20private\x20class\x20fields\x20while\x20providing\x20an\n\x20`enclos\ + ing_symbol`\x20to\x20reference\x20the\x20enclosing\x20class\x20to\x20all\ + ow\x20the\x20field\x20to\n\x20be\x20part\x20of\x20the\x20class\x20docume\ + ntation\x20hierarchy.\x20From\x20the\x20perspective\x20of\x20an\n\x20aut\ + hor\x20of\x20an\x20indexer,\x20the\x20decision\x20to\x20use\x20a\x20loca\ + l\x20symbol\x20or\x20global\x20symbol\n\x20should\x20exclusively\x20be\ + \x20determined\x20whether\x20the\x20local\x20symbol\x20is\x20accessible\ + \n\x20outside\x20the\x20document,\x20not\x20by\x20the\x20capability\x20t\ + o\x20find\x20the\x20enclosing\n\x20symbol.\n\n\r\n\x05\x04\x07\x02\x06\ + \x05\x12\x04\xb7\x03\x02\x08\n\r\n\x05\x04\x07\x02\x06\x01\x12\x04\xb7\ + \x03\t\x19\n\r\n\x05\x04\x07\x02\x06\x03\x12\x04\xb7\x03\x1c\x1d\n\x0c\n\ + \x02\x04\x08\x12\x06\xbb\x03\0\xf3\x03\x01\n\x0b\n\x03\x04\x08\x01\x12\ + \x04\xbb\x03\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\xbc\x03\x02\x14\n\ + \r\n\x05\x04\x08\x02\0\x05\x12\x04\xbc\x03\x02\x08\n\r\n\x05\x04\x08\x02\ + \0\x01\x12\x04\xbc\x03\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\xbc\x03\ + \x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\x04\xd5\x03\x02\x18\x1a\xcf\ + \x08\x20When\x20resolving\x20\"Find\x20references\",\x20this\x20field\ + \x20documents\x20what\x20other\x20symbols\n\x20should\x20be\x20included\ + \x20together\x20with\x20this\x20symbol.\x20For\x20example,\x20consider\ + \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#,\x20relationships\x20=\x20[{symbol:\x20\"Animal#\",\x20is\ + _implementation:\x20true}]\n\x20\x20\x20public\x20sound():\x20string\x20\ + {\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^\ + ^^^\x20definition\x20Dog#sound(),\x20references_symbols\x20=\x20Animal#s\ + ound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal#sound()\",\x20is_\ + implementation:true,\x20is_reference:\x20true}]\n\x20}\n\x20const\x20ani\ + mal:\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()`\x20method\x20as\x20well.\x20Vice-versa,\x20doing\x20\"Find\n\ + \x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\x20should\x20in\ + clude\x20references\x20to\x20the\n\x20`Animal#sound()`\x20method\x20as\ + \x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xd5\x03\x02\x06\n\r\n\ + \x05\x04\x08\x02\x01\x01\x12\x04\xd5\x03\x07\x13\n\r\n\x05\x04\x08\x02\ + \x01\x03\x12\x04\xd5\x03\x16\x17\n\xee\x03\n\x04\x04\x08\x02\x02\x12\x04\ + \xde\x03\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_reference`\x20but\ + \x20for\x20\"Find\x20implementations\".\n\x20It's\x20common\x20for\x20`i\ + s_implementation`\x20and\x20`is_reference`\x20to\x20both\x20be\x20true\ + \x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\x20the\x20Typ\ + eScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\x20has\x20an\n\ + \x20`is_implementation`\x20relationship\x20with\x20`\"Animal#\"`\x20but\ + \x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\"Find\x20refer\ + ences\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\x20not\x20return\ + \n\x20\"Dog#\".\x20We\x20only\x20want\x20\"Dog#\"\x20to\x20return\x20as\ + \x20a\x20result\x20for\x20\"Find\n\x20implementations\"\x20on\x20the\x20\ + \"Animal#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xde\x03\ + \x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xde\x03\x07\x18\n\r\n\x05\ + \x04\x08\x02\x02\x03\x12\x04\xde\x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\ + \x12\x04\xe0\x03\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\x03\x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\ + \x12\x04\xe0\x03\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xe0\x03\ + \x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\xf1\x03\x02\x19\x1a\xd5\ + \x06\x20Allows\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20d\ + efinition\"\x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20whic\ + h\x20do\x20not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\ + \x20could\n\x20potentially\x20have\x20multiple\x20definitions.\n\n\x20Fo\ + r\x20example,\x20in\x20a\x20language\x20with\x20single\x20inheritance\ + \x20and\x20no\x20field\x20overriding,\n\x20inherited\x20fields\x20can\ + \x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20\ + declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation,\x20is_defin\ + ition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\ + \x20languages\x20with\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,\x20and\x20is_reference\x20to\x20relate\x20the\n\x20symbol\ + \x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NOTE:\x20At\ + \x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20SCIP\x20t\ + o\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\x20an\x20i\ + ndex\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20The\x20relati\ + onship\x20may\x20not\x20get\x20recorded\x20if\x20either\x20symbol\x20is\ + \x20local.\n\"A\x20Update\x20registerInverseRelationships\x20on\x20addin\ + g\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\x04\ + \xf1\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xf1\x03\x07\x14\n\ + \r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf1\x03\x17\x18\n\x88\x03\n\x02\x05\ + \x03\x12\x06\xfa\x03\0\x90\x04\x01\x1a\xf9\x02\x20SymbolRole\x20declares\ + \x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20occurrence.\ + \x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20where\x20each\ + \x20bit\x20represents\x20a\x20different\x20role.\x20For\x20example,\n\ + \x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20set,\x20te\ + st\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\x20value\ + \x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\x20implemen\ + ted\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20=\x20(role.v\ + alue\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\x03\ + \x01\x12\x04\xfa\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\x12\x04\xfd\x03\x02\ + \x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\x20used;\x20\ + it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20from\x20the\x20P\ + rotobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\xfd\ + \x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\xfd\x03\x1a\x1b\nT\n\ + \x04\x05\x03\x02\x01\x12\x04\xff\x03\x02\x13\x1aF\x20Is\x20the\x20symbol\ + \x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbol\ + \x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\xff\x03\x02\x0c\n\ + \r\n\x05\x05\x03\x02\x01\x02\x12\x04\xff\x03\x0f\x12\n,\n\x04\x05\x03\ + \x02\x02\x12\x04\x81\x04\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ + ted\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x81\x04\x02\x08\n\r\ + \n\x05\x05\x03\x02\x02\x02\x12\x04\x81\x04\x0b\x0e\n+\n\x04\x05\x03\x02\ + \x03\x12\x04\x83\x04\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ + \x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x83\x04\x02\r\n\r\n\ + \x05\x05\x03\x02\x03\x02\x12\x04\x83\x04\x10\x13\n(\n\x04\x05\x03\x02\ + \x04\x12\x04\x85\x04\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ + ere?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x85\x04\x02\x0c\n\r\n\x05\ + \x05\x03\x02\x04\x02\x12\x04\x85\x04\x0f\x12\n0\n\x04\x05\x03\x02\x05\ + \x12\x04\x87\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ + \x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x87\x04\x02\x0b\n\r\n\ + \x05\x05\x03\x02\x05\x02\x12\x04\x87\x04\x0e\x12\n+\n\x04\x05\x03\x02\ + \x06\x12\x04\x89\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ + t\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x89\x04\x02\x06\n\r\n\ + \x05\x05\x03\x02\x06\x02\x12\x04\x89\x04\t\r\n\xed\x01\n\x04\x05\x03\x02\ + \x07\x12\x04\x8f\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\x20a\x20signature\ + \x20for\x20a\x20symbol\x20that\x20is\x20defined\x20elsewhere?\n\n\x20App\ + lies\x20to\x20forward\x20declarations\x20for\x20languages\x20like\x20C,\ + \x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\x20`val`\x20declara\ + tions\x20in\x20interface\n\x20files\x20in\x20languages\x20like\x20SML\ + \x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\x8f\x04\x02\ + \x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x8f\x04\x16\x1a\n\x0c\n\x02\ + \x05\x04\x12\x06\x92\x04\0\xef\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\ + \x92\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x93\x04\x02\x1c\n\x0c\n\ + \x04\x05\x04\x03\x02\x12\x04\x93\x04\x02\x1c\n\x0c\n\x04\x05\x04\x02\0\ + \x12\x04\x95\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\x04\x95\x04\x02\ + \x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x95\x04\x1a\x1b\n;\n\x04\x05\ + \x04\x02\x01\x12\x04\x98\x04\x02\x0e\x1a-\x20Comment,\x20including\x20co\ + mment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\ + \x98\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x98\x04\x0c\r\n\x1b\ + \n\x04\x05\x04\x02\x02\x12\x04\x9b\x04\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,\ + `\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x9b\x04\x02\x16\n\r\n\x05\x05\ + \x04\x02\x02\x02\x12\x04\x9b\x04\x19\x1a\n2\n\x04\x05\x04\x02\x03\x12\ + \x04\x9d\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntact\ + ically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9d\x04\x02\x14\n\r\n\x05\ + \x05\x04\x02\x03\x02\x12\x04\x9d\x04\x17\x18\n5\n\x04\x05\x04\x02\x04\ + \x12\x04\xa0\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class\ + `,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xa0\x04\x02\t\n\r\n\ + \x05\x05\x04\x02\x04\x02\x12\x04\xa0\x04\x0c\r\n\x0c\n\x04\x05\x04\x02\ + \x05\x12\x04\xa1\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\x04\xa1\x04\ + \x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\xa1\x04\x16\x17\n\r\n\x05\ + \x05\x04\x02\x05\x03\x12\x04\xa1\x04\x18)\n\x0e\n\x06\x05\x04\x02\x05\ + \x03\x01\x12\x04\xa1\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\x12\x04\xa4\ + \x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x06\ + \x01\x12\x04\xa4\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\x12\x04\xa4\ + \x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa7\x04\x02\x11\x1aJ\x20no\ + n-specific\x20catch-all\x20for\x20any\x20identifier\x20not\x20better\x20\ + described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\x12\x04\xa7\x04\ + \x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa7\x04\x0f\x10\nN\n\x04\ + \x05\x04\x02\x08\x12\x04\xa9\x04\x02\x18\x1a@\x20Identifiers\x20builtin\ + \x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\ + \x05\x05\x04\x02\x08\x01\x12\x04\xa9\x04\x02\x13\n\r\n\x05\x05\x04\x02\ + \x08\x02\x12\x04\xa9\x04\x16\x17\n[\n\x04\x05\x04\x02\t\x12\x04\xab\x04\ + \x02\x15\x1aM\x20Identifiers\x20representing\x20`null`-like\x20values:\ + \x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x04\ + \x02\t\x01\x12\x04\xab\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\x02\x12\x04\ + \xab\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xad\x04\x02\x19\x1a\x20\ + \x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x04\ + \x02\n\x01\x12\x04\xad\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\x02\x12\x04\ + \xad\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xaf\x04\x02\x1f\x1a\ + \x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\ + \x0b\x01\x12\x04\xaf\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\x02\x12\x04\ + \xaf\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xb1\x04\x02\x1b\x1a%\ + \x20Parameter\x20definition\x20and\x20references\n\n\r\n\x05\x05\x04\x02\ + \x0c\x01\x12\x04\xb1\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0c\x02\x12\x04\ + \xb1\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb3\x04\x02\x17\x1aJ\x20\ + Identifiers\x20for\x20variable\x20definitions\x20and\x20references\x20wi\ + thin\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\r\x01\x12\x04\xb3\ + \x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb3\x04\x14\x16\nK\n\ + \x04\x05\x04\x02\x0e\x12\x04\xb5\x04\x02\x1a\x1a=\x20Identifiers\x20that\ + \x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\ + \x05\x05\x04\x02\x0e\x01\x12\x04\xb5\x04\x02\x14\n\r\n\x05\x05\x04\x02\ + \x0e\x02\x12\x04\xb5\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\x02\x0f\x12\x04\ + \xba\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\ + \x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20\ + This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20l\ + anguages,\n\x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\ + \x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\x04\xba\x04\ + \x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xba\x04\x18\x1a\n\x0c\n\ + \x04\x05\x04\x02\x10\x12\x04\xbb\x04\x02*\n\r\n\x05\x05\x04\x02\x10\x01\ + \x12\x04\xbb\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\x04\xbb\x04\ + \x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xbb\x04\x18)\n\x0e\n\x06\ + \x05\x04\x02\x10\x03\x01\x12\x04\xbb\x04\x19(\n4\n\x04\x05\x04\x02\x11\ + \x12\x04\xbe\x04\x02\x1a\x1a&\x20Function\x20references,\x20including\ + \x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xbe\x04\x02\x14\n\r\n\ + \x05\x05\x04\x02\x11\x02\x12\x04\xbe\x04\x17\x19\n(\n\x04\x05\x04\x02\ + \x12\x12\x04\xc0\x04\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\ + \r\n\x05\x05\x04\x02\x12\x01\x12\x04\xc0\x04\x02\x1e\n\r\n\x05\x05\x04\ + \x02\x12\x02\x12\x04\xc0\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\xc3\x04\ + \x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocations\n\n\r\ + \n\x05\x05\x04\x02\x13\x01\x12\x04\xc3\x04\x02\x11\n\r\n\x05\x05\x04\x02\ + \x13\x02\x12\x04\xc3\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\x04\xc5\ + \x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x04\x02\ + \x14\x01\x12\x04\xc5\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\x12\x04\ + \xc5\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xc8\x04\x02\x16\x1a\ + \x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\x04\xc8\ + \x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xc8\x04\x13\x15\nK\n\ + \x04\x05\x04\x02\x16\x12\x04\xca\x04\x02\x1d\x1a=\x20builtin\x20types\ + \x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\ + \x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xca\x04\x02\x17\n\r\n\x05\ + \x05\x04\x02\x16\x02\x12\x04\xca\x04\x1a\x1c\n7\n\x04\x05\x04\x02\x17\ + \x12\x04\xcd\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__at\ + tribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcd\x04\x02\x15\n\r\n\ + \x05\x05\x04\x02\x17\x02\x12\x04\xcd\x04\x18\x1a\n\x14\n\x04\x05\x04\x02\ + \x18\x12\x04\xd0\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x04\x02\ + \x18\x01\x12\x04\xd0\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\x12\x04\xd0\ + \x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd2\x04\x02\x15\x1a\n\ + \x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd2\x04\x02\x0f\ + \n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd2\x04\x12\x14\n\x13\n\x04\x05\ + \x04\x02\x1a\x12\x04\xd4\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x04\ + \x02\x1a\x01\x12\x04\xd4\x04\x02\x0f\n\r\n\x05\x05\x04\x02\x1a\x02\x12\ + \x04\xd4\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd6\x04\x02\x16\ + \x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\x02\x1b\x01\ + \x12\x04\xd6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\x04\xd6\x04\ + \x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xd8\x04\x02\x11\x1a\n\x20`|\ + `,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xd8\x04\x02\x0b\n\r\n\ + \x05\x05\x04\x02\x1c\x02\x12\x04\xd8\x04\x0e\x10\n0\n\x04\x05\x04\x02\ + \x1d\x12\x04\xdb\x04\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\ + \x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xdb\x04\x02\x0f\n\r\ + \n\x05\x05\x04\x02\x1d\x02\x12\x04\xdb\x04\x12\x14\n-\n\x04\x05\x04\x02\ + \x1e\x12\x04\xdd\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\"\ + ,\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdd\x04\x02\x15\n\r\ + \n\x05\x05\x04\x02\x1e\x02\x12\x04\xdd\x04\x18\x1a\n_\n\x04\x05\x04\x02\ + \x1f\x12\x04\xdf\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20\ + special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20st\ + rings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xdf\x04\x02\x16\n\r\n\x05\ + \x05\x04\x02\x1f\x02\x12\x04\xdf\x04\x19\x1b\nG\n\x04\x05\x04\x02\x20\ + \x12\x04\xe1\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"val\ + ue\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x04\ + \x02\x20\x01\x12\x04\xe1\x04\x02\x12\n\r\n\x05\x05\x04\x02\x20\x02\x12\ + \x04\xe1\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe3\x04\x02\x18\x1aH\ + \x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\ + \x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\x12\x04\ + \xe3\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe3\x04\x15\x17\n9\n\ + \x04\x05\x04\x02\"\x12\x04\xe5\x04\x02\x16\x1a+\x20Literal\x20numbers,\ + \x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\x01\x12\ + \x04\xe5\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe5\x04\x13\x15\ + \n\x1f\n\x04\x05\x04\x02#\x12\x04\xe7\x04\x02\x16\x1a\x11\x20`true`,\x20\ + `false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe7\x04\x02\x10\n\r\n\x05\ + \x05\x04\x02#\x02\x12\x04\xe7\x04\x13\x15\n&\n\x04\x05\x04\x02$\x12\x04\ + \xea\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\ + \x05\x04\x02$\x01\x12\x04\xea\x04\x02\x05\n\r\n\x05\x05\x04\x02$\x02\x12\ + \x04\xea\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xec\x04\x02\x14\x1a!\ + \x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02%\ + \x01\x12\x04\xec\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xec\x04\ + \x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xee\x04\x02\x14\x1a\x1e\x20Delimi\ + ters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\xee\ + \x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xee\x04\x11\x13\n\xf9\ + \x01\n\x02\x04\t\x12\x06\xf6\x04\0\xd7\x05\x01\x1a\xea\x01\x20Occurrence\ + \x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/\ + or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\ + \x20should\x20try\x20to\x20bundle\x20logically\x20related\x20information\ + \n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\ + \x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf6\x04\ + \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x8e\x05\x02\x1b\x1a\xd9\x08\ \x20Half-open\x20[start,\x20end)\x20range\x20of\x20this\x20occurrence.\ \x20Must\x20be\x20exactly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\ \x20Four\x20elements:\x20`[startLine,\x20startCharacter,\x20endLine,\x20\ @@ -5591,21 +5594,21 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ncoding\x20is\x20admittedly\x20more\x20embarrassing\x20to\n\x20work\x20w\ ith\x20in\x20some\x20programming\x20languages\x20but\x20we\x20hope\x20th\ e\x20performance\n\x20improvements\x20make\x20up\x20for\x20it.\n\n\r\n\ - \x05\x04\t\x02\0\x04\x12\x04\x8c\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ - \x04\x8c\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8c\x05\x11\x16\n\ - \r\n\x05\x04\t\x02\0\x03\x12\x04\x8c\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ - \x02\x01\x12\x04\x8f\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ + \x05\x04\t\x02\0\x04\x12\x04\x8e\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ + \x04\x8e\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8e\x05\x11\x16\n\ + \r\n\x05\x04\t\x02\0\x03\x12\x04\x8e\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ + \x02\x01\x12\x04\x91\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ that\x20appears\x20at\x20this\x20position.\x20See\n\x20`SymbolInformatio\ n.symbol`\x20for\x20how\x20to\x20format\x20symbols\x20as\x20strings.\n\n\ - \r\n\x05\x04\t\x02\x01\x05\x12\x04\x8f\x05\x02\x08\n\r\n\x05\x04\t\x02\ - \x01\x01\x12\x04\x8f\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x8f\ - \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x92\x05\x02\x19\x1a\ + \r\n\x05\x04\t\x02\x01\x05\x12\x04\x91\x05\x02\x08\n\r\n\x05\x04\t\x02\ + \x01\x01\x12\x04\x91\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x91\ + \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x94\x05\x02\x19\x1a\ \x88\x01\x20(optional)\x20Bitset\x20containing\x20`SymbolRole`s\x20in\ \x20this\x20occurrence.\n\x20See\x20`SymbolRole`'s\x20documentation\x20f\ or\x20how\x20to\x20read\x20and\x20write\x20this\x20field.\n\n\r\n\x05\ - \x04\t\x02\x02\x05\x12\x04\x92\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ - \x12\x04\x92\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x92\x05\x17\ - \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9b\x05\x02-\x1a\xe2\x03\x20(\ + \x04\t\x02\x02\x05\x12\x04\x94\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ + \x12\x04\x94\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x94\x05\x17\ + \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9d\x05\x02-\x1a\xe2\x03\x20(\ optional)\x20CommonMark-formatted\x20documentation\x20for\x20this\x20spe\ cific\x20range.\x20If\n\x20empty,\x20the\x20`Symbol.documentation`\x20fi\ eld\x20is\x20used\x20instead.\x20One\x20example\n\x20where\x20this\x20fi\ @@ -5616,19 +5619,19 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x20This\x20field\x20can\x20also\x20be\x20used\x20for\x20dynamically\ \x20or\x20gradually\x20typed\x20languages,\n\x20which\x20commonly\x20all\ ow\x20for\x20type-changing\x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\ - \x12\x04\x9b\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9b\x05\x0b\ - \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9b\x05\x12(\n\r\n\x05\x04\t\ - \x02\x03\x03\x12\x04\x9b\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\x9d\x05\ + \x12\x04\x9d\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9d\x05\x0b\ + \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9d\x05\x12(\n\r\n\x05\x04\t\ + \x02\x03\x03\x12\x04\x9d\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\x9f\x05\ \x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\x20highlighting\x20class\ \x20should\x20be\x20used\x20for\x20this\x20range?\n\n\r\n\x05\x04\t\x02\ - \x04\x06\x12\x04\x9d\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\x9d\ - \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\x9d\x05\x1b\x1c\nW\n\x04\ - \x04\t\x02\x05\x12\x04\x9f\x05\x02&\x1aI\x20(optional)\x20Diagnostics\ + \x04\x06\x12\x04\x9f\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\x9f\ + \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\x9f\x05\x1b\x1c\nW\n\x04\ + \x04\t\x02\x05\x12\x04\xa1\x05\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\x9f\x05\x02\n\n\r\n\x05\x04\t\ - \x02\x05\x06\x12\x04\x9f\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ - \x9f\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\x9f\x05$%\n\xb7\x0e\n\ - \x04\x04\t\x02\x06\x12\x04\xd4\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ + .\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\xa1\x05\x02\n\n\r\n\x05\x04\t\ + \x02\x05\x06\x12\x04\xa1\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ + \xa1\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\xa1\x05$%\n\xb7\x0e\n\ + \x04\x04\t\x02\x06\x12\x04\xd6\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ ng\x20the\x20same\x20encoding\x20as\x20the\x20sibling\x20`range`\x20fiel\ d,\x20half-open\n\x20source\x20range\x20of\x20the\x20nearest\x20non-triv\ ial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\n\x20enclose\ @@ -5675,55 +5678,55 @@ static file_descriptor_proto_data: &'static [u8] = b"\ nclosing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20ran\ ge\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosi\ - ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd4\x05\x02\n\n\ - \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd4\x05\x0b\x10\n\r\n\x05\x04\t\x02\ - \x06\x01\x12\x04\xd4\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd4\ - \x05#$\nw\n\x02\x04\n\x12\x06\xd9\x05\0\xe4\x05\x01\x1ai\x20Represents\ + ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd6\x05\x02\n\n\ + \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd6\x05\x0b\x10\n\r\n\x05\x04\t\x02\ + \x06\x01\x12\x04\xd6\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd6\ + \x05#$\nw\n\x02\x04\n\x12\x06\xdb\x05\0\xe6\x05\x01\x1ai\x20Represents\ \x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20wa\ rning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\n\ - \n\x0b\n\x03\x04\n\x01\x12\x04\xd9\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ - \x04\xdb\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ + \n\x0b\n\x03\x04\n\x01\x12\x04\xdb\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ + \x04\xdd\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ ted\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20hint?\n\n\r\n\ - \x05\x04\n\x02\0\x06\x12\x04\xdb\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ - \x04\xdb\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdb\x05\x16\x17\n\ - ]\n\x04\x04\n\x02\x01\x12\x04\xdd\x05\x02\x12\x1aO\x20(optional)\x20Code\ + \x05\x04\n\x02\0\x06\x12\x04\xdd\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ + \x04\xdd\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdd\x05\x16\x17\n\ + ]\n\x04\x04\n\x02\x01\x12\x04\xdf\x05\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\xdd\x05\x02\ - \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xdd\x05\t\r\n\r\n\x05\x04\n\x02\ - \x01\x03\x12\x04\xdd\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xdf\x05\ + \x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\xdf\x05\x02\ + \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xdf\x05\t\r\n\r\n\x05\x04\n\x02\ + \x01\x03\x12\x04\xdf\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xe1\x05\ \x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\n\n\r\n\x05\x04\ - \n\x02\x02\x05\x12\x04\xdf\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ - \x04\xdf\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xdf\x05\x13\x14\n\ - ~\n\x04\x04\n\x02\x03\x12\x04\xe2\x05\x02\x14\x1ap\x20(optional)\x20Huma\ + \n\x02\x02\x05\x12\x04\xe1\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ + \x04\xe1\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xe1\x05\x13\x14\n\ + ~\n\x04\x04\n\x02\x03\x12\x04\xe4\x05\x02\x14\x1ap\x20(optional)\x20Huma\ n-readable\x20string\x20describing\x20the\x20source\x20of\x20this\x20dia\ gnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\x20lint'.\n\n\r\n\x05\ - \x04\n\x02\x03\x05\x12\x04\xe2\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ - \x12\x04\xe2\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe2\x05\x12\ - \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe3\x05\x02\"\n\r\n\x05\x04\n\x02\ - \x04\x04\x12\x04\xe3\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe3\ - \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe3\x05\x19\x1d\n\r\n\ - \x05\x04\n\x02\x04\x03\x12\x04\xe3\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ - \xe6\x05\0\xec\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xe6\x05\x05\r\n\ - \x0c\n\x04\x05\x05\x02\0\x12\x04\xe7\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ - \x01\x12\x04\xe7\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xe7\x05\ - \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xe8\x05\x02\x0c\n\r\n\x05\ - \x05\x05\x02\x01\x01\x12\x04\xe8\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ - \x02\x12\x04\xe8\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xe9\x05\ - \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xe9\x05\x02\t\n\r\n\x05\ - \x05\x05\x02\x02\x02\x12\x04\xe9\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ - \x12\x04\xea\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xea\x05\ - \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xea\x05\x10\x11\n\x0c\n\x04\ - \x05\x05\x02\x04\x12\x04\xeb\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ - \x12\x04\xeb\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xeb\x05\t\ - \n\n\x0c\n\x02\x05\x06\x12\x06\xee\x05\0\xf2\x05\x01\n\x0b\n\x03\x05\x06\ - \x01\x12\x04\xee\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xef\x05\ - \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xef\x05\x02\x1a\n\r\n\x05\ - \x05\x06\x02\0\x02\x12\x04\xef\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ - \x12\x04\xf0\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf0\x05\ - \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf0\x05\x10\x11\n\x0c\n\x04\ - \x05\x06\x02\x02\x12\x04\xf1\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ - \x12\x04\xf1\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf1\x05\ - \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfa\x05\0\xf0\x06\x01\x1a\xc1\ + \x04\n\x02\x03\x05\x12\x04\xe4\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ + \x12\x04\xe4\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe4\x05\x12\ + \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe5\x05\x02\"\n\r\n\x05\x04\n\x02\ + \x04\x04\x12\x04\xe5\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe5\ + \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe5\x05\x19\x1d\n\r\n\ + \x05\x04\n\x02\x04\x03\x12\x04\xe5\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ + \xe8\x05\0\xee\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xe8\x05\x05\r\n\ + \x0c\n\x04\x05\x05\x02\0\x12\x04\xe9\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ + \x01\x12\x04\xe9\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xe9\x05\ + \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xea\x05\x02\x0c\n\r\n\x05\ + \x05\x05\x02\x01\x01\x12\x04\xea\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ + \x02\x12\x04\xea\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xeb\x05\ + \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xeb\x05\x02\t\n\r\n\x05\ + \x05\x05\x02\x02\x02\x12\x04\xeb\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ + \x12\x04\xec\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xec\x05\ + \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xec\x05\x10\x11\n\x0c\n\x04\ + \x05\x05\x02\x04\x12\x04\xed\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ + \x12\x04\xed\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xed\x05\t\ + \n\n\x0c\n\x02\x05\x06\x12\x06\xf0\x05\0\xf4\x05\x01\n\x0b\n\x03\x05\x06\ + \x01\x12\x04\xf0\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xf1\x05\ + \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xf1\x05\x02\x1a\n\r\n\x05\ + \x05\x06\x02\0\x02\x12\x04\xf1\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ + \x12\x04\xf2\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf2\x05\ + \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf2\x05\x10\x11\n\x0c\n\x04\ + \x05\x06\x02\x02\x12\x04\xf3\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ + \x12\x04\xf3\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf3\x05\ + \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfc\x05\0\xf2\x06\x01\x1a\xc1\ \x03\x20Language\x20standardises\x20names\x20of\x20common\x20programming\ \x20languages\x20that\x20can\x20be\x20used\n\x20for\x20the\x20`Document.\ language`\x20field.\x20The\x20primary\x20purpose\x20of\x20this\x20enum\ @@ -5733,245 +5736,245 @@ static file_descriptor_proto_data: &'static [u8] = b"\ uage\x20uses\x20the\x20name\n\x20\"CPP\"\x20in\x20this\x20enum\x20and\ \x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20incompatible.\n\ \x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\x20add\x20miss\ - ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfa\ - \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xfb\x05\x02\x1a\n\r\n\x05\ - \x05\x07\x02\0\x01\x12\x04\xfb\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ - \x12\x04\xfb\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\xfc\x05\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\xfc\x05\x02\x06\n\r\n\x05\x05\ - \x07\x02\x01\x02\x12\x04\xfc\x05\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ - \x04\xfd\x05\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\xfd\x05\x02\ - \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\xfd\x05\t\x0b\n\x0c\n\x04\x05\ - \x07\x02\x03\x12\x04\xfe\x05\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ - \x04\xfe\x05\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\xfe\x05\x08\n\ - \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\xff\x05\x02\x0b\n\r\n\x05\x05\x07\ - \x02\x04\x01\x12\x04\xff\x05\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ - \x04\xff\x05\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x80\x06\x02\x0c\n\ - \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x80\x06\x02\x06\n\r\n\x05\x05\x07\ - \x02\x05\x02\x12\x04\x80\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ - \x81\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x81\x06\x02\n\n\r\ - \n\x05\x05\x07\x02\x06\x02\x12\x04\x81\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ - \x07\x12\x04\x82\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x82\ - \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x82\x06\r\x0f\n\x0c\n\ - \x04\x05\x07\x02\x08\x12\x04\x83\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ - \x01\x12\x04\x83\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x83\ - \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x84\x06\x02\x0b\n\r\n\x05\ - \x05\x07\x02\t\x01\x12\x04\x84\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ - \x12\x04\x84\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x85\x06\x02\x0e\ - \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x85\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02\n\x02\x12\x04\x85\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x86\ - \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x86\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02\x0b\x02\x12\x04\x86\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ - \x0c\x12\x04\x87\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x87\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x87\x06\n\x0c\nH\n\x04\ - \x05\x07\x02\r\x12\x04\x88\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ + ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfc\ + \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xfd\x05\x02\x1a\n\r\n\x05\ + \x05\x07\x02\0\x01\x12\x04\xfd\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ + \x12\x04\xfd\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\xfe\x05\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\xfe\x05\x02\x06\n\r\n\x05\x05\ + \x07\x02\x01\x02\x12\x04\xfe\x05\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ + \x04\xff\x05\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\xff\x05\x02\ + \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\xff\x05\t\x0b\n\x0c\n\x04\x05\ + \x07\x02\x03\x12\x04\x80\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ + \x04\x80\x06\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\x80\x06\x08\n\ + \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\x81\x06\x02\x0b\n\r\n\x05\x05\x07\ + \x02\x04\x01\x12\x04\x81\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ + \x04\x81\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x82\x06\x02\x0c\n\ + \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x82\x06\x02\x06\n\r\n\x05\x05\x07\ + \x02\x05\x02\x12\x04\x82\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ + \x83\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x83\x06\x02\n\n\r\ + \n\x05\x05\x07\x02\x06\x02\x12\x04\x83\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ + \x07\x12\x04\x84\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x84\ + \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x84\x06\r\x0f\n\x0c\n\ + \x04\x05\x07\x02\x08\x12\x04\x85\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ + \x01\x12\x04\x85\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x85\ + \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x86\x06\x02\x0b\n\r\n\x05\ + \x05\x07\x02\t\x01\x12\x04\x86\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ + \x12\x04\x86\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x87\x06\x02\x0e\ + \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x87\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02\n\x02\x12\x04\x87\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x88\ + \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x88\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02\x0b\x02\x12\x04\x88\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ + \x0c\x12\x04\x89\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x89\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x89\x06\n\x0c\nH\n\x04\ + \x05\x07\x02\r\x12\x04\x8a\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ P\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ - \x05\x07\x02\r\x01\x12\x04\x88\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ - \x12\x04\x88\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x89\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x89\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02\x0e\x02\x12\x04\x89\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ - \x04\x8a\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8a\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8a\x06\x0b\x0c\n\x0c\n\x04\x05\ - \x07\x02\x10\x12\x04\x8b\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ - \x04\x8b\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8b\x06\x0c\r\n\ - \x0c\n\x04\x05\x07\x02\x11\x12\x04\x8c\x06\x02\x14\n\r\n\x05\x05\x07\x02\ - \x11\x01\x12\x04\x8c\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ - \x8c\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x8d\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02\x12\x01\x12\x04\x8d\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ - \x12\x02\x12\x04\x8d\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x8e\ - \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x8e\x06\x02\x05\n\r\n\ - \x05\x05\x07\x02\x13\x02\x12\x04\x8e\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ - \x14\x12\x04\x8f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x8f\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x8f\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02\x15\x12\x04\x90\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ - \x01\x12\x04\x90\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x90\ - \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x91\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x16\x01\x12\x04\x91\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ - \x02\x12\x04\x91\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x92\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02\x17\x02\x12\x04\x92\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ - \x12\x04\x93\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x93\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x93\x06\x0f\x11\n\x0c\n\ - \x04\x05\x07\x02\x19\x12\x04\x94\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ - \x01\x12\x04\x94\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x94\ - \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x95\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x1a\x01\x12\x04\x95\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ - \x02\x12\x04\x95\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x96\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x96\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02\x1b\x02\x12\x04\x96\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ - \x12\x04\x97\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x97\x06\ - \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x97\x06\x0b\r\n\x0c\n\x04\ - \x05\x07\x02\x1d\x12\x04\x98\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ - \x12\x04\x98\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x98\x06\t\ - \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x99\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02\x1e\x01\x12\x04\x99\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ - \x12\x04\x99\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9a\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9a\x06\x02\t\n\r\n\x05\x05\ - \x07\x02\x1f\x02\x12\x04\x9a\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ - \x04\x9b\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9b\x06\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9b\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02!\x12\x04\x9c\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ - \x9c\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\x9c\x06\x0f\x11\n\ - \x0c\n\x04\x05\x07\x02\"\x12\x04\x9d\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ - \x01\x12\x04\x9d\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\x9d\x06\ - \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\x9e\x06\x02\n\n\r\n\x05\x05\ - \x07\x02#\x01\x12\x04\x9e\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ - \x9e\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\x9f\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02$\x01\x12\x04\x9f\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ - \x12\x04\x9f\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa0\x06\x02\r\ - \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa0\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02%\x02\x12\x04\xa0\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa1\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa1\x06\x02\x06\n\r\n\ - \x05\x05\x07\x02&\x02\x12\x04\xa1\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ - \x04\xa2\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa2\x06\x02\x06\ - \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa2\x06\t\x0b\n\x0c\n\x04\x05\x07\ - \x02(\x12\x04\xa3\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa3\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa3\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02)\x12\x04\xa4\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ - \xa4\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa4\x06\x0c\x0e\n\x0c\ - \n\x04\x05\x07\x02*\x12\x04\xa5\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ - \x04\xa5\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa5\x06\n\x0c\n\ - \x0c\n\x04\x05\x07\x02+\x12\x04\xa6\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ - \x01\x12\x04\xa6\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xa6\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xa7\x06\x02\t\n\r\n\x05\x05\x07\ - \x02,\x01\x12\x04\xa7\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xa7\ - \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xa8\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02-\x01\x12\x04\xa8\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ - \x04\xa8\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xa9\x06\x02\x0b\n\r\ - \n\x05\x05\x07\x02.\x01\x12\x04\xa9\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ - \x02\x12\x04\xa9\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xaa\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xaa\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02/\x02\x12\x04\xaa\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ - \xab\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xab\x06\x02\x11\n\r\ - \n\x05\x05\x07\x020\x02\x12\x04\xab\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ - \x12\x04\xac\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xac\x06\x02\ - \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xac\x06\x0c\x0e\n\x0c\n\x04\x05\ - \x07\x022\x12\x04\xad\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xad\ - \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xad\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x023\x12\x04\xae\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ - \x04\xae\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xae\x06\r\x10\n\ - \x0c\n\x04\x05\x07\x024\x12\x04\xaf\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ - \x12\x04\xaf\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xaf\x06\x0b\ - \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb0\x06\x02\r\n\r\n\x05\x05\x07\ - \x025\x01\x12\x04\xb0\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb0\ - \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb1\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x026\x01\x12\x04\xb1\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ - \x04\xb1\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb2\x06\x02\x0c\n\r\ - \n\x05\x05\x07\x027\x01\x12\x04\xb2\x06\x02\x06\n\r\n\x05\x05\x07\x027\ - \x02\x12\x04\xb2\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb3\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb3\x06\x02\x05\n\r\n\x05\x05\ - \x07\x028\x02\x12\x04\xb3\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb4\ - \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb4\x06\x02\x06\n\r\n\x05\ - \x05\x07\x029\x02\x12\x04\xb4\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ - \xb5\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb5\x06\x02\n\n\r\n\ - \x05\x05\x07\x02:\x02\x12\x04\xb5\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ - \x04\xb6\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xb6\x06\x02\n\n\ - \r\n\x05\x05\x07\x02;\x02\x12\x04\xb6\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ - \x12\x04\xb7\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xb7\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xb7\x06\x0b\r\n(\n\x04\x05\x07\ - \x02=\x12\x04\xb8\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ - \x05\x05\x07\x02=\x01\x12\x04\xb8\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ - \x12\x04\xb8\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xb9\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xb9\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02>\x02\x12\x04\xb9\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xba\ - \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xba\x06\x02\x07\n\r\n\x05\ - \x05\x07\x02?\x02\x12\x04\xba\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ - \xbb\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbb\x06\x02\r\n\r\n\ - \x05\x05\x07\x02@\x02\x12\x04\xbb\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ - \x12\x04\xbc\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xbc\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xbc\x06\x12\x14\n\x0c\n\x04\x05\ - \x07\x02B\x12\x04\xbd\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xbd\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xbd\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x02C\x12\x04\xbe\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ - \x04\xbe\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xbe\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02D\x12\x04\xbf\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ - \x12\x04\xbf\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xbf\x06\n\ - \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc0\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02E\x01\x12\x04\xc0\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc0\ - \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc1\x06\x02\x12\n\r\n\x05\ - \x05\x07\x02F\x01\x12\x04\xc1\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ - \x04\xc1\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc2\x06\x02\x0e\n\ - \r\n\x05\x05\x07\x02G\x01\x12\x04\xc2\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ - \x02\x12\x04\xc2\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc3\x06\x02\ - \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc3\x06\x02\n\n\r\n\x05\x05\x07\ - \x02H\x02\x12\x04\xc3\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc4\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc4\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02I\x02\x12\x04\xc4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ - \xc5\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc5\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02J\x02\x12\x04\xc5\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ - \x12\x04\xc6\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xc6\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\ - \x07\x02L\x12\x04\xc7\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xc7\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xc7\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02M\x12\x04\xc8\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ - \x04\xc8\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xc8\x06\n\x0c\n2\ - \n\x04\x05\x07\x02N\x12\x04\xc9\x06\x02\x0e\"$\x20Internal\x20language\ - \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xc9\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xc9\x06\n\r\n\x0c\n\x04\x05\ - \x07\x02O\x12\x04\xca\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xca\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xca\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02P\x12\x04\xcb\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ - \x04\xcb\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcb\x06\t\x0b\n\ - \x0c\n\x04\x05\x07\x02Q\x12\x04\xcc\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ - \x01\x12\x04\xcc\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xcc\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xcd\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02R\x01\x12\x04\xcd\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ - \xcd\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xce\x06\x02\x0c\n\r\n\ - \x05\x05\x07\x02S\x01\x12\x04\xce\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ - \x12\x04\xce\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xcf\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02T\x02\x12\x04\xcf\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd0\x06\ - \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd0\x06\x02\x05\n\r\n\x05\ - \x05\x07\x02U\x02\x12\x04\xd0\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ - \xd1\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd1\x06\x02\x06\n\r\ - \n\x05\x05\x07\x02V\x02\x12\x04\xd1\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ - \x12\x04\xd2\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd2\x06\x02\ - \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd2\x06\n\x0b\n\x0c\n\x04\x05\ - \x07\x02X\x12\x04\xd3\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd3\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd3\x06\x0b\r\n\x14\n\ - \x04\x05\x07\x02Y\x12\x04\xd4\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ - \x07\x02Y\x01\x12\x04\xd4\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ - \xd4\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd5\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02Z\x01\x12\x04\xd5\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ - \x12\x04\xd5\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xd6\x06\x02\ - \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xd6\x06\x02\x07\n\r\n\x05\x05\ - \x07\x02[\x02\x12\x04\xd6\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xd7\ - \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xd7\x06\x02\n\n\r\n\x05\ - \x05\x07\x02\\\x02\x12\x04\xd7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ - \x04\xd8\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xd8\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xd8\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ - \x02^\x12\x04\xd9\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xd9\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xd9\x06\n\x0b\n\x0c\n\x04\ - \x05\x07\x02_\x12\x04\xda\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ - \xda\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xda\x06\x08\x0b\n\ - \x0c\n\x04\x05\x07\x02`\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ - \x01\x12\x04\xdb\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdb\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xdc\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02a\x01\x12\x04\xdc\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ - \xdc\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xdd\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02b\x01\x12\x04\xdd\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ - \x12\x04\xdd\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xde\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xde\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02c\x02\x12\x04\xde\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ - \xdf\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xdf\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02d\x02\x12\x04\xdf\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ - \x12\x04\xe0\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe0\x06\x02\ - \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe0\x06\x0c\x0f\n\x0c\n\x04\x05\ - \x07\x02f\x12\x04\xe1\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe1\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe1\x06\t\x0c\n\x0c\n\ - \x04\x05\x07\x02g\x12\x04\xe2\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ - \x04\xe2\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe2\x06\x10\x12\n\ - \x0c\n\x04\x05\x07\x02h\x12\x04\xe3\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ - \x01\x12\x04\xe3\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe3\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe4\x06\x02\x0f\n\r\n\x05\x05\ - \x07\x02i\x01\x12\x04\xe4\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ - \xe4\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe5\x06\x02\x0b\n\r\n\ - \x05\x05\x07\x02j\x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ - \x12\x04\xe5\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xe6\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xe6\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02k\x02\x12\x04\xe6\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xe7\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xe7\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02l\x02\x12\x04\xe7\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ - \x04\xe8\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ + \x05\x07\x02\r\x01\x12\x04\x8a\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ + \x12\x04\x8a\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x8b\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x8b\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02\x0e\x02\x12\x04\x8b\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ + \x04\x8c\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8c\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8c\x06\x0b\x0c\n\x0c\n\x04\x05\ + \x07\x02\x10\x12\x04\x8d\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ + \x04\x8d\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8d\x06\x0c\r\n\ + \x0c\n\x04\x05\x07\x02\x11\x12\x04\x8e\x06\x02\x14\n\r\n\x05\x05\x07\x02\ + \x11\x01\x12\x04\x8e\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ + \x8e\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x8f\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02\x12\x01\x12\x04\x8f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ + \x12\x02\x12\x04\x8f\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x90\ + \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x90\x06\x02\x05\n\r\n\ + \x05\x05\x07\x02\x13\x02\x12\x04\x90\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ + \x14\x12\x04\x91\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x91\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x91\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02\x15\x12\x04\x92\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ + \x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x92\ + \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x93\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x16\x01\x12\x04\x93\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ + \x02\x12\x04\x93\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x94\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x94\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02\x17\x02\x12\x04\x94\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ + \x12\x04\x95\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x95\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x95\x06\x0f\x11\n\x0c\n\ + \x04\x05\x07\x02\x19\x12\x04\x96\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ + \x01\x12\x04\x96\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x96\ + \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x97\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x1a\x01\x12\x04\x97\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ + \x02\x12\x04\x97\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x98\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x98\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02\x1b\x02\x12\x04\x98\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ + \x12\x04\x99\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x99\x06\ + \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x99\x06\x0b\r\n\x0c\n\x04\ + \x05\x07\x02\x1d\x12\x04\x9a\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ + \x12\x04\x9a\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x9a\x06\t\ + \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x9b\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02\x1e\x01\x12\x04\x9b\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ + \x12\x04\x9b\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9c\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9c\x06\x02\t\n\r\n\x05\x05\ + \x07\x02\x1f\x02\x12\x04\x9c\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ + \x04\x9d\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9d\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9d\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02!\x12\x04\x9e\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ + \x9e\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\x9e\x06\x0f\x11\n\ + \x0c\n\x04\x05\x07\x02\"\x12\x04\x9f\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ + \x01\x12\x04\x9f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\x9f\x06\ + \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\xa0\x06\x02\n\n\r\n\x05\x05\ + \x07\x02#\x01\x12\x04\xa0\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ + \xa0\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\xa1\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02$\x01\x12\x04\xa1\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ + \x12\x04\xa1\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa2\x06\x02\r\ + \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa2\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02%\x02\x12\x04\xa2\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa3\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa3\x06\x02\x06\n\r\n\ + \x05\x05\x07\x02&\x02\x12\x04\xa3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ + \x04\xa4\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa4\x06\x02\x06\ + \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa4\x06\t\x0b\n\x0c\n\x04\x05\x07\ + \x02(\x12\x04\xa5\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa5\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa5\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02)\x12\x04\xa6\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ + \xa6\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa6\x06\x0c\x0e\n\x0c\ + \n\x04\x05\x07\x02*\x12\x04\xa7\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ + \x04\xa7\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa7\x06\n\x0c\n\ + \x0c\n\x04\x05\x07\x02+\x12\x04\xa8\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ + \x01\x12\x04\xa8\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xa8\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xa9\x06\x02\t\n\r\n\x05\x05\x07\ + \x02,\x01\x12\x04\xa9\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xa9\ + \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xaa\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02-\x01\x12\x04\xaa\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ + \x04\xaa\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xab\x06\x02\x0b\n\r\ + \n\x05\x05\x07\x02.\x01\x12\x04\xab\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ + \x02\x12\x04\xab\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xac\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xac\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02/\x02\x12\x04\xac\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ + \xad\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xad\x06\x02\x11\n\r\ + \n\x05\x05\x07\x020\x02\x12\x04\xad\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ + \x12\x04\xae\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xae\x06\x02\ + \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xae\x06\x0c\x0e\n\x0c\n\x04\x05\ + \x07\x022\x12\x04\xaf\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xaf\ + \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xaf\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x023\x12\x04\xb0\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ + \x04\xb0\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xb0\x06\r\x10\n\ + \x0c\n\x04\x05\x07\x024\x12\x04\xb1\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ + \x12\x04\xb1\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xb1\x06\x0b\ + \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb2\x06\x02\r\n\r\n\x05\x05\x07\ + \x025\x01\x12\x04\xb2\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb2\ + \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb3\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x026\x01\x12\x04\xb3\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ + \x04\xb3\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb4\x06\x02\x0c\n\r\ + \n\x05\x05\x07\x027\x01\x12\x04\xb4\x06\x02\x06\n\r\n\x05\x05\x07\x027\ + \x02\x12\x04\xb4\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb5\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb5\x06\x02\x05\n\r\n\x05\x05\ + \x07\x028\x02\x12\x04\xb5\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb6\ + \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb6\x06\x02\x06\n\r\n\x05\ + \x05\x07\x029\x02\x12\x04\xb6\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ + \xb7\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb7\x06\x02\n\n\r\n\ + \x05\x05\x07\x02:\x02\x12\x04\xb7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ + \x04\xb8\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xb8\x06\x02\n\n\ + \r\n\x05\x05\x07\x02;\x02\x12\x04\xb8\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ + \x12\x04\xb9\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xb9\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xb9\x06\x0b\r\n(\n\x04\x05\x07\ + \x02=\x12\x04\xba\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ + \x05\x05\x07\x02=\x01\x12\x04\xba\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ + \x12\x04\xba\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xbb\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xbb\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02>\x02\x12\x04\xbb\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xbc\ + \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xbc\x06\x02\x07\n\r\n\x05\ + \x05\x07\x02?\x02\x12\x04\xbc\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ + \xbd\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbd\x06\x02\r\n\r\n\ + \x05\x05\x07\x02@\x02\x12\x04\xbd\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ + \x12\x04\xbe\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xbe\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xbe\x06\x12\x14\n\x0c\n\x04\x05\ + \x07\x02B\x12\x04\xbf\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xbf\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xbf\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x02C\x12\x04\xc0\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ + \x04\xc0\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xc0\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02D\x12\x04\xc1\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ + \x12\x04\xc1\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xc1\x06\n\ + \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc2\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02E\x01\x12\x04\xc2\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc2\ + \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc3\x06\x02\x12\n\r\n\x05\ + \x05\x07\x02F\x01\x12\x04\xc3\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ + \x04\xc3\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc4\x06\x02\x0e\n\ + \r\n\x05\x05\x07\x02G\x01\x12\x04\xc4\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ + \x02\x12\x04\xc4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc5\x06\x02\ + \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc5\x06\x02\n\n\r\n\x05\x05\x07\ + \x02H\x02\x12\x04\xc5\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc6\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc6\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02I\x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ + \xc7\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc7\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02J\x02\x12\x04\xc7\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ + \x12\x04\xc8\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xc8\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xc8\x06\x0b\r\n\x0c\n\x04\x05\ + \x07\x02L\x12\x04\xc9\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xc9\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xc9\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02M\x12\x04\xca\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ + \x04\xca\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xca\x06\n\x0c\n2\ + \n\x04\x05\x07\x02N\x12\x04\xcb\x06\x02\x0e\"$\x20Internal\x20language\ + \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xcb\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xcb\x06\n\r\n\x0c\n\x04\x05\ + \x07\x02O\x12\x04\xcc\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xcc\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xcc\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02P\x12\x04\xcd\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ + \x04\xcd\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcd\x06\t\x0b\n\ + \x0c\n\x04\x05\x07\x02Q\x12\x04\xce\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ + \x01\x12\x04\xce\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xce\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xcf\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02R\x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ + \xcf\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xd0\x06\x02\x0c\n\r\n\ + \x05\x05\x07\x02S\x01\x12\x04\xd0\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ + \x12\x04\xd0\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xd1\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xd1\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02T\x02\x12\x04\xd1\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd2\x06\ + \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd2\x06\x02\x05\n\r\n\x05\ + \x05\x07\x02U\x02\x12\x04\xd2\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ + \xd3\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd3\x06\x02\x06\n\r\ + \n\x05\x05\x07\x02V\x02\x12\x04\xd3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ + \x12\x04\xd4\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd4\x06\x02\ + \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd4\x06\n\x0b\n\x0c\n\x04\x05\ + \x07\x02X\x12\x04\xd5\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd5\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd5\x06\x0b\r\n\x14\n\ + \x04\x05\x07\x02Y\x12\x04\xd6\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ + \x07\x02Y\x01\x12\x04\xd6\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ + \xd6\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd7\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02Z\x01\x12\x04\xd7\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ + \x12\x04\xd7\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xd8\x06\x02\ + \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xd8\x06\x02\x07\n\r\n\x05\x05\ + \x07\x02[\x02\x12\x04\xd8\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xd9\ + \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xd9\x06\x02\n\n\r\n\x05\ + \x05\x07\x02\\\x02\x12\x04\xd9\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ + \x04\xda\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xda\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xda\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ + \x02^\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xdb\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xdb\x06\n\x0b\n\x0c\n\x04\ + \x05\x07\x02_\x12\x04\xdc\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ + \xdc\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xdc\x06\x08\x0b\n\ + \x0c\n\x04\x05\x07\x02`\x12\x04\xdd\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ + \x01\x12\x04\xdd\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdd\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xde\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02a\x01\x12\x04\xde\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ + \xde\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xdf\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02b\x01\x12\x04\xdf\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ + \x12\x04\xdf\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xe0\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xe0\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02c\x02\x12\x04\xe0\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ + \xe1\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xe1\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02d\x02\x12\x04\xe1\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ + \x12\x04\xe2\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe2\x06\x02\ + \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe2\x06\x0c\x0f\n\x0c\n\x04\x05\ + \x07\x02f\x12\x04\xe3\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe3\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe3\x06\t\x0c\n\x0c\n\ + \x04\x05\x07\x02g\x12\x04\xe4\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ + \x04\xe4\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe4\x06\x10\x12\n\ + \x0c\n\x04\x05\x07\x02h\x12\x04\xe5\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ + \x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe5\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe6\x06\x02\x0f\n\r\n\x05\x05\ + \x07\x02i\x01\x12\x04\xe6\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ + \xe6\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe7\x06\x02\x0b\n\r\n\ + \x05\x05\x07\x02j\x01\x12\x04\xe7\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ + \x12\x04\xe7\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xe8\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xe8\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02k\x02\x12\x04\xe8\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xe9\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xe9\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02l\x02\x12\x04\xe9\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ + \x04\xea\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ \x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20the\x20\"NextL\ anguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\x20\"NextLangu\ age\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\x203.\x20Replace\ @@ -5980,8 +5983,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20correct\x20line\x20above\x20using\x20alphabetical\x20order\n\x205.\ \x20(optional)\x20Add\x20a\x20brief\x20comment\x20behind\x20the\x20langu\ age\x20if\x20the\x20name\x20is\x20not\x20self-explanatory\n\n\r\n\x05\ - \x05\x07\x02m\x01\x12\x04\xe8\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ - \x04\xe8\x06\x08\nb\x06proto3\ + \x05\x07\x02m\x01\x12\x04\xea\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ + \x04\xea\x06\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/dev/sample_indexes/.gitignore b/dev/sample_indexes/.gitignore new file mode 100644 index 00000000..4d8c4d12 --- /dev/null +++ b/dev/sample_indexes/.gitignore @@ -0,0 +1,3 @@ +# Ignore any SCIP indexes as well as any files with statistics data. +*.scip +*.json diff --git a/dev/sample_indexes/indexes-metadata.json b/dev/sample_indexes/indexes-metadata.json new file mode 100644 index 00000000..fde1b23f --- /dev/null +++ b/dev/sample_indexes/indexes-metadata.json @@ -0,0 +1,40 @@ +{ + "indexes": [ + { + "name": "django-1.scip", + "sha256": "93fb1d73db532f1d61404220bb2d9443e42fc25f5a69246d13a13cb47feb1176" + }, + { + "name": "flink-1.scip", + "sha256": "d400dac9055bfe3260da6a9d87eab5e2e8e912424ee483baec2eecb4c11714f0" + }, + { + "name": "kubernetes-1.scip", + "sha256": "c717d08ff69470b6984dcfba12e271282bd4132f3416b9e395d9c95fd9202b87" + }, + { + "name": "llvm-project-1.scip", + "sha256": "81110140699c76cd131842ae2f6d76484ecca49786930f6efe08d75e6678b4f7" + }, + { + "name": "materialize-1.scip", + "sha256": "fac6c26746569a67ec5c9675606881f3dd0dd69c6c397893bb2ad74629a4f0f5" + }, + { + "name": "postgres-1.scip", + "sha256": "9c7ee3d7d6dc6ab9c9e2e53375ce8dd8d91c37c1f408e09d5b0fe914b1e4f384" + }, + { + "name": "rust-1.scip", + "sha256": "1b59754bd055a8022cf6c803a0fb3c2412eecb93ff5c07070f2d18994d7aecbd" + }, + { + "name": "shopify-api-ruby-1.scip", + "sha256": "a4f6543a3ab798ebd4e0a75818d3de8a818a01af68d12aa1e8d210af66736f44" + }, + { + "name": "typescript-1.scip", + "sha256": "0132ed92a82f0a41cf4378582538139917e6100f3cf5095c8a1168e634c4041f" + } + ] +} diff --git a/docs/scip.md b/docs/scip.md index 5c603fc8..f2913b7c 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -3,61 +3,72 @@ # Semantic Code Intelligence Protocol (SCIP) reference + ### Descriptor -| Name | Type | Description | -| ----------------- | ------ | ----------- | -| **name** | string | -| **disambiguator** | string | -| **suffix** | Suffix | + + +| Name | Type | Description | +| ---- | ---- | ----------- | +| **name** | string | +| **disambiguator** | string | +| **suffix** | Suffix | NOTE: If you add new fields here, make sure to update the prepareSlot() function responsible for parsing symbols. + + #### Suffix -| Number | Name | Description | -| ------ | ----------------- | -------------------------------------------- | -| 0 | UnspecifiedSuffix | -| 1 | Namespace | Unit of code abstraction and/or namespacing. | -| 1 | Package | Use Namespace instead. | -| 2 | Type | -| 3 | Term | -| 4 | Method | -| 5 | TypeParameter | -| 6 | Parameter | -| 7 | Meta | Can be used for any purpose. | -| 8 | Local | -| 9 | Macro | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedSuffix | +| 1 | Namespace | Unit of code abstraction and/or namespacing. +| 1 | Package | Use Namespace instead. +| 2 | Type | +| 3 | Term | +| 4 | Method | +| 5 | TypeParameter | +| 6 | Parameter | +| 7 | Meta | Can be used for any purpose. +| 8 | Local | +| 9 | Macro | Additional notes on **Namespace**: Unit of code abstraction and/or namespacing. NOTE: This corresponds to a package in Go and JVM languages. - ### Diagnostic Represents a diagnostic, such as a compiler error or warning, which should be reported for a document. -| Name | Type | Description | -| ----------------- | ------------- | ------------------------------------------------------------------------------------------------------------- | -| **severity** | Severity | Should this diagnostic be reported as an error, warning, info, or hint? | -| **code** | string | (optional) Code of this diagnostic, which might appear in the user interface. | -| **message** | string | Message of this diagnostic. | -| **source** | string | (optional) Human-readable string describing the source of this diagnostic, e.g. 'typescript' or 'super lint'. | -| repeated **tags** | DiagnosticTag | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **severity** | Severity | Should this diagnostic be reported as an error, warning, info, or hint? +| **code** | string | (optional) Code of this diagnostic, which might appear in the user interface. +| **message** | string | Message of this diagnostic. +| **source** | string | (optional) Human-readable string describing the source of this diagnostic, e.g. 'typescript' or 'super lint'. +| repeated **tags** | DiagnosticTag | + + + + ### Document Document defines the metadata about a source file on disk. -| Name | Type | Description | -| ------------------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **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 language, 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. | -| **text** | string | (optional) Text contents of the this document. Indexers are not expected to include the text by default. It's preferrable that clients read the text contents from the file system by resolving the absolute path from joining `Index.metadata.project_root` and `Document.relative_path`. This field was introduced to support `SymbolInformation.signature_documentation`, but it can be used for other purposes as well, for example testing or when working with virtual/in-memory documents. | -| **position_encoding** | PositionEncoding | Specifies the encoding used for source ranges in this Document. | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **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 language, 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. +| **text** | string | (optional) Text contents of the this document. Indexers are not expected to include the text by default. It's preferrable that clients read the text contents from the file system by resolving the absolute path from joining `Index.metadata.project_root` and `Document.relative_path`. This field was introduced to support `SymbolInformation.signature_documentation`, but it can be used for other purposes as well, for example testing or when working with virtual/in-memory documents. +| **position_encoding** | PositionEncoding | Specifies the encoding used for source ranges in this Document. + Additional notes on **relative_path**: @@ -71,6 +82,8 @@ 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. @@ -79,13 +92,14 @@ 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). + + Additional notes on **position_encoding**: Specifies the encoding used for source ranges in this Document. Usually, this will match the type used to index the string type in the indexer's implementation language in O(1) time. - - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, use UTF16CodeUnitOffsetFromLineStart. - For an indexer implemented in Python, @@ -102,11 +116,13 @@ value at a time. To permit streaming consumption of an Index payload, the `metadata` field must appear at the start of the stream and must only appear once in the stream. Other field values may appear in any order. -| Name | Type | Description | -| ----------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **metadata** | Metadata | Metadata about this index. | -| repeated **documents** | Document | Documents that belong to this index. | -| repeated **external_symbols** | SymbolInformation | (optional) Symbols that are referenced from this index but are defined in an external package (a separate `Index` message). Leave this field empty if you assume the external package will get indexed separately. If the external package won't get indexed for some reason then you can use this field to provide hover documentation for those external symbols. | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **metadata** | Metadata | Metadata about this index. +| repeated **documents** | Document | Documents that belong to this index. +| repeated **external_symbols** | SymbolInformation | (optional) Symbols that are referenced from this index but are defined in an external package (a separate `Index` message). Leave this field empty if you assume the external package will get indexed separately. If the external package won't get indexed for some reason then you can use this field to provide hover documentation for those external symbols. + + Additional notes on **external_symbols**: @@ -121,12 +137,17 @@ function in `IndexVisitor` and update `ParseStreaming`. ### Metadata -| Name | Type | Description | -| -------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **version** | ProtocolVersion | Which version of this protocol was used to generate this index? | -| **tool_info** | ToolInfo | Information about the tool that produced this index. | -| **project_root** | string | URI-encoded absolute path to the root directory of this index. All documents in this index must appear in a subdirectory of this root directory. | -| **text_document_encoding** | TextEncoding | Text encoding of the source files on disk that are referenced from `Document.relative_path`. This value is unrelated to the `Document.text` field, which is a Protobuf string and hence must be UTF-8 encoded. | + + +| Name | Type | Description | +| ---- | ---- | ----------- | +| **version** | ProtocolVersion | Which version of this protocol was used to generate this index? +| **tool_info** | ToolInfo | Information about the tool that produced this index. +| **project_root** | string | URI-encoded absolute path to the root directory of this index. All documents in this index must appear in a subdirectory of this root directory. +| **text_document_encoding** | TextEncoding | Text encoding of the source files on disk that are referenced from `Document.relative_path`. This value is unrelated to the `Document.text` field, which is a Protobuf string and hence must be UTF-8 encoded. + + + ### Occurrence @@ -136,15 +157,15 @@ information. If possible, indexers should try to bundle logically related information across occurrences into a single occurrence to reduce payload sizes. -| Name | Type | Description | -| ----------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| repeated **range** | int32 | Half-open [start, end) range of this occurrence. Must be exactly three or four elements: | -| **symbol** | string | (optional) The symbol that appears at this position. See `SymbolInformation.symbol` for how to format symbols as strings. | -| **symbol_roles** | int32 | (optional) Bitset containing `SymbolRole`s in this occurrence. See `SymbolRole`'s documentation for how to read and write this field. | -| repeated **override_documentation** | string | (optional) CommonMark-formatted documentation for this specific range. If empty, the `Symbol.documentation` field is used instead. One example where this field might be useful is when the symbol represents a generic function (with abstract type parameters such as `List`) and at this occurrence we know the exact values (such as `List`). | -| **syntax_kind** | SyntaxKind | (optional) What syntax highlighting class should be used for this range? | -| repeated **diagnostics** | Diagnostic | (optional) Diagnostics that have been reported for this specific range. | -| repeated **enclosing_range** | int32 | (optional) Using the same encoding as the sibling `range` field, half-open source range of the nearest non-trivial enclosing AST node. This range must enclose the `range` field. Example applications that make use of the enclosing_range field: | +| Name | Type | Description | +| ---- | ---- | ----------- | +| repeated **range** | int32 | Half-open [start, end) range of this occurrence. Must be exactly three or four elements: +| **symbol** | string | (optional) The symbol that appears at this position. See `SymbolInformation.symbol` for how to format symbols as strings. +| **symbol_roles** | int32 | (optional) Bitset containing `SymbolRole`s in this occurrence. See `SymbolRole`'s documentation for how to read and write this field. +| repeated **override_documentation** | string | (optional) CommonMark-formatted documentation for this specific range. If empty, the `Symbol.documentation` field is used instead. One example where this field might be useful is when the symbol represents a generic function (with abstract type parameters such as `List`) and at this occurrence we know the exact values (such as `List`). +| **syntax_kind** | SyntaxKind | (optional) What syntax highlighting class should be used for this range? +| repeated **diagnostics** | Diagnostic | (optional) Diagnostics that have been reported for this specific range. +| repeated **enclosing_range** | int32 | (optional) Using the same encoding as the sibling `range` field, half-open source range of the nearest non-trivial enclosing AST node. This range must enclose the `range` field. Example applications that make use of the enclosing_range field: Additional notes on **range**: @@ -172,6 +193,9 @@ instead. The `repeated int32` encoding is admittedly more embarrassing to work with in some programming languages but we hope the performance improvements make up for it. + + + Additional notes on **override_documentation**: (optional) CommonMark-formatted documentation for this specific range. If @@ -183,6 +207,9 @@ occurrence we know the exact values (such as `List`). This field can also be used for dynamically or gradually typed languages, which commonly allow for type-changing assignment. + + + Additional notes on **enclosing_range**: (optional) Using the same encoding as the sibling `range` field, half-open @@ -201,7 +228,6 @@ enclosing_range field: For definition occurrences, the enclosing range should indicate the start/end bounds of the entire definition AST node, including documentation. - ``` const n = 3 ^ range @@ -230,7 +256,6 @@ def factorial(n): | For reference occurrences, the enclosing range should indicate the start/end bounds of the parent expression. - ``` const a = a.b ^ range @@ -246,21 +271,29 @@ Unit of packaging and distribution. NOTE: This corresponds to a module in Go and JVM languages. -| Name | Type | Description | -| ----------- | ------ | ----------- | -| **manager** | string | -| **name** | string | -| **version** | string | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **manager** | string | +| **name** | string | +| **version** | string | + + ### Relationship -| Name | Type | Description | -| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **symbol** | string | -| **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#, relationships = [{symbol: "Animal#", is_implementation: true}] public sound(): string { return "woof" } ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] } 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 `is_reference` but for "Find implementations". It's common for `is_implementation` and `is_reference` to both be true but it's not always the case. In the TypeScript example above, observe that `Dog#` has an `is_implementation` relationship with `"Animal#"` but not `is_reference`. This is because "Find references" on the "Animal#" symbol should not return "Dog#". We only want "Dog#" to return as a result for "Find implementations" on the "Animal#" 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. | + + +| Name | Type | Description | +| ---- | ---- | ----------- | +| **symbol** | string | +| **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#, relationships = [{symbol: "Animal#", is_implementation: true}] public sound(): string { return "woof" } ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] } 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 `is_reference` but for "Find implementations". It's common for `is_implementation` and `is_reference` to both be true but it's not always the case. In the TypeScript example above, observe that `Dog#` has an `is_implementation` relationship with `"Animal#"` but not `is_reference`. This is because "Find references" on the "Animal#" symbol should not return "Dog#". We only want "Dog#" to return as a result for "Find implementations" on the "Animal#" 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**: @@ -291,7 +324,6 @@ the docstring. Symbol has a standardized string representation, which can be used interchangeably with `Symbol`. The syntax for Symbol is the following: - ``` # ()+ stands for one or more repetitions of # ()? stands for zero or one occurrence of @@ -329,26 +361,32 @@ the file and the node corresponding to the symbol. Local symbols MUST only be used for entities which are local to a Document, and cannot be accessed from outside the Document. -| Name | Type | Description | -| ------------------------ | ---------- | ----------- | -| **scheme** | string | -| **package** | Package | -| repeated **descriptors** | Descriptor | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **scheme** | string | +| **package** | Package | +| repeated **descriptors** | Descriptor | + + ### SymbolInformation SymbolInformation defines metadata about a symbol, such as the symbol's docstring or what package it's defined it. -| Name | Type | Description | -| --------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **symbol** | string | Identifier of this symbol, which can be referenced from `Occurence.symbol`. The string must be formatted according to the grammar in `Symbol`. | -| repeated **documentation** | string | (optional, but strongly recommended) The markdown-formatted documentation for this symbol. Use `SymbolInformation.signature_documentation` to document the method/class/type signature of this symbol. Due to historical reasons, indexers may include signature documentation in this field by rendering markdown code blocks. New indexers should only include non-code documentation in this field, for example docstrings. | -| repeated **relationships** | Relationship | (optional) Relationships to other symbols (e.g., implements, type definition). | -| **kind** | Kind | The kind of this symbol. Use this field instead of `SymbolDescriptor.Suffix` to determine whether something is, for example, a class or a method. | -| **display_name** | string | (optional) The name of this symbol as it should be displayed to the user. For example, the symbol "com/example/MyClass#myMethod(+1)." should have the display name "myMethod". The `symbol` field is not a reliable source of the display name for several reasons: | -| **signature_documentation** | Document | (optional) The signature of this symbol as it's displayed in API documentation or in hover tooltips. For example, a Java method that adds two numbers this would have `Document.language = "java"` and `Document.text = "void add(int a, int b)". The `language`and`text`fields are required while other fields such as`Documentation.occurrences` can be optionally included to support hyperlinking referenced symbols in the signature. | -| **enclosing_symbol** | string | (optional) The enclosing symbol if this is a local symbol. For non-local symbols, the enclosing symbol should be parsed from the `symbol` field using the `Descriptor` grammar. | +| Name | Type | Description | +| ---- | ---- | ----------- | +| **symbol** | string | Identifier of this symbol, which can be referenced from `Occurence.symbol`. The string must be formatted according to the grammar in `Symbol`. +| repeated **documentation** | string | (optional, but strongly recommended) The markdown-formatted documentation for this symbol. Use `SymbolInformation.signature_documentation` to document the method/class/type signature of this symbol. Due to historical reasons, indexers may include signature documentation in this field by rendering markdown code blocks. New indexers should only include non-code documentation in this field, for example docstrings. +| repeated **relationships** | Relationship | (optional) Relationships to other symbols (e.g., implements, type definition). +| **kind** | Kind | The kind of this symbol. Use this field instead of `SymbolDescriptor.Suffix` to determine whether something is, for example, a class or a method. +| **display_name** | string | (optional) The name of this symbol as it should be displayed to the user. For example, the symbol "com/example/MyClass#myMethod(+1)." should have the display name "myMethod". The `symbol` field is not a reliable source of the display name for several reasons: +| **signature_documentation** | Document | (optional) The signature of this symbol as it's displayed in API documentation or in hover tooltips. For example, a Java method that adds two numbers this would have `Document.language = "java"` and `Document.text = "void add(int a, int b)". The `language` and `text` fields are required while other fields such as `Documentation.occurrences` can be optionally included to support hyperlinking referenced symbols in the signature. +| **enclosing_symbol** | string | (optional) The enclosing symbol if this is a local symbol. For non-local symbols, the enclosing symbol should be parsed from the `symbol` field using the `Descriptor` grammar. + + + + Additional notes on **display_name**: @@ -362,9 +400,11 @@ the display name for several reasons: - The symbol may encode names with special characters that should not be displayed to the user. + + Additional notes on **enclosing_symbol**: -(optional) The enclosing symbol if this is a local symbol. For non-local +(optional) The enclosing symbol if this is a local symbol. For non-local symbols, the enclosing symbol should be parsed from the `symbol` field using the `Descriptor` grammar. @@ -388,7 +428,6 @@ symbol. information about the symbol's meaning in the language. For example: - - A Java method would have the kind `Method` while a Go function would have the kind `Function`, even if the symbols for these use the same syntax for the descriptor `SymbolDescriptor.Suffix.Method`. @@ -397,113 +436,120 @@ For example: `SymbolDescriptor.Suffix.Type`. Since Kind is more fine-grained than Suffix: - - If two symbols have the same Kind, they should share the same Suffix. - If two symbols have different Suffixes, they should have different Kinds. -| Number | Name | Description | -| ------ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| 0 | UnspecifiedKind | -| 66 | AbstractMethod | A method which may or may not have a body. For Java, Kotlin etc. | -| 72 | Accessor | For Ruby's attr_accessor | -| 1 | Array | -| 2 | Assertion | For Alloy | -| 3 | AssociatedType | -| 4 | Attribute | For C++ | -| 5 | Axiom | For Lean | -| 6 | Boolean | -| 7 | Class | -| 8 | Constant | -| 9 | Constructor | -| 62 | Contract | For Solidity | -| 10 | DataFamily | For Haskell | -| 73 | Delegate | For C# and F# | -| 11 | Enum | -| 12 | EnumMember | -| 63 | Error | -| 13 | Event | -| 84 | Extension | For Dart | -| 14 | Fact | For Alloy | -| 15 | Field | -| 16 | File | -| 17 | Function | -| 18 | Getter | For 'get' in Swift, 'attr_reader' in Ruby | -| 19 | Grammar | For Raku | -| 20 | Instance | For Purescript and Lean | -| 21 | Interface | -| 22 | Key | -| 23 | Lang | For Racket | -| 24 | Lemma | For Lean | -| 64 | Library | For solidity | -| 25 | Macro | -| 26 | Method | -| 74 | MethodAlias | For Ruby | -| 27 | MethodReceiver | Analogous to 'ThisParameter' and 'SelfParameter', but for languages like Go where the receiver doesn't have a conventional name. | -| 67 | MethodSpecification | Analogous to 'AbstractMethod', for Go. | -| 28 | Message | For Protobuf | -| 85 | Mixin | For Dart | -| 65 | Modifier | For Solidity | -| 29 | Module | -| 30 | Namespace | -| 31 | Null | -| 32 | Number | -| 33 | Object | -| 34 | Operator | -| 35 | Package | -| 36 | PackageObject | -| 37 | Parameter | -| 38 | ParameterLabel | -| 39 | Pattern | For Haskell's PatternSynonyms | -| 40 | Predicate | For Alloy | -| 41 | Property | -| 42 | Protocol | Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C | -| 68 | ProtocolMethod | Analogous to 'AbstractMethod', for Swift and Objective-C. | -| 69 | PureVirtualMethod | Analogous to 'AbstractMethod', for C++. | -| 43 | Quasiquoter | For Haskell | -| 44 | SelfParameter | 'self' in Python, Rust, Swift etc. | -| 45 | Setter | For 'set' in Swift, 'attr_writer' in Ruby | -| 46 | Signature | For Alloy, analogous to 'Struct'. | -| 75 | SingletonClass | For Ruby | -| 76 | SingletonMethod | Analogous to 'StaticMethod', for Ruby. | -| 77 | StaticDataMember | Analogous to 'StaticField', for C++ | -| 78 | StaticEvent | For C# | -| 79 | StaticField | For C# | -| 80 | StaticMethod | For Java, C#, C++ etc. | -| 81 | StaticProperty | For C#, TypeScript etc. | -| 82 | StaticVariable | For C, C++ | -| 48 | String | -| 49 | Struct | -| 47 | Subscript | For Swift | -| 50 | Tactic | For Lean | -| 51 | Theorem | For Lean | -| 52 | ThisParameter | Method receiver for languages 'this' in JavaScript, C++, Java etc. | -| 53 | Trait | Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc. | -| 70 | TraitMethod | Analogous to 'AbstractMethod', for Rust, Scala etc. | -| 54 | Type | Data type definition for languages like OCaml which use `type` rather than separate keywords like `struct` and `enum`. | -| 55 | TypeAlias | -| 56 | TypeClass | Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc. | -| 71 | TypeClassMethod | Analogous to 'AbstractMethod', for Haskell, Purescript etc. | -| 57 | TypeFamily | For Haskell | -| 58 | TypeParameter | -| 59 | Union | For C, C++, Capn Proto | -| 60 | Value | -| 61 | Variable | Next = 86; Feel free to open a PR proposing new language-specific kinds. | - +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedKind | +| 66 | AbstractMethod | A method which may or may not have a body. For Java, Kotlin etc. +| 72 | Accessor | For Ruby's attr_accessor +| 1 | Array | +| 2 | Assertion | For Alloy +| 3 | AssociatedType | +| 4 | Attribute | For C++ +| 5 | Axiom | For Lean +| 6 | Boolean | +| 7 | Class | +| 8 | Constant | +| 9 | Constructor | +| 62 | Contract | For Solidity +| 10 | DataFamily | For Haskell +| 73 | Delegate | For C# and F# +| 11 | Enum | +| 12 | EnumMember | +| 63 | Error | +| 13 | Event | +| 84 | Extension | For Dart +| 14 | Fact | For Alloy +| 15 | Field | +| 16 | File | +| 17 | Function | +| 18 | Getter | For 'get' in Swift, 'attr_reader' in Ruby +| 19 | Grammar | For Raku +| 20 | Instance | For Purescript and Lean +| 21 | Interface | +| 22 | Key | +| 23 | Lang | For Racket +| 24 | Lemma | For Lean +| 64 | Library | For solidity +| 25 | Macro | +| 26 | Method | +| 74 | MethodAlias | For Ruby +| 27 | MethodReceiver | Analogous to 'ThisParameter' and 'SelfParameter', but for languages like Go where the receiver doesn't have a conventional name. +| 67 | MethodSpecification | Analogous to 'AbstractMethod', for Go. +| 28 | Message | For Protobuf +| 85 | Mixin | For Dart +| 65 | Modifier | For Solidity +| 29 | Module | +| 30 | Namespace | +| 31 | Null | +| 32 | Number | +| 33 | Object | +| 34 | Operator | +| 35 | Package | +| 36 | PackageObject | +| 37 | Parameter | +| 38 | ParameterLabel | +| 39 | Pattern | For Haskell's PatternSynonyms +| 40 | Predicate | For Alloy +| 41 | Property | +| 42 | Protocol | Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C +| 68 | ProtocolMethod | Analogous to 'AbstractMethod', for Swift and Objective-C. +| 69 | PureVirtualMethod | Analogous to 'AbstractMethod', for C++. +| 43 | Quasiquoter | For Haskell +| 44 | SelfParameter | 'self' in Python, Rust, Swift etc. +| 45 | Setter | For 'set' in Swift, 'attr_writer' in Ruby +| 46 | Signature | For Alloy, analogous to 'Struct'. +| 75 | SingletonClass | For Ruby +| 76 | SingletonMethod | Analogous to 'StaticMethod', for Ruby. +| 77 | StaticDataMember | Analogous to 'StaticField', for C++ +| 78 | StaticEvent | For C# +| 79 | StaticField | For C# +| 80 | StaticMethod | For Java, C#, C++ etc. +| 81 | StaticProperty | For C#, TypeScript etc. +| 82 | StaticVariable | For C, C++ +| 48 | String | +| 49 | Struct | +| 47 | Subscript | For Swift +| 50 | Tactic | For Lean +| 51 | Theorem | For Lean +| 52 | ThisParameter | Method receiver for languages 'this' in JavaScript, C++, Java etc. +| 53 | Trait | Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc. +| 70 | TraitMethod | Analogous to 'AbstractMethod', for Rust, Scala etc. +| 54 | Type | Data type definition for languages like OCaml which use `type` rather than separate keywords like `struct` and `enum`. +| 55 | TypeAlias | +| 56 | TypeClass | Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc. +| 71 | TypeClassMethod | Analogous to 'AbstractMethod', for Haskell, Purescript etc. +| 57 | TypeFamily | For Haskell +| 58 | TypeParameter | +| 59 | Union | For C, C++, Capn Proto +| 60 | Value | +| 61 | Variable | Next = 86; Feel free to open a PR proposing new language-specific kinds. ### ToolInfo -| Name | Type | Description | -| ---------------------- | ------ | ------------------------------------------------------------- | -| **name** | string | Name of the indexer that produced this index. | -| **version** | string | Version of the indexer that produced this index. | -| repeated **arguments** | string | Command-line arguments that were used to invoke this indexer. | + + +| Name | Type | Description | +| ---- | ---- | ----------- | +| **name** | string | Name of the indexer that produced this index. +| **version** | string | Version of the indexer that produced this index. +| repeated **arguments** | string | Command-line arguments that were used to invoke this indexer. + + + + ### DiagnosticTag -| Number | Name | Description | -| ------ | ------------------------ | ----------- | -| 0 | UnspecifiedDiagnosticTag | -| 1 | Unnecessary | -| 2 | Deprecated | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedDiagnosticTag | +| 1 | Unnecessary | +| 2 | Deprecated | + ### Language @@ -514,129 +560,130 @@ multiple string representations. For example, the C++ language uses the name "CPP" in this enum and other names such as "cpp" are incompatible. Feel free to send a pull-request to add missing programming languages. -| Number | Name | Description | -| ------ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | UnspecifiedLanguage | -| 60 | ABAP | -| 96 | Apex | -| 49 | APL | -| 39 | Ada | -| 45 | Agda | -| 86 | AsciiDoc | -| 58 | Assembly | -| 66 | Awk | -| 68 | Bat | -| 81 | BibTeX | -| 34 | C | -| 59 | COBOL | -| 35 | CPP | C++ (the name "CPP" was chosen for consistency with LSP) | -| 26 | CSS | -| 1 | CSharp | -| 8 | Clojure | -| 21 | Coffeescript | -| 9 | CommonLisp | -| 47 | Coq | -| 97 | CUDA | -| 3 | Dart | -| 57 | Delphi | -| 88 | Diff | -| 80 | Dockerfile | -| 50 | Dyalog | -| 17 | Elixir | -| 18 | Erlang | -| 42 | FSharp | -| 65 | Fish | -| 24 | Flow | -| 56 | Fortran | -| 91 | Git_Commit | -| 89 | Git_Config | -| 92 | Git_Rebase | -| 33 | Go | -| 98 | GraphQL | -| 7 | Groovy | -| 30 | HTML | -| 20 | Hack | -| 90 | Handlebars | -| 44 | Haskell | -| 46 | Idris | -| 72 | Ini | -| 51 | J | -| 75 | JSON | -| 6 | Java | -| 22 | JavaScript | -| 93 | JavaScriptReact | -| 76 | Jsonnet | -| 55 | Julia | -| 109 | Justfile | -| 4 | Kotlin | -| 83 | LaTeX | -| 48 | Lean | -| 27 | Less | -| 12 | Lua | -| 108 | Luau | -| 79 | Makefile | -| 84 | Markdown | -| 52 | Matlab | -| 110 | Nickel | https://nickel-lang.org/ | -| 77 | Nix | -| 41 | OCaml | -| 36 | Objective_C | -| 37 | Objective_CPP | -| 99 | Pascal | -| 19 | PHP | -| 70 | PLSQL | -| 13 | Perl | -| 67 | PowerShell | -| 71 | Prolog | -| 100 | Protobuf | -| 15 | Python | -| 54 | R | -| 11 | Racket | -| 14 | Raku | -| 62 | Razor | -| 102 | Repro | Internal language for testing SCIP | -| 85 | ReST | -| 16 | Ruby | -| 40 | Rust | -| 61 | SAS | -| 29 | SCSS | -| 43 | SML | -| 69 | SQL | -| 28 | Sass | -| 5 | Scala | -| 10 | Scheme | -| 64 | ShellScript | Bash | -| 78 | Skylark | -| 107 | Slang | -| 95 | Solidity | -| 106 | Svelte | -| 2 | Swift | -| 101 | Tcl | -| 73 | TOML | -| 82 | TeX | -| 103 | Thrift | -| 23 | TypeScript | -| 94 | TypeScriptReact | -| 104 | Verilog | -| 105 | VHDL | -| 63 | VisualBasic | -| 25 | Vue | -| 53 | Wolfram | -| 31 | XML | -| 32 | XSL | -| 74 | YAML | -| 38 | Zig | NextLanguage = 111; Steps add a new language: 1. Copy-paste the "NextLanguage = N" line above 2. Increment "NextLanguage = N" to "NextLanguage = N+1" 3. Replace "NextLanguage = N" with the name of the new language. 4. Move the new language to the correct line above using alphabetical order 5. (optional) Add a brief comment behind the language if the name is not self-explanatory | +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedLanguage | +| 60 | ABAP | +| 96 | Apex | +| 49 | APL | +| 39 | Ada | +| 45 | Agda | +| 86 | AsciiDoc | +| 58 | Assembly | +| 66 | Awk | +| 68 | Bat | +| 81 | BibTeX | +| 34 | C | +| 59 | COBOL | +| 35 | CPP | C++ (the name "CPP" was chosen for consistency with LSP) +| 26 | CSS | +| 1 | CSharp | +| 8 | Clojure | +| 21 | Coffeescript | +| 9 | CommonLisp | +| 47 | Coq | +| 97 | CUDA | +| 3 | Dart | +| 57 | Delphi | +| 88 | Diff | +| 80 | Dockerfile | +| 50 | Dyalog | +| 17 | Elixir | +| 18 | Erlang | +| 42 | FSharp | +| 65 | Fish | +| 24 | Flow | +| 56 | Fortran | +| 91 | Git_Commit | +| 89 | Git_Config | +| 92 | Git_Rebase | +| 33 | Go | +| 98 | GraphQL | +| 7 | Groovy | +| 30 | HTML | +| 20 | Hack | +| 90 | Handlebars | +| 44 | Haskell | +| 46 | Idris | +| 72 | Ini | +| 51 | J | +| 75 | JSON | +| 6 | Java | +| 22 | JavaScript | +| 93 | JavaScriptReact | +| 76 | Jsonnet | +| 55 | Julia | +| 109 | Justfile | +| 4 | Kotlin | +| 83 | LaTeX | +| 48 | Lean | +| 27 | Less | +| 12 | Lua | +| 108 | Luau | +| 79 | Makefile | +| 84 | Markdown | +| 52 | Matlab | +| 110 | Nickel | https://nickel-lang.org/ +| 77 | Nix | +| 41 | OCaml | +| 36 | Objective_C | +| 37 | Objective_CPP | +| 99 | Pascal | +| 19 | PHP | +| 70 | PLSQL | +| 13 | Perl | +| 67 | PowerShell | +| 71 | Prolog | +| 100 | Protobuf | +| 15 | Python | +| 54 | R | +| 11 | Racket | +| 14 | Raku | +| 62 | Razor | +| 102 | Repro | Internal language for testing SCIP +| 85 | ReST | +| 16 | Ruby | +| 40 | Rust | +| 61 | SAS | +| 29 | SCSS | +| 43 | SML | +| 69 | SQL | +| 28 | Sass | +| 5 | Scala | +| 10 | Scheme | +| 64 | ShellScript | Bash +| 78 | Skylark | +| 107 | Slang | +| 95 | Solidity | +| 106 | Svelte | +| 2 | Swift | +| 101 | Tcl | +| 73 | TOML | +| 82 | TeX | +| 103 | Thrift | +| 23 | TypeScript | +| 94 | TypeScriptReact | +| 104 | Verilog | +| 105 | VHDL | +| 63 | VisualBasic | +| 25 | Vue | +| 53 | Wolfram | +| 31 | XML | +| 32 | XSL | +| 74 | YAML | +| 38 | Zig | NextLanguage = 111; Steps add a new language: 1. Copy-paste the "NextLanguage = N" line above 2. Increment "NextLanguage = N" to "NextLanguage = N+1" 3. Replace "NextLanguage = N" with the name of the new language. 4. Move the new language to the correct line above using alphabetical order 5. (optional) Add a brief comment behind the language if the name is not self-explanatory + ### PositionEncoding Encoding used to interpret the 'character' value in source ranges. -| Number | Name | Description | -| ------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| 0 | UnspecifiedPositionEncoding | Default value. This value should not be used by new SCIP indexers so that a consumer can process the SCIP index without ambiguity. | -| 1 | UTF8CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-8 code units (i.e. bytes). | -| 2 | UTF16CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-16 code units (each is 2 bytes). | -| 3 | UTF32CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-32 code units (each is 4 bytes). | +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedPositionEncoding | Default value. This value should not be used by new SCIP indexers so that a consumer can process the SCIP index without ambiguity. +| 1 | UTF8CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-8 code units (i.e. bytes). +| 2 | UTF16CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-16 code units (each is 2 bytes). +| 3 | UTF32CodeUnitOffsetFromLineStart | The 'character' value is interpreted as an offset in terms of UTF-32 code units (each is 4 bytes). Additional notes on **UTF8CodeUnitOffsetFromLineStart**: @@ -664,21 +711,28 @@ of UTF-32 code units (each is 4 bytes). Example: For the string "🚀 Woo", the UTF-32 code units are ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2. + ### ProtocolVersion -| Number | Name | Description | -| ------ | -------------------------- | ----------- | -| 0 | UnspecifiedProtocolVersion | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedProtocolVersion | + ### Severity -| Number | Name | Description | -| ------ | ------------------- | ----------- | -| 0 | UnspecifiedSeverity | -| 1 | Error | -| 2 | Warning | -| 3 | Information | -| 4 | Hint | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedSeverity | +| 1 | Error | +| 2 | Warning | +| 3 | Information | +| 4 | Hint | + ### SymbolRole @@ -688,16 +742,16 @@ to determine if the `Import` role is set, test whether the second bit of the enum value is defined. In pseudocode, this can be implemented with the logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`. -| Number | Name | Description | -| ------ | --------------------- | ----------------------------------------------------------------------------------------------------- | -| 0 | UnspecifiedSymbolRole | This case is not meant to be used; it only exists to avoid an error from the Protobuf code generator. | -| 1 | Definition | Is the symbol defined here? If not, then this is a symbol reference. | -| 2 | Import | Is the symbol imported here? | -| 4 | WriteAccess | Is the symbol written here? | -| 8 | ReadAccess | Is the symbol read here? | -| 16 | Generated | Is the symbol in generated code? | -| 32 | Test | Is the symbol in test code? | -| 64 | ForwardDefinition | Is this a signature for a symbol that is defined elsewhere? | +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedSymbolRole | This case is not meant to be used; it only exists to avoid an error from the Protobuf code generator. +| 1 | Definition | Is the symbol defined here? If not, then this is a symbol reference. +| 2 | Import | Is the symbol imported here? +| 4 | WriteAccess | Is the symbol written here? +| 8 | ReadAccess | Is the symbol read here? +| 16 | Generated | Is the symbol in generated code? +| 32 | Test | Is the symbol in test code? +| 64 | ForwardDefinition | Is this a signature for a symbol that is defined elsewhere? Additional notes on **ForwardDefinition**: @@ -707,49 +761,52 @@ Applies to forward declarations for languages like C, C++ and Objective-C, as well as `val` declarations in interface files in languages like SML and OCaml. + ### SyntaxKind -| Number | Name | Description | -| ------ | ---------------------------- | ------------------------------------------------------------------------------- | ------ | -| 0 | UnspecifiedSyntaxKind | -| 1 | Comment | Comment, including comment markers and text | -| 2 | PunctuationDelimiter | `;` `.` `,` | -| 3 | PunctuationBracket | (), {}, [] when used syntactically | -| 4 | Keyword | `if`, `else`, `return`, `class`, etc. | -| 4 | IdentifierKeyword | -| 5 | IdentifierOperator | `+`, `*`, etc. | -| 6 | Identifier | non-specific catch-all for any identifier not better described elsewhere | -| 7 | IdentifierBuiltin | Identifiers builtin to the language: `min`, `print` in Python. | -| 8 | IdentifierNull | Identifiers representing `null`-like values: `None` in Python, `nil` in Go. | -| 9 | IdentifierConstant | `xyz` in `const xyz = "hello"` | -| 10 | IdentifierMutableGlobal | `var X = "hello"` in Go | -| 11 | IdentifierParameter | Parameter definition and references | -| 12 | IdentifierLocal | Identifiers for variable definitions and references within a local scope | -| 13 | IdentifierShadowed | Identifiers that shadow other identifiers in an outer scope | -| 14 | IdentifierNamespace | Identifier representing a unit of code abstraction and/or namespacing. | -| 14 | IdentifierModule | -| 15 | IdentifierFunction | Function references, including calls | -| 16 | IdentifierFunctionDefinition | Function definition only | -| 17 | IdentifierMacro | Macro references, including invocations | -| 18 | IdentifierMacroDefinition | Macro definition only | -| 19 | IdentifierType | non-builtin types | -| 20 | IdentifierBuiltinType | builtin types only, such as `str` for Python or `int` in Go | -| 21 | IdentifierAttribute | Python decorators, c-like **attribute** | -| 22 | RegexEscape | `\b` | -| 23 | RegexRepeated | `*`, `+` | -| 24 | RegexWildcard | `.` | -| 25 | RegexDelimiter | `(`, `)`, `[`, `]` | -| 26 | RegexJoin | ` | `, `-` | -| 27 | StringLiteral | Literal strings: "Hello, world!" | -| 28 | StringLiteralEscape | non-regex escapes: "\t", "\n" | -| 29 | StringLiteralSpecial | datetimes within strings, special words within a string, `{}` in format strings | -| 30 | StringLiteralKey | "key" in { "key": "value" }, useful for example in JSON | -| 31 | CharacterLiteral | 'c' or similar, in languages that differentiate strings and characters | -| 32 | NumericLiteral | Literal numbers, both floats and integers | -| 33 | BooleanLiteral | `true`, `false` | -| 34 | Tag | Used for XML-like tags | -| 35 | TagAttribute | Attribute name in XML-like tags | -| 36 | TagDelimiter | Delimiters for XML-like tags | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedSyntaxKind | +| 1 | Comment | Comment, including comment markers and text +| 2 | PunctuationDelimiter | `;` `.` `,` +| 3 | PunctuationBracket | (), {}, [] when used syntactically +| 4 | Keyword | `if`, `else`, `return`, `class`, etc. +| 4 | IdentifierKeyword | +| 5 | IdentifierOperator | `+`, `*`, etc. +| 6 | Identifier | non-specific catch-all for any identifier not better described elsewhere +| 7 | IdentifierBuiltin | Identifiers builtin to the language: `min`, `print` in Python. +| 8 | IdentifierNull | Identifiers representing `null`-like values: `None` in Python, `nil` in Go. +| 9 | IdentifierConstant | `xyz` in `const xyz = "hello"` +| 10 | IdentifierMutableGlobal | `var X = "hello"` in Go +| 11 | IdentifierParameter | Parameter definition and references +| 12 | IdentifierLocal | Identifiers for variable definitions and references within a local scope +| 13 | IdentifierShadowed | Identifiers that shadow other identifiers in an outer scope +| 14 | IdentifierNamespace | Identifier representing a unit of code abstraction and/or namespacing. +| 14 | IdentifierModule | +| 15 | IdentifierFunction | Function references, including calls +| 16 | IdentifierFunctionDefinition | Function definition only +| 17 | IdentifierMacro | Macro references, including invocations +| 18 | IdentifierMacroDefinition | Macro definition only +| 19 | IdentifierType | non-builtin types +| 20 | IdentifierBuiltinType | builtin types only, such as `str` for Python or `int` in Go +| 21 | IdentifierAttribute | Python decorators, c-like __attribute__ +| 22 | RegexEscape | `\b` +| 23 | RegexRepeated | `*`, `+` +| 24 | RegexWildcard | `.` +| 25 | RegexDelimiter | `(`, `)`, `[`, `]` +| 26 | RegexJoin | `|`, `-` +| 27 | StringLiteral | Literal strings: "Hello, world!" +| 28 | StringLiteralEscape | non-regex escapes: "\t", "\n" +| 29 | StringLiteralSpecial | datetimes within strings, special words within a string, `{}` in format strings +| 30 | StringLiteralKey | "key" in { "key": "value" }, useful for example in JSON +| 31 | CharacterLiteral | 'c' or similar, in languages that differentiate strings and characters +| 32 | NumericLiteral | Literal numbers, both floats and integers +| 33 | BooleanLiteral | `true`, `false` +| 34 | Tag | Used for XML-like tags +| 35 | TagAttribute | Attribute name in XML-like tags +| 36 | TagDelimiter | Delimiters for XML-like tags Additional notes on **IdentifierNamespace**: @@ -758,10 +815,13 @@ Identifier representing a unit of code abstraction and/or namespacing. NOTE: This corresponds to a package in Go and JVM languages, and a module in languages like Python and JavaScript. + ### TextEncoding -| Number | Name | Description | -| ------ | ----------------------- | ----------- | -| 0 | UnspecifiedTextEncoding | -| 1 | UTF8 | -| 2 | UTF16 | + + +| Number | Name | Description | +| ------ | ---- | ----------- | +| 0 | UnspecifiedTextEncoding | +| 1 | UTF8 | +| 2 | UTF16 | diff --git a/go.mod b/go.mod index 37d14bb3..738b5f67 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/sourcegraph/scip -go 1.20 +go 1.22 require ( github.com/bufbuild/buf v1.25.0 @@ -12,10 +12,13 @@ require ( github.com/hexops/autogold/v2 v2.2.1 github.com/hexops/gotextdiff v1.0.3 github.com/hhatto/gocloc v0.4.2 + github.com/jedib0t/go-pretty/v6 v6.6.3 github.com/k0kubun/pp/v3 v3.1.0 github.com/montanaflynn/stats v0.7.1 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3 + github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a + github.com/sourcegraph/conc v0.3.0 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 @@ -73,6 +76,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -85,7 +89,8 @@ require ( github.com/pkg/profile v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pseudomuto/protokit v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/cors v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect @@ -107,8 +112,8 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.11.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.12.0 // indirect google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 4ff5a35f..b885c763 100644 --- a/go.sum +++ b/go.sum @@ -25,6 +25,7 @@ github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/bufbuild/buf v1.25.0 h1:HFxKrR8wFcZwrBInN50K/oJX/WOtPVq24rHb/ArjfBA= github.com/bufbuild/buf v1.25.0/go.mod h1:GCKZ5bAP6Ht4MF7KcfaGVgBEXGumwAz2hXjjLVxx8ZU= github.com/bufbuild/connect-go v1.9.0 h1:JIgAeNuFpo+SUPfU19Yt5TcWlznsN5Bv10/gI/6Pjoc= @@ -77,6 +78,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -144,6 +146,7 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22 github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -232,8 +235,11 @@ github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0Gqw github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 h1:2uT3aivO7NVpUPGcQX7RbHijHMyWix/yCnIrCWc+5co= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= +github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM= +github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -292,6 +298,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= @@ -351,12 +359,15 @@ github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqX github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM= github.com/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -375,6 +386,10 @@ github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3 h1:WrsSqod9 github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3/go.mod h1:EiUuVMUfLQj8Sul+S8aKWJwQy7FRYnJCO2EWzf8F5hk= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a h1:j/CQ27s679M9wRGBRJYyXGrfkYuQA6VMnD7R08mHD9c= +github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a/go.mod h1:JG1sdvGTKWwe/oH3/3UKQ26vfcHIN//7fwEJhoqaBcM= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -440,12 +455,14 @@ go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxx go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= +go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= @@ -560,16 +577,18 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -583,6 +602,7 @@ golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -646,6 +666,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -666,6 +687,7 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= diff --git a/scip.proto b/scip.proto index 17d6e2a6..59a05b7c 100644 --- a/scip.proto +++ b/scip.proto @@ -224,6 +224,8 @@ message Descriptor { string name = 1; string disambiguator = 2; Suffix suffix = 3; + // NOTE: If you add new fields here, make sure to update the prepareSlot() + // function responsible for parsing symbols. } // SymbolInformation defines metadata about a symbol, such as the symbol's From d1f063d14b7ab1124785a951f8811f37656f4d45 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 06:46:31 +0000 Subject: [PATCH 14/25] chore(deps): update dependency prettier to ^3.4.2 (#294) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 97fbc7a6..99c9cae0 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,6 @@ ] }, "devDependencies": { - "prettier": "^3.4.1" + "prettier": "^3.4.2" } } diff --git a/yarn.lock b/yarn.lock index 65a10e31..39f92ec5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,10 +17,10 @@ nan@^2.22.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== -prettier@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.1.tgz#e211d451d6452db0a291672ca9154bc8c2579f7b" - integrity sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg== +prettier@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== protoc-gen-ts@0.8.6: version "0.8.6" From 87060a6c01254eacfdeb09d729620de0b3d6d11b Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Fri, 13 Dec 2024 20:05:40 +0530 Subject: [PATCH 15/25] fix: Propagate errors when creating repro SCIP index (#296) When trying to use repro with relationships, noticed that we would incorrectly set a bad symbol name instead of propagating the error in name resolution. --- cmd/scip/lint.go | 6 +++--- cmd/scip/tests/reprolang/bindings/go/repro/ast.go | 6 ++++-- cmd/scip/tests/reprolang/bindings/go/repro/indexer.go | 9 ++++++++- cmd/scip/tests/reprolang/bindings/go/repro/namer.go | 9 ++++++--- .../tests/snapshots/input/global-workspace/hello.repro | 1 + .../tests/snapshots/input/local-document/local2.repro | 4 ++-- .../snapshots/output/global-cross-repo/reference.repro | 2 +- .../tests/snapshots/output/global-workspace/hello.repro | 4 ++++ .../tests/snapshots/output/local-document/local2.repro | 8 +++++--- 9 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 cmd/scip/tests/snapshots/input/global-workspace/hello.repro create mode 100755 cmd/scip/tests/snapshots/output/global-workspace/hello.repro diff --git a/cmd/scip/lint.go b/cmd/scip/lint.go index 8c0a0ff0..05dee6cf 100644 --- a/cmd/scip/lint.go +++ b/cmd/scip/lint.go @@ -1,7 +1,7 @@ package main import ( - "errors" + stderrors "errors" "fmt" "sort" "strings" @@ -21,7 +21,7 @@ func lintCommand() cli.Command { Action: func(c *cli.Context) error { indexPath := c.Args().Get(0) if indexPath == "" { - return errors.New("missing argument for path to SCIP index") + return stderrors.New("missing argument for path to SCIP index") } return lintMain(indexPath) }, @@ -34,7 +34,7 @@ func lintMain(indexPath string) error { if err != nil { return err } - return errors.Join(lintMainPure(scipIndex).data...) + return stderrors.Join(lintMainPure(scipIndex).data...) } func lintMainPure(scipIndex *scip.Index) errorSet { diff --git a/cmd/scip/tests/reprolang/bindings/go/repro/ast.go b/cmd/scip/tests/reprolang/bindings/go/repro/ast.go index 372841fb..d77bb813 100644 --- a/cmd/scip/tests/reprolang/bindings/go/repro/ast.go +++ b/cmd/scip/tests/reprolang/bindings/go/repro/ast.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "github.com/cockroachdb/errors" sitter "github.com/smacker/go-tree-sitter" "github.com/sourcegraph/scip/bindings/go/scip" @@ -77,16 +78,17 @@ func NewRangePositionFromNode(node *sitter.Node) *scip.Range { } } -func (i *identifier) resolveSymbol(localScope *reproScope, context *reproContext) { +func (i *identifier) resolveSymbol(localScope *reproScope, context *reproContext) error { scope := context.globalScope if i.isLocalSymbol() { scope = localScope } symbol, ok := scope.names[i.value] if !ok { - symbol = "local ERROR_UNRESOLVED_SYMBOL" + return errors.Newf("could not resolve local symbol %q", i.value) } i.symbol = symbol + return nil } func (i *identifier) isLocalSymbol() bool { diff --git a/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go b/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go index 6fd8ea58..279fb56e 100644 --- a/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go +++ b/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go @@ -3,6 +3,7 @@ package repro import ( "context" + "github.com/cockroachdb/errors" "github.com/sourcegraph/scip/bindings/go/scip" ) @@ -69,8 +70,14 @@ func Index( } // Phase 3: resolve names for references + var allErrs error for _, file := range reproSources { - file.resolveReferences(ctx) + if err := file.resolveReferences(ctx); err != nil { + allErrs = errors.CombineErrors(allErrs, errors.Wrapf(err, "file %q", file.Source.AbsolutePath)) + } + } + if allErrs != nil { + return nil, allErrs } // Phase 4: emit SCIP diff --git a/cmd/scip/tests/reprolang/bindings/go/repro/namer.go b/cmd/scip/tests/reprolang/bindings/go/repro/namer.go index 6173ca8d..c466f371 100644 --- a/cmd/scip/tests/reprolang/bindings/go/repro/namer.go +++ b/cmd/scip/tests/reprolang/bindings/go/repro/namer.go @@ -3,6 +3,7 @@ package repro import ( "fmt" + "github.com/cockroachdb/errors" "github.com/sourcegraph/scip/bindings/go/scip" ) @@ -58,13 +59,14 @@ func (s *reproSourceFile) enterDefinitions(context *reproContext) { } // resolveReferences updates the .symbol field for all names of reference identifiers. -func (s *reproSourceFile) resolveReferences(context *reproContext) { +func (s *reproSourceFile) resolveReferences(context *reproContext) error { + var err error resolveIdents := func(rel relationships) { for _, ident := range rel.identifiers() { if ident == nil { continue } - ident.resolveSymbol(s.localScope, context) + err = errors.CombineErrors(err, ident.resolveSymbol(s.localScope, context)) } } for _, def := range s.definitions { @@ -74,8 +76,9 @@ func (s *reproSourceFile) resolveReferences(context *reproContext) { resolveIdents(rel.relations) } for _, ref := range s.references { - ref.name.resolveSymbol(s.localScope, context) + err = errors.CombineErrors(err, ref.name.resolveSymbol(s.localScope, context)) } + return err } // newGlobalSymbol returns an SCIP symbol for the given definition. diff --git a/cmd/scip/tests/snapshots/input/global-workspace/hello.repro b/cmd/scip/tests/snapshots/input/global-workspace/hello.repro new file mode 100644 index 00000000..846c831d --- /dev/null +++ b/cmd/scip/tests/snapshots/input/global-workspace/hello.repro @@ -0,0 +1 @@ +definition hello(). \ No newline at end of file diff --git a/cmd/scip/tests/snapshots/input/local-document/local2.repro b/cmd/scip/tests/snapshots/input/local-document/local2.repro index 19537a70..076a5f20 100644 --- a/cmd/scip/tests/snapshots/input/local-document/local2.repro +++ b/cmd/scip/tests/snapshots/input/local-document/local2.repro @@ -1,2 +1,2 @@ -reference localExample - +definition localExample +reference localExample \ No newline at end of file diff --git a/cmd/scip/tests/snapshots/output/global-cross-repo/reference.repro b/cmd/scip/tests/snapshots/output/global-cross-repo/reference.repro index a36de0fe..042bf987 100755 --- a/cmd/scip/tests/snapshots/output/global-cross-repo/reference.repro +++ b/cmd/scip/tests/snapshots/output/global-cross-repo/reference.repro @@ -1,6 +1,6 @@ # Reference a global symbol from another workspace. reference global global-workspace hello.repro/hello(). -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local ERROR_UNRESOLVED_SYMBOL +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference global-workspace hello.repro/hello(). reference global duplicates duplicate.repro/readFileSync. # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference duplicates duplicate.repro/readFileSync. diff --git a/cmd/scip/tests/snapshots/output/global-workspace/hello.repro b/cmd/scip/tests/snapshots/output/global-workspace/hello.repro new file mode 100755 index 00000000..f79a2591 --- /dev/null +++ b/cmd/scip/tests/snapshots/output/global-workspace/hello.repro @@ -0,0 +1,4 @@ + definition hello(). +# ^^^^^^^^ definition hello.repro/hello(). +# documentation +# > signature of hello(). diff --git a/cmd/scip/tests/snapshots/output/local-document/local2.repro b/cmd/scip/tests/snapshots/output/local-document/local2.repro index 0f4ed3c4..b7a32a32 100755 --- a/cmd/scip/tests/snapshots/output/local-document/local2.repro +++ b/cmd/scip/tests/snapshots/output/local-document/local2.repro @@ -1,4 +1,6 @@ + definition localExample +# ^^^^^^^^^^^^ definition local Example +# documentation +# > signature of localExample reference localExample -# ^^^^^^^^^^^^ reference local ERROR_UNRESOLVED_SYMBOL - - +# ^^^^^^^^^^^^ reference local Example From 23b18558409ef9bfee46e927e99b5c0314c92f31 Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Tue, 17 Dec 2024 15:22:54 +0530 Subject: [PATCH 16/25] chore: Fix protoc-gen-rs installation error (#298) I'm not 100% sure as to why --locked works given that there is no Cargo.lock either at the root of this repo or in the rust-protobuf repo, but it seems to fix the installation error where a dependency 'home v0.5.11' gets picked up which ends up requiring Rust 1.81+ --- dev/proto-generate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/proto-generate.sh b/dev/proto-generate.sh index bf6ee05f..3791a4dd 100755 --- a/dev/proto-generate.sh +++ b/dev/proto-generate.sh @@ -12,7 +12,7 @@ PROTOC_GEN_RUST_VERSION="$(cat bindings/rust/Cargo.toml | grep 'protobuf =' | se if ! grep -q "$PROTOC_GEN_RUST_VERSION" "./.bin/PROTOC_GEN_RUST_VERSION" \ || ! test -f "./.bin/bin/protoc-gen-rs"; then rm -rf .bin - cargo install --root .bin protobuf-codegen --version 3.7.1 + cargo install --root .bin protobuf-codegen --version 3.7.1 --locked echo "$PROTOC_GEN_RUST_VERSION" > "./.bin/PROTOC_GEN_RUST_VERSION" fi From 94484d93a21313b0f2f1d5466cfb945c20f7b4f7 Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Tue, 17 Dec 2024 16:10:56 +0530 Subject: [PATCH 17/25] fix: Propagate errors when creating repro SCIP index (part 2) (#297) When trying to enter definitions, we were incorrectly dropping symbol parsing errors. This can lead to failures downstream when attempting Find references on a SCIP index. --- cmd/scip/tests/reprolang/bindings/go/repro/indexer.go | 6 ++++-- cmd/scip/tests/reprolang/bindings/go/repro/namer.go | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go b/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go index 279fb56e..1bae04b2 100644 --- a/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go +++ b/cmd/scip/tests/reprolang/bindings/go/repro/indexer.go @@ -62,15 +62,17 @@ func Index( } // Phase 2: resolve names for definitions + var allErrs error for _, dependency := range reproDependencies { - dependency.enterGlobalDefinitions(ctx) + if err := dependency.enterGlobalDefinitions(ctx); err != nil { + allErrs = errors.CombineErrors(allErrs, errors.Wrapf(err, "package: %v", dependency.Package)) + } } for _, file := range reproSources { file.enterDefinitions(ctx) } // Phase 3: resolve names for references - var allErrs error for _, file := range reproSources { if err := file.resolveReferences(ctx); err != nil { allErrs = errors.CombineErrors(allErrs, errors.Wrapf(err, "file %q", file.Source.AbsolutePath)) diff --git a/cmd/scip/tests/reprolang/bindings/go/repro/namer.go b/cmd/scip/tests/reprolang/bindings/go/repro/namer.go index c466f371..a97c5966 100644 --- a/cmd/scip/tests/reprolang/bindings/go/repro/namer.go +++ b/cmd/scip/tests/reprolang/bindings/go/repro/namer.go @@ -9,7 +9,8 @@ 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) { +func (d *reproDependency) enterGlobalDefinitions(context *reproContext) error { + var errs error enter := func(file *reproSourceFile, name *identifier) { if name.isLocalSymbol() { return @@ -17,6 +18,7 @@ func (d *reproDependency) enterGlobalDefinitions(context *reproContext) { symbol := newGlobalSymbol(d.Package, file, name) parsedSymbol, err := scip.ParseSymbol(symbol) if err != nil { + errs = errors.CombineErrors(errs, errors.Wrapf(err, "file: %q", file.Source.AbsolutePath)) return } newName := newGlobalName(context.pkg, parsedSymbol) @@ -30,6 +32,7 @@ func (d *reproDependency) enterGlobalDefinitions(context *reproContext) { enter(file, relationship.name) } } + return errs } // enterDefinitions inserts the names of the definitions into the appropriate scope (local symbols go into the local scope). From 4a9a63dc95cd0e35f3bb4d7b43d5d65f747dada8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Wickstr=C3=B6m?= Date: Thu, 27 Feb 2025 14:56:21 +0100 Subject: [PATCH 18/25] feat: add SymbolInformation.Kind.Concept for C++ (#305) --- bindings/go/scip/scip.pb.go | 593 +++---- bindings/haskell/src/Proto/Scip.hs | 1696 ++++++++++---------- bindings/rust/Cargo.lock | 10 +- bindings/rust/src/generated/scip.rs | 2251 ++++++++++++++------------- bindings/typescript/scip.ts | 1 + docs/scip.md | 3 +- scip.proto | 4 +- 7 files changed, 2296 insertions(+), 2262 deletions(-) diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index 7637e303..ec17c347 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -1064,9 +1064,11 @@ const ( // For C++ SymbolInformation_Attribute SymbolInformation_Kind = 4 // For Lean - SymbolInformation_Axiom SymbolInformation_Kind = 5 - SymbolInformation_Boolean SymbolInformation_Kind = 6 - SymbolInformation_Class SymbolInformation_Kind = 7 + SymbolInformation_Axiom SymbolInformation_Kind = 5 + SymbolInformation_Boolean SymbolInformation_Kind = 6 + SymbolInformation_Class SymbolInformation_Kind = 7 + // For C++ + SymbolInformation_Concept SymbolInformation_Kind = 86 SymbolInformation_Constant SymbolInformation_Kind = 8 SymbolInformation_Constructor SymbolInformation_Kind = 9 // For Solidity @@ -1205,6 +1207,7 @@ var ( 5: "Axiom", 6: "Boolean", 7: "Class", + 86: "Concept", 8: "Constant", 9: "Constructor", 62: "Contract", @@ -1292,6 +1295,7 @@ var ( "Axiom": 5, "Boolean": 6, "Class": 7, + "Concept": 86, "Constant": 8, "Constructor": 9, "Contract": 62, @@ -2618,7 +2622,7 @@ var file_scip_proto_rawDesc = []byte{ 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x08, 0x12, 0x09, 0x0a, - 0x05, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, 0x09, 0x1a, 0x02, 0x10, 0x01, 0x22, 0xc5, 0x0c, 0x0a, + 0x05, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, 0x09, 0x1a, 0x02, 0x10, 0x01, 0x22, 0xd2, 0x0c, 0x0a, 0x11, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x24, 0x0a, 0x0d, 0x64, 0x6f, @@ -2640,7 +2644,7 @@ var file_scip_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x22, 0xee, 0x09, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, + 0x62, 0x6f, 0x6c, 0x22, 0xfb, 0x09, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x42, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, @@ -2650,295 +2654,296 @@ var file_scip_proto_rawDesc = []byte{ 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x78, 0x69, 0x6f, 0x6d, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, - 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, - 0x10, 0x09, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x10, 0x3e, - 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x0a, - 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x10, 0x49, 0x12, 0x08, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x6e, 0x75, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x0c, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x10, 0x3f, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x0d, - 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x54, 0x12, 0x08, 0x0a, - 0x04, 0x46, 0x61, 0x63, 0x74, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x10, 0x0f, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x65, - 0x74, 0x74, 0x65, 0x72, 0x10, 0x12, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, - 0x72, 0x10, 0x13, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, - 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x10, 0x15, - 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x10, 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x61, 0x6e, - 0x67, 0x10, 0x17, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x65, 0x6d, 0x6d, 0x61, 0x10, 0x18, 0x12, 0x0b, - 0x0a, 0x07, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x10, 0x40, 0x12, 0x09, 0x0a, 0x05, 0x4d, - 0x61, 0x63, 0x72, 0x6f, 0x10, 0x19, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x10, 0x1a, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x10, 0x4a, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x43, - 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0x1c, 0x12, 0x09, 0x0a, - 0x05, 0x4d, 0x69, 0x78, 0x69, 0x6e, 0x10, 0x55, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x10, 0x41, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x10, 0x1d, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, - 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x20, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x10, 0x21, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, - 0x22, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x23, 0x12, 0x11, - 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, - 0x24, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x25, - 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x10, 0x26, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x10, - 0x27, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x10, 0x28, - 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x10, 0x29, 0x12, 0x0c, - 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x44, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x75, 0x72, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x45, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x75, 0x61, 0x73, 0x69, - 0x71, 0x75, 0x6f, 0x74, 0x65, 0x72, 0x10, 0x2b, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x2c, 0x12, 0x0a, 0x0a, 0x06, 0x53, - 0x65, 0x74, 0x74, 0x65, 0x72, 0x10, 0x2d, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x74, 0x6f, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, 0x4b, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x4c, 0x12, - 0x14, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x10, 0x4d, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x10, 0x4e, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x10, 0x4f, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x50, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x10, 0x51, 0x12, 0x12, 0x0a, - 0x0e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, - 0x52, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x30, 0x12, 0x0a, 0x0a, - 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x10, 0x31, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x2f, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x61, 0x63, 0x74, - 0x69, 0x63, 0x10, 0x32, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x6d, 0x10, - 0x33, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x68, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x10, 0x34, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x69, 0x74, 0x10, 0x35, 0x12, - 0x0f, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x46, - 0x12, 0x08, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x79, - 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x37, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x79, 0x70, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, 0x38, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x47, 0x12, 0x0e, 0x0a, - 0x0a, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x39, 0x12, 0x11, 0x0a, - 0x0d, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x3a, - 0x12, 0x09, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x10, 0x3b, 0x12, 0x09, 0x0a, 0x05, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x10, 0x3c, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x10, 0x3d, 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, 0x52, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x49, - 0x6d, 0x70, 0x6c, 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, 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, 0xa4, 0x02, 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, 0x12, 0x27, - 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x6e, 0x67, 0x65, 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, 0xa4, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x1b, 0x55, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, - 0x55, 0x54, 0x46, 0x38, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, - 0x01, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x54, 0x46, 0x31, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, - 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x54, 0x46, 0x33, 0x32, - 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x46, 0x72, - 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x03, 0x2a, 0x94, 0x01, - 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, 0x12, 0x15, 0x0a, - 0x11, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x10, 0x40, 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, 0x9b, 0x0a, 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, 0x08, 0x0a, 0x04, 0x41, 0x70, 0x65, - 0x78, 0x10, 0x60, 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, 0x43, 0x55, 0x44, 0x41, 0x10, 0x61, 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, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x10, - 0x62, 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, 0x0c, 0x0a, 0x08, 0x4a, 0x75, - 0x73, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x6d, 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, 0x08, 0x0a, 0x04, - 0x4c, 0x75, 0x61, 0x75, 0x10, 0x6c, 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, 0x0a, - 0x0a, 0x06, 0x4e, 0x69, 0x63, 0x6b, 0x65, 0x6c, 0x10, 0x6e, 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, 0x0a, 0x0a, 0x06, 0x50, 0x61, 0x73, 0x63, 0x61, 0x6c, 0x10, 0x63, 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, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x10, 0x64, 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, 0x09, 0x0a, 0x05, 0x52, 0x65, - 0x70, 0x72, 0x6f, 0x10, 0x66, 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, 0x6c, 0x61, 0x6e, 0x67, - 0x10, 0x6b, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x10, 0x5f, - 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x76, 0x65, 0x6c, 0x74, 0x65, 0x10, 0x6a, 0x12, 0x09, 0x0a, 0x05, - 0x53, 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x63, 0x6c, 0x10, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, - 0x58, 0x10, 0x52, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x68, 0x72, 0x69, 0x66, 0x74, 0x10, 0x67, 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, 0x0b, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x69, 0x6c, 0x6f, 0x67, 0x10, - 0x68, 0x12, 0x08, 0x0a, 0x04, 0x56, 0x48, 0x44, 0x4c, 0x10, 0x69, 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, + 0x73, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x10, 0x56, + 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x08, 0x12, 0x0f, + 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x09, 0x12, + 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x10, 0x3e, 0x12, 0x0e, 0x0a, + 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x0a, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x10, 0x49, 0x12, 0x08, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x6e, 0x75, 0x6d, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x10, 0x0c, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x3f, + 0x12, 0x09, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x54, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x61, + 0x63, 0x74, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x10, 0x0f, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x74, 0x65, + 0x72, 0x10, 0x12, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x10, 0x13, + 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x14, 0x12, 0x0d, + 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x10, 0x15, 0x12, 0x07, 0x0a, + 0x03, 0x4b, 0x65, 0x79, 0x10, 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x10, 0x17, + 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x65, 0x6d, 0x6d, 0x61, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x4c, + 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x10, 0x40, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x63, 0x72, + 0x6f, 0x10, 0x19, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x1a, 0x12, + 0x0f, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x4a, + 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x43, 0x12, 0x0b, 0x0a, + 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0x1c, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x69, + 0x78, 0x69, 0x6e, 0x10, 0x55, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x10, 0x41, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x1d, 0x12, + 0x0d, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x1e, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x10, 0x20, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x21, + 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x22, 0x12, 0x0b, + 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x23, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x24, 0x12, 0x0d, + 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x25, 0x12, 0x12, 0x0a, + 0x0e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x10, + 0x26, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x10, 0x27, 0x12, 0x0d, + 0x0a, 0x09, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x10, 0x28, 0x12, 0x0c, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x10, 0x29, 0x12, 0x0c, 0x0a, 0x08, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x44, 0x12, 0x15, 0x0a, + 0x11, 0x50, 0x75, 0x72, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x10, 0x45, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x72, 0x10, 0x2b, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x2c, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x74, + 0x65, 0x72, 0x10, 0x2d, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, 0x4b, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x69, 0x6e, 0x67, 0x6c, + 0x65, 0x74, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x4c, 0x12, 0x14, 0x0a, 0x10, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x10, 0x4d, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x10, 0x4e, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x10, 0x4f, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x10, 0x50, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x10, 0x51, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x52, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x30, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x10, 0x31, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x10, 0x2f, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x61, 0x63, 0x74, 0x69, 0x63, 0x10, + 0x32, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x6d, 0x10, 0x33, 0x12, 0x11, + 0x0a, 0x0d, 0x54, 0x68, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, + 0x34, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x69, 0x74, 0x10, 0x35, 0x12, 0x0f, 0x0a, 0x0b, + 0x54, 0x72, 0x61, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x46, 0x12, 0x08, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x10, 0x37, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x10, 0x38, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x47, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, + 0x70, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x39, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x79, + 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x3a, 0x12, 0x09, 0x0a, + 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x10, 0x3b, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x3c, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, + 0x3d, 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, + 0x52, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, + 0x11, 0x69, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x49, 0x6d, 0x70, 0x6c, + 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, 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, 0xa4, 0x02, + 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, 0x12, 0x27, 0x0a, 0x0f, 0x65, + 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x52, + 0x61, 0x6e, 0x67, 0x65, 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, 0xa4, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x54, 0x46, + 0x38, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x46, + 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x01, 0x12, 0x24, + 0x0a, 0x20, 0x55, 0x54, 0x46, 0x31, 0x36, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x54, 0x46, 0x33, 0x32, 0x43, 0x6f, 0x64, + 0x65, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x4c, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x03, 0x2a, 0x94, 0x01, 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, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, + 0x40, 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, 0x9b, 0x0a, 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, 0x08, 0x0a, 0x04, 0x41, 0x70, 0x65, 0x78, 0x10, 0x60, + 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, 0x43, 0x55, 0x44, 0x41, 0x10, 0x61, 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, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x4c, 0x10, 0x62, 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, 0x0c, 0x0a, 0x08, 0x4a, 0x75, 0x73, 0x74, 0x66, + 0x69, 0x6c, 0x65, 0x10, 0x6d, 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, 0x08, 0x0a, 0x04, 0x4c, 0x75, 0x61, + 0x75, 0x10, 0x6c, 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, 0x0a, 0x0a, 0x06, 0x4e, + 0x69, 0x63, 0x6b, 0x65, 0x6c, 0x10, 0x6e, 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, + 0x0a, 0x0a, 0x06, 0x50, 0x61, 0x73, 0x63, 0x61, 0x6c, 0x10, 0x63, 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, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x10, 0x64, 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, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x72, 0x6f, + 0x10, 0x66, 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, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x6b, 0x12, + 0x0c, 0x0a, 0x08, 0x53, 0x6f, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x10, 0x5f, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x76, 0x65, 0x6c, 0x74, 0x65, 0x10, 0x6a, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x77, 0x69, + 0x66, 0x74, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x63, 0x6c, 0x10, 0x65, 0x12, 0x08, 0x0a, + 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, + 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x68, 0x72, 0x69, 0x66, 0x74, 0x10, 0x67, 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, 0x0b, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x69, 0x6c, 0x6f, 0x67, 0x10, 0x68, 0x12, 0x08, + 0x0a, 0x04, 0x56, 0x48, 0x44, 0x4c, 0x10, 0x69, 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 b1979eec..5064ee17 100644 --- a/bindings/haskell/src/Proto/Scip.hs +++ b/bindings/haskell/src/Proto/Scip.hs @@ -4129,7 +4129,7 @@ instance Data.ProtoLens.Message SymbolInformation where \\EOTkind\CAN\ENQ \SOH(\SO2\FS.scip.SymbolInformation.KindR\EOTkind\DC2!\n\ \\fdisplay_name\CAN\ACK \SOH(\tR\vdisplayName\DC2G\n\ \\ETBsignature_documentation\CAN\a \SOH(\v2\SO.scip.DocumentR\SYNsignatureDocumentation\DC2)\n\ - \\DLEenclosing_symbol\CAN\b \SOH(\tR\SIenclosingSymbol\"\238\t\n\ + \\DLEenclosing_symbol\CAN\b \SOH(\tR\SIenclosingSymbol\"\251\t\n\ \\EOTKind\DC2\DC3\n\ \\SIUnspecifiedKind\DLE\NUL\DC2\DC2\n\ \\SOAbstractMethod\DLEB\DC2\f\n\ @@ -4140,7 +4140,8 @@ instance Data.ProtoLens.Message SymbolInformation where \\tAttribute\DLE\EOT\DC2\t\n\ \\ENQAxiom\DLE\ENQ\DC2\v\n\ \\aBoolean\DLE\ACK\DC2\t\n\ - \\ENQClass\DLE\a\DC2\f\n\ + \\ENQClass\DLE\a\DC2\v\n\ + \\aConcept\DLEV\DC2\f\n\ \\bConstant\DLE\b\DC2\SI\n\ \\vConstructor\DLE\t\DC2\f\n\ \\bContract\DLE>\DC2\SO\n\ @@ -4660,6 +4661,7 @@ data SymbolInformation'Kind SymbolInformation'StaticVariable | SymbolInformation'Extension | SymbolInformation'Mixin | + SymbolInformation'Concept | SymbolInformation'Kind'Unrecognized !SymbolInformation'Kind'UnrecognizedValue deriving stock (Prelude.Show, Prelude.Eq, Prelude.Ord) instance Data.ProtoLens.MessageEnum SymbolInformation'Kind where @@ -4748,6 +4750,7 @@ instance Data.ProtoLens.MessageEnum SymbolInformation'Kind where maybeToEnum 82 = Prelude.Just SymbolInformation'StaticVariable maybeToEnum 84 = Prelude.Just SymbolInformation'Extension maybeToEnum 85 = Prelude.Just SymbolInformation'Mixin + maybeToEnum 86 = Prelude.Just SymbolInformation'Concept maybeToEnum k = Prelude.Just (SymbolInformation'Kind'Unrecognized @@ -4763,6 +4766,7 @@ instance Data.ProtoLens.MessageEnum SymbolInformation'Kind where showEnum SymbolInformation'Axiom = "Axiom" showEnum SymbolInformation'Boolean = "Boolean" showEnum SymbolInformation'Class = "Class" + showEnum SymbolInformation'Concept = "Concept" showEnum SymbolInformation'Constant = "Constant" showEnum SymbolInformation'Constructor = "Constructor" showEnum SymbolInformation'Contract = "Contract" @@ -4859,6 +4863,7 @@ instance Data.ProtoLens.MessageEnum SymbolInformation'Kind where | (Prelude.==) k "Axiom" = Prelude.Just SymbolInformation'Axiom | (Prelude.==) k "Boolean" = Prelude.Just SymbolInformation'Boolean | (Prelude.==) k "Class" = Prelude.Just SymbolInformation'Class + | (Prelude.==) k "Concept" = Prelude.Just SymbolInformation'Concept | (Prelude.==) k "Constant" = Prelude.Just SymbolInformation'Constant | (Prelude.==) k "Constructor" @@ -4982,7 +4987,7 @@ instance Data.ProtoLens.MessageEnum SymbolInformation'Kind where = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum instance Prelude.Bounded SymbolInformation'Kind where minBound = SymbolInformation'UnspecifiedKind - maxBound = SymbolInformation'Mixin + maxBound = SymbolInformation'Concept instance Prelude.Enum SymbolInformation'Kind where toEnum k__ = Prelude.maybe @@ -5075,12 +5080,13 @@ instance Prelude.Enum SymbolInformation'Kind where fromEnum SymbolInformation'StaticVariable = 82 fromEnum SymbolInformation'Extension = 84 fromEnum SymbolInformation'Mixin = 85 + fromEnum SymbolInformation'Concept = 86 fromEnum (SymbolInformation'Kind'Unrecognized (SymbolInformation'Kind'UnrecognizedValue k)) = Prelude.fromIntegral k - succ SymbolInformation'Mixin + succ SymbolInformation'Concept = Prelude.error - "SymbolInformation'Kind.succ: bad argument SymbolInformation'Mixin. This value would be out of bounds." + "SymbolInformation'Kind.succ: bad argument SymbolInformation'Concept. This value would be out of bounds." succ SymbolInformation'UnspecifiedKind = SymbolInformation'Array succ SymbolInformation'Array = SymbolInformation'Assertion succ SymbolInformation'Assertion = SymbolInformation'AssociatedType @@ -5177,6 +5183,7 @@ instance Prelude.Enum SymbolInformation'Kind where = SymbolInformation'StaticVariable succ SymbolInformation'StaticVariable = SymbolInformation'Extension succ SymbolInformation'Extension = SymbolInformation'Mixin + succ SymbolInformation'Mixin = SymbolInformation'Concept succ (SymbolInformation'Kind'Unrecognized _) = Prelude.error "SymbolInformation'Kind.succ: bad argument: unrecognized value" @@ -5279,6 +5286,7 @@ instance Prelude.Enum SymbolInformation'Kind where = SymbolInformation'StaticProperty pred SymbolInformation'Extension = SymbolInformation'StaticVariable pred SymbolInformation'Mixin = SymbolInformation'Extension + pred SymbolInformation'Concept = SymbolInformation'Mixin pred (SymbolInformation'Kind'Unrecognized _) = Prelude.error "SymbolInformation'Kind.pred: bad argument: unrecognized value" @@ -6064,7 +6072,7 @@ packedFileDescriptor \\tParameter\DLE\ACK\DC2\b\n\ \\EOTMeta\DLE\a\DC2\t\n\ \\ENQLocal\DLE\b\DC2\t\n\ - \\ENQMacro\DLE\t\SUB\STX\DLE\SOH\"\197\f\n\ + \\ENQMacro\DLE\t\SUB\STX\DLE\SOH\"\210\f\n\ \\DC1SymbolInformation\DC2\SYN\n\ \\ACKsymbol\CAN\SOH \SOH(\tR\ACKsymbol\DC2$\n\ \\rdocumentation\CAN\ETX \ETX(\tR\rdocumentation\DC28\n\ @@ -6072,7 +6080,7 @@ packedFileDescriptor \\EOTkind\CAN\ENQ \SOH(\SO2\FS.scip.SymbolInformation.KindR\EOTkind\DC2!\n\ \\fdisplay_name\CAN\ACK \SOH(\tR\vdisplayName\DC2G\n\ \\ETBsignature_documentation\CAN\a \SOH(\v2\SO.scip.DocumentR\SYNsignatureDocumentation\DC2)\n\ - \\DLEenclosing_symbol\CAN\b \SOH(\tR\SIenclosingSymbol\"\238\t\n\ + \\DLEenclosing_symbol\CAN\b \SOH(\tR\SIenclosingSymbol\"\251\t\n\ \\EOTKind\DC2\DC3\n\ \\SIUnspecifiedKind\DLE\NUL\DC2\DC2\n\ \\SOAbstractMethod\DLEB\DC2\f\n\ @@ -6083,7 +6091,8 @@ packedFileDescriptor \\tAttribute\DLE\EOT\DC2\t\n\ \\ENQAxiom\DLE\ENQ\DC2\v\n\ \\aBoolean\DLE\ACK\DC2\t\n\ - \\ENQClass\DLE\a\DC2\f\n\ + \\ENQClass\DLE\a\DC2\v\n\ + \\aConcept\DLEV\DC2\f\n\ \\bConstant\DLE\b\DC2\SI\n\ \\vConstructor\DLE\t\DC2\f\n\ \\bContract\DLE>\DC2\SO\n\ @@ -6412,9 +6421,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\206\184\STX\n\ + \\ETXZig\DLE&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\139\185\STX\n\ \\a\DC2\ENQ\n\ - \\NUL\242\ACK\SOH\n\ + \\NUL\244\ACK\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\ @@ -6973,7 +6982,7 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\225\SOH\DC2\DC3\n\ \\131\SOH\n\ - \\STX\EOT\a\DC2\ACK\232\SOH\NUL\184\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ + \\STX\EOT\a\DC2\ACK\232\SOH\NUL\186\ETX\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\ @@ -7029,7 +7038,7 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\a\STX\ETX\ETX\DC2\EOT\248\SOH\SO\SI\n\ \\245\ENQ\n\ - \\EOT\EOT\a\EOT\NUL\DC2\ACK\135\STX\STX\148\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ + \\EOT\EOT\a\EOT\NUL\DC2\ACK\135\STX\STX\150\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ \ information about the symbol's meaning in the language.\n\ \\n\ \ For example:\n\ @@ -7112,525 +7121,532 @@ packedFileDescriptor \\a\EOT\a\EOT\NUL\STX\t\SOH\DC2\EOT\150\STX\ACK\v\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\t\STX\DC2\EOT\150\STX\SO\SI\n\ - \\SO\n\ + \\EM\n\ \\ACK\EOT\a\EOT\NUL\STX\n\ - \\DC2\EOT\151\STX\ACK\DC3\n\ + \\DC2\EOT\152\STX\ACK\DC3\SUB\t For C++\n\ + \\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\151\STX\ACK\SO\n\ + \\SOH\DC2\EOT\152\STX\ACK\r\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\STX\DC2\EOT\151\STX\DC1\DC2\n\ + \\STX\DC2\EOT\152\STX\DLE\DC2\n\ + \\SO\n\ + \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\153\STX\ACK\DC3\n\ + \\SI\n\ + \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\153\STX\ACK\SO\n\ + \\SI\n\ + \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\153\STX\DC1\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\152\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\154\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\152\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\154\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\152\STX\DC4\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\154\STX\DC4\NAK\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\154\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\156\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\154\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\156\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\154\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\156\STX\DC1\DC3\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\156\STX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\158\STX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\156\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\158\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\156\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\158\STX\DC3\NAK\n\ \\US\n\ - \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\158\STX\ACK\DC4\SUB\SI For C# and F#\n\ + \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\160\STX\ACK\DC4\SUB\SI For C# and F#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\158\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\160\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\158\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\160\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\159\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\161\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\159\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\161\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\159\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\161\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\160\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\162\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\160\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\162\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\160\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\162\STX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\161\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\163\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\161\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\163\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\161\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\163\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\162\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\164\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\162\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\164\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\162\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\164\STX\SO\DLE\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\164\STX\ACK\NAK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\166\STX\ACK\NAK\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\164\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\166\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\164\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\166\STX\DC2\DC4\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\166\STX\ACK\DLE\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\168\STX\ACK\DLE\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\166\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\168\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\166\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\168\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\167\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\169\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\167\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\169\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\167\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\169\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\168\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\170\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\168\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\170\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\168\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\170\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\169\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\171\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\169\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\171\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\169\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\171\STX\DC1\DC3\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\171\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\173\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\171\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\173\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\171\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\173\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\173\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\175\STX\ACK\DC3\SUB\n\ \ For Raku\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\173\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\175\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\173\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\175\STX\DLE\DC2\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\175\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ + \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\177\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\175\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\177\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\175\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\177\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\176\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\178\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\176\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\178\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\176\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\178\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\177\STX\ACK\SI\n\ + \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\179\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\177\STX\ACK\t\n\ + \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\179\STX\ACK\t\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\177\STX\f\SO\n\ + \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\179\STX\f\SO\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\179\STX\ACK\DLE\SUB\f For Racket\n\ + \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\181\STX\ACK\DLE\SUB\f For Racket\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\179\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\181\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\179\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\181\STX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\181\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\183\STX\ACK\DC1\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\181\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\183\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\181\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\183\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\183\STX\ACK\DC3\SUB\SO For solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\185\STX\ACK\DC3\SUB\SO For solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\183\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\185\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\183\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\185\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\184\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\186\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\184\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\186\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\184\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\186\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\185\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\187\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\185\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\187\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\185\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\187\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\187\STX\ACK\ETB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\189\STX\ACK\ETB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\187\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\189\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\187\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\189\STX\DC4\SYN\n\ \\148\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\190\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ + \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\192\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ \ like Go where the receiver doesn't have a conventional name.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\190\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\192\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\190\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\192\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\192\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ + \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\194\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\192\STX\ACK\EM\n\ + \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\194\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\192\STX\FS\RS\n\ + \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\194\STX\FS\RS\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\194\STX\ACK\DC3\SUB\SO For Protobuf\n\ + \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\196\STX\ACK\DC3\SUB\SO For Protobuf\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\194\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\196\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\194\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\196\STX\DLE\DC2\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\196\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\198\STX\ACK\DC1\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\196\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\198\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\196\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\198\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\198\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\200\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\198\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\200\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\198\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\200\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\199\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\201\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\199\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\201\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\199\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\201\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\200\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\202\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\200\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\202\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\200\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\202\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\201\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\203\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\201\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\203\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\201\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\203\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\202\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\204\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\202\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\204\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\202\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\204\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\203\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\205\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\203\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\205\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\203\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\205\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\204\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\206\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\204\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\206\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\204\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\206\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\205\STX\ACK\DC3\n\ + \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\207\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\205\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\207\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\205\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\207\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\206\STX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\208\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\206\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\208\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\206\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\208\STX\SYN\CAN\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\207\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\209\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\207\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\209\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\207\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\209\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\208\STX\ACK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\210\STX\ACK\SUB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\208\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\210\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\208\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\210\STX\ETB\EM\n\ \/\n\ - \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\210\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ + \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\212\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\210\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\212\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\210\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\212\STX\DLE\DC2\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\212\STX\ACK\NAK\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\214\STX\ACK\NAK\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\212\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\214\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\212\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\214\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\213\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\215\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\213\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\215\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\213\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\215\STX\DC1\DC3\n\ \Q\n\ - \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\215\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ + \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\217\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\215\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\217\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\215\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\217\STX\DC1\DC3\n\ \K\n\ - \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\217\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ + \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\219\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\217\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\219\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\217\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\219\STX\ETB\EM\n\ \9\n\ - \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\219\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ + \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\221\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\219\STX\ACK\ETB\n\ + \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\221\STX\ACK\ETB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\219\STX\SUB\FS\n\ + \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\221\STX\SUB\FS\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\221\STX\ACK\ETB\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\223\STX\ACK\ETB\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\221\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\223\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\221\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\223\STX\DC4\SYN\n\ \4\n\ - \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\223\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ + \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\225\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\223\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\225\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\223\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\225\STX\SYN\CAN\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\225\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\227\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\225\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\227\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\225\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\227\STX\SI\DC1\n\ \3\n\ - \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\227\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ + \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\229\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\227\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\229\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\227\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\229\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\229\STX\ACK\SUB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\231\STX\ACK\SUB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\229\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\231\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\229\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\231\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\231\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ + \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\233\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\231\STX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\233\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\231\STX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\233\STX\CAN\SUB\n\ \5\n\ - \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\233\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ + \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\235\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\233\STX\ACK\SYN\n\ + \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\235\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\233\STX\EM\ESC\n\ + \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\235\STX\EM\ESC\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\235\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\237\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\235\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\237\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\235\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\237\STX\DC4\SYN\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\237\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\239\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\237\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\239\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\237\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\239\STX\DC4\SYN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\239\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\241\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\239\STX\ACK\DC2\n\ + \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\241\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\239\STX\NAK\ETB\n\ + \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\241\STX\NAK\ETB\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\241\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\243\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\241\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\243\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\241\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\243\STX\ETB\EM\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\243\STX\ACK\SUB\SUB\f For C, C++\n\ + \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\245\STX\ACK\SUB\SUB\f For C, C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\243\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\245\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\243\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\245\STX\ETB\EM\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\244\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\246\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\244\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\246\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\244\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\246\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\245\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\247\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\245\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\247\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\245\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\247\STX\SI\DC1\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\247\STX\ACK\NAK\SUB\v For Swift\n\ + \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\249\STX\ACK\NAK\SUB\v For Swift\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\247\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\249\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\247\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\249\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\249\STX\ACK\DC2\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\251\STX\ACK\DC2\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\249\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\251\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\249\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\251\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\251\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\253\STX\ACK\DC3\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\251\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\253\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\251\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\253\STX\DLE\DC2\n\ \U\n\ - \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\254\STX\ACK\EM\SUBE Method receiver for languages\n\ + \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\128\ETX\ACK\EM\SUBE Method receiver for languages\n\ \ 'this' in JavaScript, C++, Java etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\254\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\128\ETX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\254\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\128\ETX\SYN\CAN\n\ \O\n\ - \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\128\ETX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\130\ETX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\128\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\130\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\128\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\130\ETX\SO\DLE\n\ \E\n\ - \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\130\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\132\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\130\ETX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\132\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\130\ETX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\132\ETX\DC4\SYN\n\ \\137\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\133\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ + \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\135\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ \ rather than separate keywords like `struct` and `enum`.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\133\ETX\ACK\n\ + \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\135\ETX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\133\ETX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\135\ETX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\134\ETX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\136\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\134\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\136\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\134\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\136\ETX\DC2\DC4\n\ \S\n\ - \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\136\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\138\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\136\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\138\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\136\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\138\ETX\DC2\DC4\n\ \M\n\ - \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\138\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\140\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\138\ETX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\140\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\138\ETX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\140\ETX\CAN\SUB\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\140\ETX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\142\ETX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\140\ETX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\142\ETX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\140\ETX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\142\ETX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\141\ETX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\143\ETX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\141\ETX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\143\ETX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\141\ETX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\143\ETX\SYN\CAN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\143\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ + \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\145\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\143\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\145\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\143\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\145\ETX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\144\ETX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\146\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\144\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\146\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\144\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\146\ETX\SO\DLE\n\ \[\n\ - \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\145\ETX\ACK\DC4\"K Next = 86;\n\ + \\ACK\EOT\a\EOT\NUL\STXU\DC2\EOT\147\ETX\ACK\DC4\"K Next = 87;\n\ \ Feel free to open a PR proposing new language-specific kinds.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\145\ETX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STXU\SOH\DC2\EOT\147\ETX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\145\ETX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STXU\STX\DC2\EOT\147\ETX\DC1\DC3\n\ \\243\ETX\n\ - \\EOT\EOT\a\STX\EOT\DC2\EOT\158\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ + \\EOT\EOT\a\STX\EOT\DC2\EOT\160\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ \ For example, the symbol \"com/example/MyClass#myMethod(+1).\" should have the\n\ \ display name \"myMethod\". The `symbol` field is not a reliable source of\n\ \ the display name for several reasons:\n\ @@ -7641,13 +7657,13 @@ packedFileDescriptor \ displayed to the user.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\158\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\160\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\158\ETX\t\NAK\n\ + \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\160\ETX\t\NAK\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\158\ETX\CAN\EM\n\ + \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\160\ETX\CAN\EM\n\ \\196\ETX\n\ - \\EOT\EOT\a\STX\ENQ\DC2\EOT\165\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ + \\EOT\EOT\a\STX\ENQ\DC2\EOT\167\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ \ documentation or in hover tooltips. For example, a Java method that adds\n\ \ two numbers this would have `Document.language = \"java\"` and `Document.text\n\ \ = \"void add(int a, int b)\". The `language` and `text` fields are required\n\ @@ -7655,14 +7671,14 @@ packedFileDescriptor \ included to support hyperlinking referenced symbols in the signature.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\165\ETX\STX\n\ + \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\167\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\165\ETX\v\"\n\ + \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\167\ETX\v\"\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\165\ETX%&\n\ + \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\167\ETX%&\n\ \\201\b\n\ - \\EOT\EOT\a\STX\ACK\DC2\EOT\183\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ + \\EOT\EOT\a\STX\ACK\DC2\EOT\185\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ \ symbols, the enclosing symbol should be parsed from the `symbol` field\n\ \ using the `Descriptor` grammar.\n\ \\n\ @@ -7681,25 +7697,25 @@ packedFileDescriptor \ symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\183\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\185\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\183\ETX\t\EM\n\ + \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\185\ETX\t\EM\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\183\ETX\FS\GS\n\ + \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\185\ETX\FS\GS\n\ \\f\n\ - \\STX\EOT\b\DC2\ACK\187\ETX\NUL\243\ETX\SOH\n\ + \\STX\EOT\b\DC2\ACK\189\ETX\NUL\245\ETX\SOH\n\ \\v\n\ - \\ETX\EOT\b\SOH\DC2\EOT\187\ETX\b\DC4\n\ + \\ETX\EOT\b\SOH\DC2\EOT\189\ETX\b\DC4\n\ \\f\n\ - \\EOT\EOT\b\STX\NUL\DC2\EOT\188\ETX\STX\DC4\n\ + \\EOT\EOT\b\STX\NUL\DC2\EOT\190\ETX\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\188\ETX\STX\b\n\ + \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\190\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\188\ETX\t\SI\n\ + \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\190\ETX\t\SI\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\188\ETX\DC2\DC3\n\ + \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\190\ETX\DC2\DC3\n\ \\222\b\n\ - \\EOT\EOT\b\STX\SOH\DC2\EOT\213\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ + \\EOT\EOT\b\STX\SOH\DC2\EOT\215\ETX\STX\CAN\SUB\207\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\ @@ -7725,13 +7741,13 @@ packedFileDescriptor \ `Animal#sound()` method as well.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\213\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\215\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\213\ETX\a\DC3\n\ + \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\215\ETX\a\DC3\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\213\ETX\SYN\ETB\n\ + \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\215\ETX\SYN\ETB\n\ \\238\ETX\n\ - \\EOT\EOT\b\STX\STX\DC2\EOT\222\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ + \\EOT\EOT\b\STX\STX\DC2\EOT\224\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ \ It's common for `is_implementation` and `is_reference` to both be true but\n\ \ it's not always the case.\n\ \ In the TypeScript example above, observe that `Dog#` has an\n\ @@ -7741,22 +7757,22 @@ packedFileDescriptor \ implementations\" on the \"Animal#\" symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\222\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\224\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\222\ETX\a\CAN\n\ + \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\224\ETX\a\CAN\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\222\ETX\ESC\FS\n\ + \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\224\ETX\ESC\FS\n\ \P\n\ - \\EOT\EOT\b\STX\ETX\DC2\EOT\224\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\EOT\EOT\b\STX\ETX\DC2\EOT\226\ETX\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\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\226\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\224\ETX\a\EM\n\ + \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\226\ETX\a\EM\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\224\ETX\FS\GS\n\ + \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\226\ETX\FS\GS\n\ \\167\a\n\ - \\EOT\EOT\b\STX\EOT\DC2\EOT\241\ETX\STX\EM\SUB\213\ACK Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ + \\EOT\EOT\b\STX\EOT\DC2\EOT\243\ETX\STX\EM\SUB\213\ACK 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\ @@ -7775,387 +7791,387 @@ packedFileDescriptor \\"A Update registerInverseRelationships on adding a new field here.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\241\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\243\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\241\ETX\a\DC4\n\ + \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\243\ETX\a\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\241\ETX\ETB\CAN\n\ + \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\243\ETX\ETB\CAN\n\ \\136\ETX\n\ - \\STX\ENQ\ETX\DC2\ACK\250\ETX\NUL\144\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ + \\STX\ENQ\ETX\DC2\ACK\252\ETX\NUL\146\EOT\SOH\SUB\249\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\ETX\SOH\DC2\EOT\250\ETX\ENQ\SI\n\ + \\ETX\ENQ\ETX\SOH\DC2\EOT\252\ETX\ENQ\SI\n\ \v\n\ - \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\253\ETX\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ + \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\255\ETX\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\ETX\STX\NUL\SOH\DC2\EOT\253\ETX\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\255\ETX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\253\ETX\SUB\ESC\n\ + \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\255\ETX\SUB\ESC\n\ \T\n\ - \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\255\ETX\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ + \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\129\EOT\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\255\ETX\STX\f\n\ + \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\129\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\255\ETX\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\129\EOT\SI\DC2\n\ \,\n\ - \\EOT\ENQ\ETX\STX\STX\DC2\EOT\129\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ + \\EOT\ENQ\ETX\STX\STX\DC2\EOT\131\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\129\EOT\STX\b\n\ + \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\131\EOT\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\129\EOT\v\SO\n\ + \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\131\EOT\v\SO\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\131\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ + \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\133\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\131\EOT\STX\r\n\ + \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\133\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\131\EOT\DLE\DC3\n\ + \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\133\EOT\DLE\DC3\n\ \(\n\ - \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\133\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ + \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\135\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\133\EOT\STX\f\n\ + \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\135\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\133\EOT\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\135\EOT\SI\DC2\n\ \0\n\ - \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\135\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ + \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\137\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\135\EOT\STX\v\n\ + \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\137\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\135\EOT\SO\DC2\n\ + \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\137\EOT\SO\DC2\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\137\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ + \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\139\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\137\EOT\STX\ACK\n\ + \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\139\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\137\EOT\t\r\n\ + \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\139\EOT\t\r\n\ \\237\SOH\n\ - \\EOT\ENQ\ETX\STX\a\DC2\EOT\143\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ + \\EOT\ENQ\ETX\STX\a\DC2\EOT\145\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ \\n\ \ Applies to forward declarations for languages like C, C++\n\ \ and Objective-C, as well as `val` declarations in interface\n\ \ files in languages like SML and OCaml.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\143\EOT\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\145\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\143\EOT\SYN\SUB\n\ + \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\145\EOT\SYN\SUB\n\ \\f\n\ - \\STX\ENQ\EOT\DC2\ACK\146\EOT\NUL\239\EOT\SOH\n\ + \\STX\ENQ\EOT\DC2\ACK\148\EOT\NUL\241\EOT\SOH\n\ \\v\n\ - \\ETX\ENQ\EOT\SOH\DC2\EOT\146\EOT\ENQ\SI\n\ + \\ETX\ENQ\EOT\SOH\DC2\EOT\148\EOT\ENQ\SI\n\ \\v\n\ - \\ETX\ENQ\EOT\ETX\DC2\EOT\147\EOT\STX\FS\n\ + \\ETX\ENQ\EOT\ETX\DC2\EOT\149\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\147\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\149\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\149\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\151\EOT\STX\FS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\149\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\151\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\149\EOT\SUB\ESC\n\ + \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\151\EOT\SUB\ESC\n\ \;\n\ - \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\152\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ + \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\154\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\152\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\154\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\152\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\154\EOT\f\r\n\ \\ESC\n\ - \\EOT\ENQ\EOT\STX\STX\DC2\EOT\155\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ + \\EOT\ENQ\EOT\STX\STX\DC2\EOT\157\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\155\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\157\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\155\EOT\EM\SUB\n\ + \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\157\EOT\EM\SUB\n\ \2\n\ - \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\157\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ + \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\159\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\157\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\159\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\157\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\159\EOT\ETB\CAN\n\ \5\n\ - \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\160\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ + \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\162\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\160\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\162\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\160\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\162\EOT\f\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\161\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\163\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\161\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\163\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\161\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\163\EOT\SYN\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\161\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\163\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\161\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\163\EOT\EM(\n\ \\RS\n\ - \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\164\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ + \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\166\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\164\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\166\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\164\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\166\EOT\ETB\CAN\n\ \X\n\ - \\EOT\ENQ\EOT\STX\a\DC2\EOT\167\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ + \\EOT\ENQ\EOT\STX\a\DC2\EOT\169\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\167\EOT\STX\f\n\ + \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\169\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\167\EOT\SI\DLE\n\ + \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\169\EOT\SI\DLE\n\ \N\n\ - \\EOT\ENQ\EOT\STX\b\DC2\EOT\169\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ + \\EOT\ENQ\EOT\STX\b\DC2\EOT\171\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\169\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\171\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\169\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\171\EOT\SYN\ETB\n\ \[\n\ - \\EOT\ENQ\EOT\STX\t\DC2\EOT\171\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ + \\EOT\ENQ\EOT\STX\t\DC2\EOT\173\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\171\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\173\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\171\EOT\DC3\DC4\n\ + \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\173\EOT\DC3\DC4\n\ \.\n\ \\EOT\ENQ\EOT\STX\n\ - \\DC2\EOT\173\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ + \\DC2\EOT\175\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ \\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\SOH\DC2\EOT\173\EOT\STX\DC4\n\ + \\SOH\DC2\EOT\175\EOT\STX\DC4\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\STX\DC2\EOT\173\EOT\ETB\CAN\n\ + \\STX\DC2\EOT\175\EOT\ETB\CAN\n\ \'\n\ - \\EOT\ENQ\EOT\STX\v\DC2\EOT\175\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ + \\EOT\ENQ\EOT\STX\v\DC2\EOT\177\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\175\EOT\STX\EM\n\ + \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\177\EOT\STX\EM\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\175\EOT\FS\RS\n\ + \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\177\EOT\FS\RS\n\ \3\n\ - \\EOT\ENQ\EOT\STX\f\DC2\EOT\177\EOT\STX\ESC\SUB% Parameter definition and references\n\ + \\EOT\ENQ\EOT\STX\f\DC2\EOT\179\EOT\STX\ESC\SUB% Parameter definition and references\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\177\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\179\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\177\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\179\EOT\CAN\SUB\n\ \X\n\ - \\EOT\ENQ\EOT\STX\r\DC2\EOT\179\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ + \\EOT\ENQ\EOT\STX\r\DC2\EOT\181\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\179\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\181\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\179\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\181\EOT\DC4\SYN\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SO\DC2\EOT\181\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ + \\EOT\ENQ\EOT\STX\SO\DC2\EOT\183\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\181\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\183\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\181\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\183\EOT\ETB\EM\n\ \\205\SOH\n\ - \\EOT\ENQ\EOT\STX\SI\DC2\EOT\186\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ + \\EOT\ENQ\EOT\STX\SI\DC2\EOT\188\EOT\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\EOT\STX\SI\SOH\DC2\EOT\186\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\188\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\186\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\188\EOT\CAN\SUB\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\187\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\189\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\187\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\189\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\187\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\189\EOT\NAK\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\187\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\189\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\187\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\189\EOT\EM(\n\ \4\n\ - \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\190\EOT\STX\SUB\SUB& Function references, including calls\n\ + \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\192\EOT\STX\SUB\SUB& Function references, including calls\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\190\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\192\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\190\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\192\EOT\ETB\EM\n\ \(\n\ - \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\192\EOT\STX$\SUB\SUB Function definition only\n\ + \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\194\EOT\STX$\SUB\SUB Function definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\192\EOT\STX\RS\n\ + \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\194\EOT\STX\RS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\192\EOT!#\n\ + \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\194\EOT!#\n\ \7\n\ - \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\195\EOT\STX\ETB\SUB) Macro references, including invocations\n\ + \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\197\EOT\STX\ETB\SUB) Macro references, including invocations\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\195\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\197\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\195\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\197\EOT\DC4\SYN\n\ \%\n\ - \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\197\EOT\STX!\SUB\ETB Macro definition only\n\ + \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\199\EOT\STX!\SUB\ETB Macro definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\197\EOT\STX\ESC\n\ + \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\199\EOT\STX\ESC\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\197\EOT\RS \n\ + \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\199\EOT\RS \n\ \!\n\ - \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\200\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ + \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\202\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\200\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\202\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\200\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\202\EOT\DC3\NAK\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\202\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ + \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\204\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\202\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\204\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\202\EOT\SUB\FS\n\ + \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\204\EOT\SUB\FS\n\ \7\n\ - \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\205\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ + \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\207\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\205\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\207\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\205\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\207\EOT\CAN\SUB\n\ \\DC4\n\ - \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\208\EOT\STX\DC3\SUB\ACK `\\b`\n\ + \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\210\EOT\STX\DC3\SUB\ACK `\\b`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\208\EOT\STX\r\n\ + \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\210\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\208\EOT\DLE\DC2\n\ + \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\210\EOT\DLE\DC2\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\EM\DC2\EOT\210\EOT\STX\NAK\SUB\n\ + \\EOT\ENQ\EOT\STX\EM\DC2\EOT\212\EOT\STX\NAK\SUB\n\ \ `*`, `+`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\210\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\212\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\210\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\212\EOT\DC2\DC4\n\ \\DC3\n\ - \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\212\EOT\STX\NAK\SUB\ENQ `.`\n\ + \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\214\EOT\STX\NAK\SUB\ENQ `.`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\212\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\214\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\212\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\214\EOT\DC2\DC4\n\ \\"\n\ - \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\214\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ + \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\216\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\214\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\216\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\214\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\216\EOT\DC3\NAK\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\FS\DC2\EOT\216\EOT\STX\DC1\SUB\n\ + \\EOT\ENQ\EOT\STX\FS\DC2\EOT\218\EOT\STX\DC1\SUB\n\ \ `|`, `-`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\216\EOT\STX\v\n\ + \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\218\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\216\EOT\SO\DLE\n\ + \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\218\EOT\SO\DLE\n\ \0\n\ - \\EOT\ENQ\EOT\STX\GS\DC2\EOT\219\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ + \\EOT\ENQ\EOT\STX\GS\DC2\EOT\221\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\219\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\221\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\219\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\221\EOT\DC2\DC4\n\ \-\n\ - \\EOT\ENQ\EOT\STX\RS\DC2\EOT\221\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ + \\EOT\ENQ\EOT\STX\RS\DC2\EOT\223\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\221\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\223\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\221\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\223\EOT\CAN\SUB\n\ \_\n\ - \\EOT\ENQ\EOT\STX\US\DC2\EOT\223\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ + \\EOT\ENQ\EOT\STX\US\DC2\EOT\225\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\223\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\225\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\223\EOT\EM\ESC\n\ + \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\225\EOT\EM\ESC\n\ \G\n\ - \\EOT\ENQ\EOT\STX \DC2\EOT\225\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ + \\EOT\ENQ\EOT\STX \DC2\EOT\227\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\225\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\227\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\225\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\227\EOT\NAK\ETB\n\ \V\n\ - \\EOT\ENQ\EOT\STX!\DC2\EOT\227\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ + \\EOT\ENQ\EOT\STX!\DC2\EOT\229\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\227\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\229\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\227\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\229\EOT\NAK\ETB\n\ \9\n\ - \\EOT\ENQ\EOT\STX\"\DC2\EOT\229\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ + \\EOT\ENQ\EOT\STX\"\DC2\EOT\231\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\229\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\231\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\229\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\231\EOT\DC3\NAK\n\ \\US\n\ - \\EOT\ENQ\EOT\STX#\DC2\EOT\231\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ + \\EOT\ENQ\EOT\STX#\DC2\EOT\233\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\231\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\233\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\231\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\233\EOT\DC3\NAK\n\ \&\n\ - \\EOT\ENQ\EOT\STX$\DC2\EOT\234\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ + \\EOT\ENQ\EOT\STX$\DC2\EOT\236\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\234\EOT\STX\ENQ\n\ + \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\236\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\234\EOT\b\n\ + \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\236\EOT\b\n\ \\n\ \/\n\ - \\EOT\ENQ\EOT\STX%\DC2\EOT\236\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ + \\EOT\ENQ\EOT\STX%\DC2\EOT\238\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\236\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\238\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\236\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\238\EOT\DC1\DC3\n\ \,\n\ - \\EOT\ENQ\EOT\STX&\DC2\EOT\238\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ + \\EOT\ENQ\EOT\STX&\DC2\EOT\240\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\238\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\240\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\238\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\240\EOT\DC1\DC3\n\ \\249\SOH\n\ - \\STX\EOT\t\DC2\ACK\246\EOT\NUL\215\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ + \\STX\EOT\t\DC2\ACK\248\EOT\NUL\217\ENQ\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\246\EOT\b\DC2\n\ + \\ETX\EOT\t\SOH\DC2\EOT\248\EOT\b\DC2\n\ \\232\b\n\ - \\EOT\EOT\t\STX\NUL\DC2\EOT\142\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ + \\EOT\EOT\t\STX\NUL\DC2\EOT\144\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ \ elements:\n\ \\n\ \ - Four elements: `[startLine, startCharacter, endLine, endCharacter]`\n\ @@ -8180,36 +8196,36 @@ packedFileDescriptor \ improvements make up for it.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\142\ENQ\STX\n\ + \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\144\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\142\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\144\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\142\ENQ\DC1\SYN\n\ + \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\144\ENQ\DC1\SYN\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\142\ENQ\EM\SUB\n\ + \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\144\ENQ\EM\SUB\n\ \\138\SOH\n\ - \\EOT\EOT\t\STX\SOH\DC2\EOT\145\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ + \\EOT\EOT\t\STX\SOH\DC2\EOT\147\ENQ\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\145\ENQ\STX\b\n\ + \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\147\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\145\ENQ\t\SI\n\ + \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\147\ENQ\t\SI\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\145\ENQ\DC2\DC3\n\ + \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\147\ENQ\DC2\DC3\n\ \\151\SOH\n\ - \\EOT\EOT\t\STX\STX\DC2\EOT\148\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ + \\EOT\EOT\t\STX\STX\DC2\EOT\150\ENQ\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\148\ENQ\STX\a\n\ + \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\150\ENQ\STX\a\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\148\ENQ\b\DC4\n\ + \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\150\ENQ\b\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\148\ENQ\ETB\CAN\n\ + \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\150\ENQ\ETB\CAN\n\ \\241\ETX\n\ - \\EOT\EOT\t\STX\ETX\DC2\EOT\157\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ + \\EOT\EOT\t\STX\ETX\DC2\EOT\159\ENQ\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\ @@ -8219,37 +8235,37 @@ packedFileDescriptor \ which commonly allow for type-changing assignment.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\157\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\159\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\157\ENQ\v\DC1\n\ + \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\159\ENQ\v\DC1\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\157\ENQ\DC2(\n\ + \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\159\ENQ\DC2(\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\157\ENQ+,\n\ + \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\159\ENQ+,\n\ \X\n\ - \\EOT\EOT\t\STX\EOT\DC2\EOT\159\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ + \\EOT\EOT\t\STX\EOT\DC2\EOT\161\ENQ\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\159\ENQ\STX\f\n\ + \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\161\ENQ\STX\f\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\159\ENQ\r\CAN\n\ + \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\161\ENQ\r\CAN\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\159\ENQ\ESC\FS\n\ + \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\161\ENQ\ESC\FS\n\ \W\n\ - \\EOT\EOT\t\STX\ENQ\DC2\EOT\161\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ + \\EOT\EOT\t\STX\ENQ\DC2\EOT\163\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\161\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\163\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\161\ENQ\v\NAK\n\ + \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\163\ENQ\v\NAK\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\161\ENQ\SYN!\n\ + \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\163\ENQ\SYN!\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\161\ENQ$%\n\ + \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\163\ENQ$%\n\ \\183\SO\n\ - \\EOT\EOT\t\STX\ACK\DC2\EOT\214\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ + \\EOT\EOT\t\STX\ACK\DC2\EOT\216\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ \ source range of the nearest non-trivial enclosing AST node. This range must\n\ \ enclose the `range` field. Example applications that make use of the\n\ \ enclosing_range field:\n\ @@ -8303,152 +8319,152 @@ packedFileDescriptor \ ```\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\214\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\216\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\214\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\216\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\214\ENQ\DC1 \n\ + \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\216\ENQ\DC1 \n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\214\ENQ#$\n\ + \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\216\ENQ#$\n\ \w\n\ \\STX\EOT\n\ - \\DC2\ACK\219\ENQ\NUL\230\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ + \\DC2\ACK\221\ENQ\NUL\232\ENQ\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\219\ENQ\b\DC2\n\ + \\SOH\DC2\EOT\221\ENQ\b\DC2\n\ \W\n\ \\EOT\EOT\n\ - \\STX\NUL\DC2\EOT\221\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ + \\STX\NUL\DC2\EOT\223\ENQ\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\221\ENQ\STX\n\ + \\STX\NUL\ACK\DC2\EOT\223\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\SOH\DC2\EOT\221\ENQ\v\DC3\n\ + \\STX\NUL\SOH\DC2\EOT\223\ENQ\v\DC3\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ETX\DC2\EOT\221\ENQ\SYN\ETB\n\ + \\STX\NUL\ETX\DC2\EOT\223\ENQ\SYN\ETB\n\ \]\n\ \\EOT\EOT\n\ - \\STX\SOH\DC2\EOT\223\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ + \\STX\SOH\DC2\EOT\225\ENQ\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\223\ENQ\STX\b\n\ + \\STX\SOH\ENQ\DC2\EOT\225\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\SOH\DC2\EOT\223\ENQ\t\r\n\ + \\STX\SOH\SOH\DC2\EOT\225\ENQ\t\r\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ETX\DC2\EOT\223\ENQ\DLE\DC1\n\ + \\STX\SOH\ETX\DC2\EOT\225\ENQ\DLE\DC1\n\ \+\n\ \\EOT\EOT\n\ - \\STX\STX\DC2\EOT\225\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ + \\STX\STX\DC2\EOT\227\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ENQ\DC2\EOT\225\ENQ\STX\b\n\ + \\STX\STX\ENQ\DC2\EOT\227\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\SOH\DC2\EOT\225\ENQ\t\DLE\n\ + \\STX\STX\SOH\DC2\EOT\227\ENQ\t\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ETX\DC2\EOT\225\ENQ\DC3\DC4\n\ + \\STX\STX\ETX\DC2\EOT\227\ENQ\DC3\DC4\n\ \~\n\ \\EOT\EOT\n\ - \\STX\ETX\DC2\EOT\228\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ + \\STX\ETX\DC2\EOT\230\ENQ\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\228\ENQ\STX\b\n\ + \\STX\ETX\ENQ\DC2\EOT\230\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\SOH\DC2\EOT\228\ENQ\t\SI\n\ + \\STX\ETX\SOH\DC2\EOT\230\ENQ\t\SI\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ETX\DC2\EOT\228\ENQ\DC2\DC3\n\ + \\STX\ETX\ETX\DC2\EOT\230\ENQ\DC2\DC3\n\ \\f\n\ \\EOT\EOT\n\ - \\STX\EOT\DC2\EOT\229\ENQ\STX\"\n\ + \\STX\EOT\DC2\EOT\231\ENQ\STX\"\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\EOT\DC2\EOT\229\ENQ\STX\n\ + \\STX\EOT\EOT\DC2\EOT\231\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ACK\DC2\EOT\229\ENQ\v\CAN\n\ + \\STX\EOT\ACK\DC2\EOT\231\ENQ\v\CAN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\SOH\DC2\EOT\229\ENQ\EM\GS\n\ + \\STX\EOT\SOH\DC2\EOT\231\ENQ\EM\GS\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ETX\DC2\EOT\229\ENQ !\n\ + \\STX\EOT\ETX\DC2\EOT\231\ENQ !\n\ \\f\n\ - \\STX\ENQ\ENQ\DC2\ACK\232\ENQ\NUL\238\ENQ\SOH\n\ + \\STX\ENQ\ENQ\DC2\ACK\234\ENQ\NUL\240\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ENQ\SOH\DC2\EOT\232\ENQ\ENQ\r\n\ + \\ETX\ENQ\ENQ\SOH\DC2\EOT\234\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\233\ENQ\STX\SUB\n\ + \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\235\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\233\ENQ\STX\NAK\n\ + \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\235\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\233\ENQ\CAN\EM\n\ + \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\235\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\234\ENQ\STX\f\n\ + \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\236\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\234\ENQ\STX\a\n\ + \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\236\ENQ\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\234\ENQ\n\ + \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\236\ENQ\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\235\ENQ\STX\SO\n\ + \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\237\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\235\ENQ\STX\t\n\ + \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\237\ENQ\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\235\ENQ\f\r\n\ + \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\237\ENQ\f\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\236\ENQ\STX\DC2\n\ + \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\238\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\236\ENQ\STX\r\n\ + \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\238\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\236\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\238\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\237\ENQ\STX\v\n\ + \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\239\ENQ\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\237\ENQ\STX\ACK\n\ + \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\239\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\237\ENQ\t\n\ + \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\239\ENQ\t\n\ \\n\ \\f\n\ - \\STX\ENQ\ACK\DC2\ACK\240\ENQ\NUL\244\ENQ\SOH\n\ + \\STX\ENQ\ACK\DC2\ACK\242\ENQ\NUL\246\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ACK\SOH\DC2\EOT\240\ENQ\ENQ\DC2\n\ + \\ETX\ENQ\ACK\SOH\DC2\EOT\242\ENQ\ENQ\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\241\ENQ\STX\US\n\ + \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\243\ENQ\STX\US\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\241\ENQ\STX\SUB\n\ + \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\243\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\241\ENQ\GS\RS\n\ + \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\243\ENQ\GS\RS\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\242\ENQ\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\244\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\242\ENQ\STX\r\n\ + \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\244\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\242\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\244\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\STX\DC2\EOT\243\ENQ\STX\DC1\n\ + \\EOT\ENQ\ACK\STX\STX\DC2\EOT\245\ENQ\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\243\ENQ\STX\f\n\ + \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\245\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\243\ENQ\SI\DLE\n\ + \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\245\ENQ\SI\DLE\n\ \\208\ETX\n\ - \\STX\ENQ\a\DC2\ACK\252\ENQ\NUL\242\ACK\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ + \\STX\ENQ\a\DC2\ACK\254\ENQ\NUL\244\ACK\SOH\SUB\193\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\ @@ -8456,708 +8472,708 @@ packedFileDescriptor \ Feel free to send a pull-request to add missing programming languages.\n\ \\n\ \\v\n\ - \\ETX\ENQ\a\SOH\DC2\EOT\252\ENQ\ENQ\r\n\ + \\ETX\ENQ\a\SOH\DC2\EOT\254\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\NUL\DC2\EOT\253\ENQ\STX\SUB\n\ + \\EOT\ENQ\a\STX\NUL\DC2\EOT\255\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\253\ENQ\STX\NAK\n\ + \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\255\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\253\ENQ\CAN\EM\n\ + \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\255\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\a\STX\SOH\DC2\EOT\254\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\SOH\DC2\EOT\128\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\254\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\128\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\254\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\128\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\STX\DC2\EOT\255\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\STX\DC2\EOT\129\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\255\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\129\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\255\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\129\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETX\DC2\EOT\128\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\ETX\DC2\EOT\130\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\128\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\130\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\128\ACK\b\n\ + \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\130\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\EOT\DC2\EOT\129\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\EOT\DC2\EOT\131\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\129\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\131\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\129\ACK\b\n\ + \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\131\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\ENQ\DC2\EOT\130\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ENQ\DC2\EOT\132\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\130\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\132\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\130\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\132\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ACK\DC2\EOT\131\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\ACK\DC2\EOT\133\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\131\ACK\STX\n\ + \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\133\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\131\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\133\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\a\DC2\EOT\132\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\a\DC2\EOT\134\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\132\ACK\STX\n\ + \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\134\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\132\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\134\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\b\DC2\EOT\133\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\b\DC2\EOT\135\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\133\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\135\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\133\ACK\b\n\ + \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\135\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\t\DC2\EOT\134\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\t\DC2\EOT\136\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\134\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\136\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\134\ACK\b\n\ + \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\136\ACK\b\n\ \\n\ \\f\n\ \\EOT\ENQ\a\STX\n\ - \\DC2\EOT\135\ACK\STX\SO\n\ + \\DC2\EOT\137\ACK\STX\SO\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\SOH\DC2\EOT\135\ACK\STX\b\n\ + \\SOH\DC2\EOT\137\ACK\STX\b\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\STX\DC2\EOT\135\ACK\v\r\n\ + \\STX\DC2\EOT\137\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\v\DC2\EOT\136\ACK\STX\t\n\ + \\EOT\ENQ\a\STX\v\DC2\EOT\138\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\136\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\138\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\136\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\138\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX\f\DC2\EOT\137\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\f\DC2\EOT\139\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\137\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\139\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\137\ACK\n\ + \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\139\ACK\n\ \\f\n\ \H\n\ - \\EOT\ENQ\a\STX\r\DC2\EOT\138\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ + \\EOT\ENQ\a\STX\r\DC2\EOT\140\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\138\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\140\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\138\ACK\b\n\ + \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\140\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SO\DC2\EOT\139\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\SO\DC2\EOT\141\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\139\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\141\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\139\ACK\b\n\ + \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\141\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SI\DC2\EOT\140\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\SI\DC2\EOT\142\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\140\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\142\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\140\ACK\v\f\n\ + \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\142\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX\DLE\DC2\EOT\141\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\DLE\DC2\EOT\143\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\141\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\143\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\141\ACK\f\r\n\ + \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\143\ACK\f\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC1\DC2\EOT\142\ACK\STX\DC4\n\ + \\EOT\ENQ\a\STX\DC1\DC2\EOT\144\ACK\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\142\ACK\STX\SO\n\ + \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\144\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\142\ACK\DC1\DC3\n\ + \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\144\ACK\DC1\DC3\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC2\DC2\EOT\143\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX\DC2\DC2\EOT\145\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\143\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\145\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\143\ACK\SI\DLE\n\ + \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\145\ACK\SI\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC3\DC2\EOT\144\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\DC3\DC2\EOT\146\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\144\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\146\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\144\ACK\b\n\ + \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\146\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC4\DC2\EOT\145\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\DC4\DC2\EOT\147\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\145\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\147\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\145\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\147\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\NAK\DC2\EOT\146\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\NAK\DC2\EOT\148\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\146\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\148\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\146\ACK\t\n\ + \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\148\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SYN\DC2\EOT\147\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SYN\DC2\EOT\149\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\147\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\149\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\147\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\149\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETB\DC2\EOT\148\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ETB\DC2\EOT\150\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\148\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\150\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\148\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\150\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\CAN\DC2\EOT\149\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\CAN\DC2\EOT\151\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\149\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\151\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\149\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\151\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\EM\DC2\EOT\150\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\EM\DC2\EOT\152\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\150\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\152\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\150\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\152\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\SUB\DC2\EOT\151\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SUB\DC2\EOT\153\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\151\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\153\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\151\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\153\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ESC\DC2\EOT\152\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\ESC\DC2\EOT\154\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\152\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\154\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\152\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\154\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\FS\DC2\EOT\153\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\FS\DC2\EOT\155\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\153\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\155\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\153\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\155\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\GS\DC2\EOT\154\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\GS\DC2\EOT\156\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\154\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\156\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\154\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\156\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\RS\DC2\EOT\155\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\RS\DC2\EOT\157\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\155\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\157\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\155\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\157\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\US\DC2\EOT\156\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX\US\DC2\EOT\158\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\156\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\158\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\156\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\158\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX \DC2\EOT\157\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX \DC2\EOT\159\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX \SOH\DC2\EOT\157\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX \SOH\DC2\EOT\159\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX \STX\DC2\EOT\157\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX \STX\DC2\EOT\159\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX!\DC2\EOT\158\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX!\DC2\EOT\160\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\158\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\160\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\STX\DC2\EOT\158\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX!\STX\DC2\EOT\160\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\"\DC2\EOT\159\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\"\DC2\EOT\161\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\159\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\161\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\159\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\161\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX#\DC2\EOT\160\ACK\STX\n\ + \\EOT\ENQ\a\STX#\DC2\EOT\162\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\160\ACK\STX\EOT\n\ + \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\162\ACK\STX\EOT\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\STX\DC2\EOT\160\ACK\a\t\n\ + \\ENQ\ENQ\a\STX#\STX\DC2\EOT\162\ACK\a\t\n\ \\f\n\ - \\EOT\ENQ\a\STX$\DC2\EOT\161\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX$\DC2\EOT\163\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\161\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\163\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\STX\DC2\EOT\161\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX$\STX\DC2\EOT\163\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX%\DC2\EOT\162\ACK\STX\r\n\ + \\EOT\ENQ\a\STX%\DC2\EOT\164\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\162\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\164\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\STX\DC2\EOT\162\ACK\v\f\n\ + \\ENQ\ENQ\a\STX%\STX\DC2\EOT\164\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX&\DC2\EOT\163\ACK\STX\f\n\ + \\EOT\ENQ\a\STX&\DC2\EOT\165\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\163\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\165\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\STX\DC2\EOT\163\ACK\t\v\n\ + \\ENQ\ENQ\a\STX&\STX\DC2\EOT\165\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX'\DC2\EOT\164\ACK\STX\f\n\ + \\EOT\ENQ\a\STX'\DC2\EOT\166\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\164\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\166\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\STX\DC2\EOT\164\ACK\t\v\n\ + \\ENQ\ENQ\a\STX'\STX\DC2\EOT\166\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX(\DC2\EOT\165\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX(\DC2\EOT\167\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\165\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\167\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\STX\DC2\EOT\165\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX(\STX\DC2\EOT\167\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX)\DC2\EOT\166\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX)\DC2\EOT\168\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\166\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\168\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\STX\DC2\EOT\166\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX)\STX\DC2\EOT\168\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX*\DC2\EOT\167\ACK\STX\r\n\ + \\EOT\ENQ\a\STX*\DC2\EOT\169\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\167\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\169\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\STX\DC2\EOT\167\ACK\n\ + \\ENQ\ENQ\a\STX*\STX\DC2\EOT\169\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX+\DC2\EOT\168\ACK\STX\v\n\ + \\EOT\ENQ\a\STX+\DC2\EOT\170\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\168\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\170\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\STX\DC2\EOT\168\ACK\b\n\ + \\ENQ\ENQ\a\STX+\STX\DC2\EOT\170\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX,\DC2\EOT\169\ACK\STX\t\n\ + \\EOT\ENQ\a\STX,\DC2\EOT\171\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\169\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\171\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\STX\DC2\EOT\169\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX,\STX\DC2\EOT\171\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX-\DC2\EOT\170\ACK\STX\f\n\ + \\EOT\ENQ\a\STX-\DC2\EOT\172\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\170\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\172\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\STX\DC2\EOT\170\ACK\t\v\n\ + \\ENQ\ENQ\a\STX-\STX\DC2\EOT\172\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX.\DC2\EOT\171\ACK\STX\v\n\ + \\EOT\ENQ\a\STX.\DC2\EOT\173\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\171\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\173\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\STX\DC2\EOT\171\ACK\t\n\ + \\ENQ\ENQ\a\STX.\STX\DC2\EOT\173\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX/\DC2\EOT\172\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX/\DC2\EOT\174\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\172\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\174\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\STX\DC2\EOT\172\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX/\STX\DC2\EOT\174\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX0\DC2\EOT\173\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STX0\DC2\EOT\175\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\173\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\175\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\STX\DC2\EOT\173\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STX0\STX\DC2\EOT\175\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STX1\DC2\EOT\174\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX1\DC2\EOT\176\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\174\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\176\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\STX\DC2\EOT\174\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX1\STX\DC2\EOT\176\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX2\DC2\EOT\175\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX2\DC2\EOT\177\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\175\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\177\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\STX\DC2\EOT\175\ACK\v\r\n\ + \\ENQ\ENQ\a\STX2\STX\DC2\EOT\177\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX3\DC2\EOT\176\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX3\DC2\EOT\178\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\176\ACK\STX\n\ + \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\178\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\STX\DC2\EOT\176\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STX3\STX\DC2\EOT\178\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX4\DC2\EOT\177\ACK\STX\r\n\ + \\EOT\ENQ\a\STX4\DC2\EOT\179\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\177\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\179\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\STX\DC2\EOT\177\ACK\v\f\n\ + \\ENQ\ENQ\a\STX4\STX\DC2\EOT\179\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX5\DC2\EOT\178\ACK\STX\r\n\ + \\EOT\ENQ\a\STX5\DC2\EOT\180\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\178\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\180\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\STX\DC2\EOT\178\ACK\n\ + \\ENQ\ENQ\a\STX5\STX\DC2\EOT\180\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX6\DC2\EOT\179\ACK\STX\f\n\ + \\EOT\ENQ\a\STX6\DC2\EOT\181\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\179\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\181\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\STX\DC2\EOT\179\ACK\t\v\n\ + \\ENQ\ENQ\a\STX6\STX\DC2\EOT\181\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX7\DC2\EOT\180\ACK\STX\f\n\ + \\EOT\ENQ\a\STX7\DC2\EOT\182\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\180\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\182\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\STX\DC2\EOT\180\ACK\t\v\n\ + \\ENQ\ENQ\a\STX7\STX\DC2\EOT\182\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX8\DC2\EOT\181\ACK\STX\v\n\ + \\EOT\ENQ\a\STX8\DC2\EOT\183\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\181\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\183\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\STX\DC2\EOT\181\ACK\b\n\ + \\ENQ\ENQ\a\STX8\STX\DC2\EOT\183\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX9\DC2\EOT\182\ACK\STX\r\n\ + \\EOT\ENQ\a\STX9\DC2\EOT\184\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\182\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\184\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\STX\DC2\EOT\182\ACK\t\f\n\ + \\ENQ\ENQ\a\STX9\STX\DC2\EOT\184\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STX:\DC2\EOT\183\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX:\DC2\EOT\185\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\183\ACK\STX\n\ + \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\185\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\STX\DC2\EOT\183\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX:\STX\DC2\EOT\185\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX;\DC2\EOT\184\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX;\DC2\EOT\186\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\184\ACK\STX\n\ + \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\186\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\STX\DC2\EOT\184\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX;\STX\DC2\EOT\186\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX<\DC2\EOT\185\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX<\DC2\EOT\187\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\185\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\187\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\STX\DC2\EOT\185\ACK\v\r\n\ + \\ENQ\ENQ\a\STX<\STX\DC2\EOT\187\ACK\v\r\n\ \(\n\ - \\EOT\ENQ\a\STX=\DC2\EOT\186\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ + \\EOT\ENQ\a\STX=\DC2\EOT\188\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\186\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\188\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\STX\DC2\EOT\186\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX=\STX\DC2\EOT\188\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX>\DC2\EOT\187\ACK\STX\v\n\ + \\EOT\ENQ\a\STX>\DC2\EOT\189\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\187\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\189\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\STX\DC2\EOT\187\ACK\b\n\ + \\ENQ\ENQ\a\STX>\STX\DC2\EOT\189\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX?\DC2\EOT\188\ACK\STX\r\n\ + \\EOT\ENQ\a\STX?\DC2\EOT\190\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\188\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\190\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\STX\DC2\EOT\188\ACK\n\ + \\ENQ\ENQ\a\STX?\STX\DC2\EOT\190\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX@\DC2\EOT\189\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STX@\DC2\EOT\191\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\189\ACK\STX\r\n\ + \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\191\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\STX\DC2\EOT\189\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STX@\STX\DC2\EOT\191\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXA\DC2\EOT\190\ACK\STX\NAK\n\ + \\EOT\ENQ\a\STXA\DC2\EOT\192\ACK\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\190\ACK\STX\SI\n\ + \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\192\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\STX\DC2\EOT\190\ACK\DC2\DC4\n\ + \\ENQ\ENQ\a\STXA\STX\DC2\EOT\192\ACK\DC2\DC4\n\ \\f\n\ - \\EOT\ENQ\a\STXB\DC2\EOT\191\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXB\DC2\EOT\193\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\191\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\193\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\STX\DC2\EOT\191\ACK\v\r\n\ + \\ENQ\ENQ\a\STXB\STX\DC2\EOT\193\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXC\DC2\EOT\192\ACK\STX\v\n\ + \\EOT\ENQ\a\STXC\DC2\EOT\194\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\192\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\194\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\STX\DC2\EOT\192\ACK\b\n\ + \\ENQ\ENQ\a\STXC\STX\DC2\EOT\194\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXD\DC2\EOT\193\ACK\STX\r\n\ + \\EOT\ENQ\a\STXD\DC2\EOT\195\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\193\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\195\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\STX\DC2\EOT\193\ACK\n\ + \\ENQ\ENQ\a\STXD\STX\DC2\EOT\195\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STXE\DC2\EOT\194\ACK\STX\f\n\ + \\EOT\ENQ\a\STXE\DC2\EOT\196\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\194\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\196\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\STX\DC2\EOT\194\ACK\t\v\n\ + \\ENQ\ENQ\a\STXE\STX\DC2\EOT\196\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXF\DC2\EOT\195\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXF\DC2\EOT\197\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\195\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\197\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\STX\DC2\EOT\195\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXF\STX\DC2\EOT\197\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXG\DC2\EOT\196\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXG\DC2\EOT\198\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\196\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\198\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\STX\DC2\EOT\196\ACK\v\r\n\ + \\ENQ\ENQ\a\STXG\STX\DC2\EOT\198\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXH\DC2\EOT\197\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STXH\DC2\EOT\199\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\197\ACK\STX\n\ + \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\199\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\STX\DC2\EOT\197\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STXH\STX\DC2\EOT\199\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STXI\DC2\EOT\198\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXI\DC2\EOT\200\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\198\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\200\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\STX\DC2\EOT\198\ACK\v\r\n\ + \\ENQ\ENQ\a\STXI\STX\DC2\EOT\200\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXJ\DC2\EOT\199\ACK\STX\t\n\ + \\EOT\ENQ\a\STXJ\DC2\EOT\201\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\199\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\201\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\199\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\201\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STXK\DC2\EOT\200\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXK\DC2\EOT\202\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\200\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\202\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\STX\DC2\EOT\200\ACK\v\r\n\ + \\ENQ\ENQ\a\STXK\STX\DC2\EOT\202\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXL\DC2\EOT\201\ACK\STX\f\n\ + \\EOT\ENQ\a\STXL\DC2\EOT\203\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\201\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\203\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\STX\DC2\EOT\201\ACK\t\v\n\ + \\ENQ\ENQ\a\STXL\STX\DC2\EOT\203\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXM\DC2\EOT\202\ACK\STX\r\n\ + \\EOT\ENQ\a\STXM\DC2\EOT\204\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\202\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\204\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\STX\DC2\EOT\202\ACK\n\ + \\ENQ\ENQ\a\STXM\STX\DC2\EOT\204\ACK\n\ \\f\n\ \2\n\ - \\EOT\ENQ\a\STXN\DC2\EOT\203\ACK\STX\SO\"$ Internal language for testing SCIP\n\ + \\EOT\ENQ\a\STXN\DC2\EOT\205\ACK\STX\SO\"$ Internal language for testing SCIP\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\203\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\205\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\STX\DC2\EOT\203\ACK\n\ + \\ENQ\ENQ\a\STXN\STX\DC2\EOT\205\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STXO\DC2\EOT\204\ACK\STX\f\n\ + \\EOT\ENQ\a\STXO\DC2\EOT\206\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\204\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\206\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\STX\DC2\EOT\204\ACK\t\v\n\ + \\ENQ\ENQ\a\STXO\STX\DC2\EOT\206\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXP\DC2\EOT\205\ACK\STX\f\n\ + \\EOT\ENQ\a\STXP\DC2\EOT\207\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\205\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\207\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\STX\DC2\EOT\205\ACK\t\v\n\ + \\ENQ\ENQ\a\STXP\STX\DC2\EOT\207\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXQ\DC2\EOT\206\ACK\STX\f\n\ + \\EOT\ENQ\a\STXQ\DC2\EOT\208\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\206\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\208\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\206\ACK\t\v\n\ + \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\208\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXR\DC2\EOT\207\ACK\STX\v\n\ + \\EOT\ENQ\a\STXR\DC2\EOT\209\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\209\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\STX\DC2\EOT\207\ACK\b\n\ + \\ENQ\ENQ\a\STXR\STX\DC2\EOT\209\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXS\DC2\EOT\208\ACK\STX\f\n\ + \\EOT\ENQ\a\STXS\DC2\EOT\210\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\208\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\210\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\STX\DC2\EOT\208\ACK\t\v\n\ + \\ENQ\ENQ\a\STXS\STX\DC2\EOT\210\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXT\DC2\EOT\209\ACK\STX\v\n\ + \\EOT\ENQ\a\STXT\DC2\EOT\211\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\209\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\211\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\STX\DC2\EOT\209\ACK\b\n\ + \\ENQ\ENQ\a\STXT\STX\DC2\EOT\211\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXU\DC2\EOT\210\ACK\STX\v\n\ + \\EOT\ENQ\a\STXU\DC2\EOT\212\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\210\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\212\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\STX\DC2\EOT\210\ACK\b\n\ + \\ENQ\ENQ\a\STXU\STX\DC2\EOT\212\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXV\DC2\EOT\211\ACK\STX\f\n\ + \\EOT\ENQ\a\STXV\DC2\EOT\213\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\211\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\213\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\STX\DC2\EOT\211\ACK\t\v\n\ + \\ENQ\ENQ\a\STXV\STX\DC2\EOT\213\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXW\DC2\EOT\212\ACK\STX\f\n\ + \\EOT\ENQ\a\STXW\DC2\EOT\214\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\212\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\214\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\STX\DC2\EOT\212\ACK\n\ + \\ENQ\ENQ\a\STXW\STX\DC2\EOT\214\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STXX\DC2\EOT\213\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXX\DC2\EOT\215\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\213\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\215\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\STX\DC2\EOT\213\ACK\v\r\n\ + \\ENQ\ENQ\a\STXX\STX\DC2\EOT\215\ACK\v\r\n\ \\DC4\n\ - \\EOT\ENQ\a\STXY\DC2\EOT\214\ACK\STX\DC3\"\ACK Bash\n\ + \\EOT\ENQ\a\STXY\DC2\EOT\216\ACK\STX\DC3\"\ACK Bash\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\214\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\216\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\STX\DC2\EOT\214\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXY\STX\DC2\EOT\216\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXZ\DC2\EOT\215\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXZ\DC2\EOT\217\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\215\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\217\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\215\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\217\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX[\DC2\EOT\216\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX[\DC2\EOT\218\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\216\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\218\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\STX\DC2\EOT\216\ACK\n\ + \\ENQ\ENQ\a\STX[\STX\DC2\EOT\218\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\\\DC2\EOT\217\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\\\DC2\EOT\219\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\217\ACK\STX\n\ + \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\219\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\217\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\219\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX]\DC2\EOT\218\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX]\DC2\EOT\220\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\218\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\220\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\STX\DC2\EOT\218\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX]\STX\DC2\EOT\220\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX^\DC2\EOT\219\ACK\STX\f\n\ + \\EOT\ENQ\a\STX^\DC2\EOT\221\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\219\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\221\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\STX\DC2\EOT\219\ACK\n\ + \\ENQ\ENQ\a\STX^\STX\DC2\EOT\221\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STX_\DC2\EOT\220\ACK\STX\f\n\ + \\EOT\ENQ\a\STX_\DC2\EOT\222\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\220\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\222\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\STX\DC2\EOT\220\ACK\b\v\n\ + \\ENQ\ENQ\a\STX_\STX\DC2\EOT\222\ACK\b\v\n\ \\f\n\ - \\EOT\ENQ\a\STX`\DC2\EOT\221\ACK\STX\f\n\ + \\EOT\ENQ\a\STX`\DC2\EOT\223\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\221\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\223\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\STX\DC2\EOT\221\ACK\t\v\n\ + \\ENQ\ENQ\a\STX`\STX\DC2\EOT\223\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXa\DC2\EOT\222\ACK\STX\v\n\ + \\EOT\ENQ\a\STXa\DC2\EOT\224\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\222\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\224\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\STX\DC2\EOT\222\ACK\b\n\ + \\ENQ\ENQ\a\STXa\STX\DC2\EOT\224\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXb\DC2\EOT\223\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXb\DC2\EOT\225\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\223\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\225\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\STX\DC2\EOT\223\ACK\v\SO\n\ + \\ENQ\ENQ\a\STXb\STX\DC2\EOT\225\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXc\DC2\EOT\224\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXc\DC2\EOT\226\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\224\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\226\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\STX\DC2\EOT\224\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXc\STX\DC2\EOT\226\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXd\DC2\EOT\225\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STXd\DC2\EOT\227\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\225\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\227\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\STX\DC2\EOT\225\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STXd\STX\DC2\EOT\227\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STXe\DC2\EOT\226\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STXe\DC2\EOT\228\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\226\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\228\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\STX\DC2\EOT\226\ACK\f\SI\n\ + \\ENQ\ENQ\a\STXe\STX\DC2\EOT\228\ACK\f\SI\n\ \\f\n\ - \\EOT\ENQ\a\STXf\DC2\EOT\227\ACK\STX\r\n\ + \\EOT\ENQ\a\STXf\DC2\EOT\229\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\227\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\229\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\STX\DC2\EOT\227\ACK\t\f\n\ + \\ENQ\ENQ\a\STXf\STX\DC2\EOT\229\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STXg\DC2\EOT\228\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STXg\DC2\EOT\230\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\228\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\230\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\STX\DC2\EOT\228\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXg\STX\DC2\EOT\230\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXh\DC2\EOT\229\ACK\STX\v\n\ + \\EOT\ENQ\a\STXh\DC2\EOT\231\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\231\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\STX\DC2\EOT\229\ACK\b\n\ + \\ENQ\ENQ\a\STXh\STX\DC2\EOT\231\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXi\DC2\EOT\230\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXi\DC2\EOT\232\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\230\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\232\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\STX\DC2\EOT\230\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXi\STX\DC2\EOT\232\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXj\DC2\EOT\231\ACK\STX\v\n\ + \\EOT\ENQ\a\STXj\DC2\EOT\233\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\231\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\233\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\STX\DC2\EOT\231\ACK\b\n\ + \\ENQ\ENQ\a\STXj\STX\DC2\EOT\233\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXk\DC2\EOT\232\ACK\STX\v\n\ + \\EOT\ENQ\a\STXk\DC2\EOT\234\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\232\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\234\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\STX\DC2\EOT\232\ACK\b\n\ + \\ENQ\ENQ\a\STXk\STX\DC2\EOT\234\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXl\DC2\EOT\233\ACK\STX\f\n\ + \\EOT\ENQ\a\STXl\DC2\EOT\235\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\233\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\235\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\STX\DC2\EOT\233\ACK\t\v\n\ + \\ENQ\ENQ\a\STXl\STX\DC2\EOT\235\ACK\t\v\n\ \\147\ETX\n\ - \\EOT\ENQ\a\STXm\DC2\EOT\234\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ + \\EOT\ENQ\a\STXm\DC2\EOT\236\ACK\STX\v\"\132\ETX NextLanguage = 111;\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\ @@ -9166,7 +9182,7 @@ packedFileDescriptor \ 5. (optional) Add a brief comment behind the language if the name is not self-explanatory\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\234\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\236\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\STX\DC2\EOT\234\ACK\b\n\ + \\ENQ\ENQ\a\STXm\STX\DC2\EOT\236\ACK\b\n\ \b\ACKproto3" \ No newline at end of file diff --git a/bindings/rust/Cargo.lock b/bindings/rust/Cargo.lock index afe072d6..6882fc94 100644 --- a/bindings/rust/Cargo.lock +++ b/bindings/rust/Cargo.lock @@ -65,9 +65,9 @@ dependencies = [ [[package]] name = "protobuf" -version = "3.2.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e" +checksum = "a3a7c64d9bf75b1b8d981124c14c179074e8caa7dfe7b6a12e6222ddcd0c8f72" dependencies = [ "once_cell", "protobuf-support", @@ -76,9 +76,9 @@ dependencies = [ [[package]] name = "protobuf-support" -version = "3.2.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372" +checksum = "b088fd20b938a875ea00843b6faf48579462630015c3788d397ad6a786663252" dependencies = [ "thiserror", ] @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "scip" -version = "0.3.1" +version = "0.5.1" dependencies = [ "pretty_assertions", "protobuf", diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 3e98c1bc..287a551a 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -1769,6 +1769,8 @@ pub mod symbol_information { Boolean = 6, // @@protoc_insertion_point(enum_value:scip.SymbolInformation.Kind.Class) Class = 7, + // @@protoc_insertion_point(enum_value:scip.SymbolInformation.Kind.Concept) + Concept = 86, // @@protoc_insertion_point(enum_value:scip.SymbolInformation.Kind.Constant) Constant = 8, // @@protoc_insertion_point(enum_value:scip.SymbolInformation.Kind.Constructor) @@ -1940,6 +1942,7 @@ pub mod symbol_information { 5 => ::std::option::Option::Some(Kind::Axiom), 6 => ::std::option::Option::Some(Kind::Boolean), 7 => ::std::option::Option::Some(Kind::Class), + 86 => ::std::option::Option::Some(Kind::Concept), 8 => ::std::option::Option::Some(Kind::Constant), 9 => ::std::option::Option::Some(Kind::Constructor), 62 => ::std::option::Option::Some(Kind::Contract), @@ -2031,6 +2034,7 @@ pub mod symbol_information { "Axiom" => ::std::option::Option::Some(Kind::Axiom), "Boolean" => ::std::option::Option::Some(Kind::Boolean), "Class" => ::std::option::Option::Some(Kind::Class), + "Concept" => ::std::option::Option::Some(Kind::Concept), "Constant" => ::std::option::Option::Some(Kind::Constant), "Constructor" => ::std::option::Option::Some(Kind::Constructor), "Contract" => ::std::option::Option::Some(Kind::Contract), @@ -2121,6 +2125,7 @@ pub mod symbol_information { Kind::Axiom, Kind::Boolean, Kind::Class, + Kind::Concept, Kind::Constant, Kind::Constructor, Kind::Contract, @@ -2217,81 +2222,82 @@ pub mod symbol_information { Kind::Axiom => 7, Kind::Boolean => 8, Kind::Class => 9, - Kind::Constant => 10, - Kind::Constructor => 11, - Kind::Contract => 12, - Kind::DataFamily => 13, - Kind::Delegate => 14, - Kind::Enum => 15, - Kind::EnumMember => 16, - Kind::Error => 17, - Kind::Event => 18, - Kind::Extension => 19, - Kind::Fact => 20, - Kind::Field => 21, - Kind::File => 22, - Kind::Function => 23, - Kind::Getter => 24, - Kind::Grammar => 25, - Kind::Instance => 26, - Kind::Interface => 27, - Kind::Key => 28, - Kind::Lang => 29, - Kind::Lemma => 30, - Kind::Library => 31, - Kind::Macro => 32, - Kind::Method => 33, - Kind::MethodAlias => 34, - Kind::MethodReceiver => 35, - Kind::MethodSpecification => 36, - Kind::Message => 37, - Kind::Mixin => 38, - Kind::Modifier => 39, - Kind::Module => 40, - Kind::Namespace => 41, - Kind::Null => 42, - Kind::Number => 43, - Kind::Object => 44, - Kind::Operator => 45, - Kind::Package => 46, - Kind::PackageObject => 47, - Kind::Parameter => 48, - Kind::ParameterLabel => 49, - Kind::Pattern => 50, - Kind::Predicate => 51, - Kind::Property => 52, - Kind::Protocol => 53, - Kind::ProtocolMethod => 54, - Kind::PureVirtualMethod => 55, - Kind::Quasiquoter => 56, - Kind::SelfParameter => 57, - Kind::Setter => 58, - Kind::Signature => 59, - Kind::SingletonClass => 60, - Kind::SingletonMethod => 61, - Kind::StaticDataMember => 62, - Kind::StaticEvent => 63, - Kind::StaticField => 64, - Kind::StaticMethod => 65, - Kind::StaticProperty => 66, - Kind::StaticVariable => 67, - Kind::String => 68, - Kind::Struct => 69, - Kind::Subscript => 70, - Kind::Tactic => 71, - Kind::Theorem => 72, - Kind::ThisParameter => 73, - Kind::Trait => 74, - Kind::TraitMethod => 75, - Kind::Type => 76, - Kind::TypeAlias => 77, - Kind::TypeClass => 78, - Kind::TypeClassMethod => 79, - Kind::TypeFamily => 80, - Kind::TypeParameter => 81, - Kind::Union => 82, - Kind::Value => 83, - Kind::Variable => 84, + Kind::Concept => 10, + Kind::Constant => 11, + Kind::Constructor => 12, + Kind::Contract => 13, + Kind::DataFamily => 14, + Kind::Delegate => 15, + Kind::Enum => 16, + Kind::EnumMember => 17, + Kind::Error => 18, + Kind::Event => 19, + Kind::Extension => 20, + Kind::Fact => 21, + Kind::Field => 22, + Kind::File => 23, + Kind::Function => 24, + Kind::Getter => 25, + Kind::Grammar => 26, + Kind::Instance => 27, + Kind::Interface => 28, + Kind::Key => 29, + Kind::Lang => 30, + Kind::Lemma => 31, + Kind::Library => 32, + Kind::Macro => 33, + Kind::Method => 34, + Kind::MethodAlias => 35, + Kind::MethodReceiver => 36, + Kind::MethodSpecification => 37, + Kind::Message => 38, + Kind::Mixin => 39, + Kind::Modifier => 40, + Kind::Module => 41, + Kind::Namespace => 42, + Kind::Null => 43, + Kind::Number => 44, + Kind::Object => 45, + Kind::Operator => 46, + Kind::Package => 47, + Kind::PackageObject => 48, + Kind::Parameter => 49, + Kind::ParameterLabel => 50, + Kind::Pattern => 51, + Kind::Predicate => 52, + Kind::Property => 53, + Kind::Protocol => 54, + Kind::ProtocolMethod => 55, + Kind::PureVirtualMethod => 56, + Kind::Quasiquoter => 57, + Kind::SelfParameter => 58, + Kind::Setter => 59, + Kind::Signature => 60, + Kind::SingletonClass => 61, + Kind::SingletonMethod => 62, + Kind::StaticDataMember => 63, + Kind::StaticEvent => 64, + Kind::StaticField => 65, + Kind::StaticMethod => 66, + Kind::StaticProperty => 67, + Kind::StaticVariable => 68, + Kind::String => 69, + Kind::Struct => 70, + Kind::Subscript => 71, + Kind::Tactic => 72, + Kind::Theorem => 73, + Kind::ThisParameter => 74, + Kind::Trait => 75, + Kind::TraitMethod => 76, + Kind::Type => 77, + Kind::TypeAlias => 78, + Kind::TypeClass => 79, + Kind::TypeClassMethod => 80, + Kind::TypeFamily => 81, + Kind::TypeParameter => 82, + Kind::Union => 83, + Kind::Value => 84, + Kind::Variable => 85, }; Self::enum_descriptor().value_by_index(index) } @@ -4533,241 +4539,242 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x1a\x02\x08\x01\x12\x08\n\x04Type\x10\x02\x12\x08\n\x04Term\x10\x03\x12\ \n\n\x06Method\x10\x04\x12\x11\n\rTypeParameter\x10\x05\x12\r\n\tParamet\ er\x10\x06\x12\x08\n\x04Meta\x10\x07\x12\t\n\x05Local\x10\x08\x12\t\n\ - \x05Macro\x10\t\x1a\x02\x10\x01\"\xc5\x0c\n\x11SymbolInformation\x12\x16\ + \x05Macro\x10\t\x1a\x02\x10\x01\"\xd2\x0c\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\x120\n\x04kind\x18\x05\x20\x01(\ \x0e2\x1c.scip.SymbolInformation.KindR\x04kind\x12!\n\x0cdisplay_name\ \x18\x06\x20\x01(\tR\x0bdisplayName\x12G\n\x17signature_documentation\ \x18\x07\x20\x01(\x0b2\x0e.scip.DocumentR\x16signatureDocumentation\x12)\ - \n\x10enclosing_symbol\x18\x08\x20\x01(\tR\x0fenclosingSymbol\"\xee\t\n\ + \n\x10enclosing_symbol\x18\x08\x20\x01(\tR\x0fenclosingSymbol\"\xfb\t\n\ \x04Kind\x12\x13\n\x0fUnspecifiedKind\x10\0\x12\x12\n\x0eAbstractMethod\ \x10B\x12\x0c\n\x08Accessor\x10H\x12\t\n\x05Array\x10\x01\x12\r\n\tAsser\ tion\x10\x02\x12\x12\n\x0eAssociatedType\x10\x03\x12\r\n\tAttribute\x10\ \x04\x12\t\n\x05Axiom\x10\x05\x12\x0b\n\x07Boolean\x10\x06\x12\t\n\x05Cl\ - ass\x10\x07\x12\x0c\n\x08Constant\x10\x08\x12\x0f\n\x0bConstructor\x10\t\ - \x12\x0c\n\x08Contract\x10>\x12\x0e\n\nDataFamily\x10\n\x12\x0c\n\x08Del\ - egate\x10I\x12\x08\n\x04Enum\x10\x0b\x12\x0e\n\nEnumMember\x10\x0c\x12\t\ - \n\x05Error\x10?\x12\t\n\x05Event\x10\r\x12\r\n\tExtension\x10T\x12\x08\ - \n\x04Fact\x10\x0e\x12\t\n\x05Field\x10\x0f\x12\x08\n\x04File\x10\x10\ - \x12\x0c\n\x08Function\x10\x11\x12\n\n\x06Getter\x10\x12\x12\x0b\n\x07Gr\ - ammar\x10\x13\x12\x0c\n\x08Instance\x10\x14\x12\r\n\tInterface\x10\x15\ - \x12\x07\n\x03Key\x10\x16\x12\x08\n\x04Lang\x10\x17\x12\t\n\x05Lemma\x10\ - \x18\x12\x0b\n\x07Library\x10@\x12\t\n\x05Macro\x10\x19\x12\n\n\x06Metho\ - d\x10\x1a\x12\x0f\n\x0bMethodAlias\x10J\x12\x12\n\x0eMethodReceiver\x10\ - \x1b\x12\x17\n\x13MethodSpecification\x10C\x12\x0b\n\x07Message\x10\x1c\ - \x12\t\n\x05Mixin\x10U\x12\x0c\n\x08Modifier\x10A\x12\n\n\x06Module\x10\ - \x1d\x12\r\n\tNamespace\x10\x1e\x12\x08\n\x04Null\x10\x1f\x12\n\n\x06Num\ - ber\x10\x20\x12\n\n\x06Object\x10!\x12\x0c\n\x08Operator\x10\"\x12\x0b\n\ - \x07Package\x10#\x12\x11\n\rPackageObject\x10$\x12\r\n\tParameter\x10%\ - \x12\x12\n\x0eParameterLabel\x10&\x12\x0b\n\x07Pattern\x10'\x12\r\n\tPre\ - dicate\x10(\x12\x0c\n\x08Property\x10)\x12\x0c\n\x08Protocol\x10*\x12\ - \x12\n\x0eProtocolMethod\x10D\x12\x15\n\x11PureVirtualMethod\x10E\x12\ - \x0f\n\x0bQuasiquoter\x10+\x12\x11\n\rSelfParameter\x10,\x12\n\n\x06Sett\ - er\x10-\x12\r\n\tSignature\x10.\x12\x12\n\x0eSingletonClass\x10K\x12\x13\ - \n\x0fSingletonMethod\x10L\x12\x14\n\x10StaticDataMember\x10M\x12\x0f\n\ - \x0bStaticEvent\x10N\x12\x0f\n\x0bStaticField\x10O\x12\x10\n\x0cStaticMe\ - thod\x10P\x12\x12\n\x0eStaticProperty\x10Q\x12\x12\n\x0eStaticVariable\ - \x10R\x12\n\n\x06String\x100\x12\n\n\x06Struct\x101\x12\r\n\tSubscript\ - \x10/\x12\n\n\x06Tactic\x102\x12\x0b\n\x07Theorem\x103\x12\x11\n\rThisPa\ - rameter\x104\x12\t\n\x05Trait\x105\x12\x0f\n\x0bTraitMethod\x10F\x12\x08\ - \n\x04Type\x106\x12\r\n\tTypeAlias\x107\x12\r\n\tTypeClass\x108\x12\x13\ - \n\x0fTypeClassMethod\x10G\x12\x0e\n\nTypeFamily\x109\x12\x11\n\rTypePar\ - ameter\x10:\x12\t\n\x05Union\x10;\x12\t\n\x05Value\x10<\x12\x0c\n\x08Var\ - iable\x10=\"\xc9\x01\n\x0cRelationship\x12\x16\n\x06symbol\x18\x01\x20\ - \x01(\tR\x06symbol\x12!\n\x0cis_reference\x18\x02\x20\x01(\x08R\x0bisRef\ - erence\x12+\n\x11is_implementation\x18\x03\x20\x01(\x08R\x10isImplementa\ - tion\x12,\n\x12is_type_definition\x18\x04\x20\x01(\x08R\x10isTypeDefinit\ - ion\x12#\n\ris_definition\x18\x05\x20\x01(\x08R\x0cisDefinition\"\xa4\ - \x02\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\x15overrideDocumentation\x121\n\x0bsyntax_kind\x18\ - \x05\x20\x01(\x0e2\x10.scip.SyntaxKindR\nsyntaxKind\x122\n\x0bdiagnostic\ - s\x18\x06\x20\x03(\x0b2\x10.scip.DiagnosticR\x0bdiagnostics\x12'\n\x0fen\ - closing_range\x18\x07\x20\x03(\x05R\x0eenclosingRange\"\xa7\x01\n\nDiagn\ - ostic\x12*\n\x08severity\x18\x01\x20\x01(\x0e2\x0e.scip.SeverityR\x08sev\ - erity\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\x0fProtocolVersion\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*\xa4\x01\n\x10Positi\ - onEncoding\x12\x1f\n\x1bUnspecifiedPositionEncoding\x10\0\x12#\n\x1fUTF8\ - CodeUnitOffsetFromLineStart\x10\x01\x12$\n\x20UTF16CodeUnitOffsetFromLin\ - eStart\x10\x02\x12$\n\x20UTF32CodeUnitOffsetFromLineStart\x10\x03*\x94\ - \x01\n\nSymbolRole\x12\x19\n\x15UnspecifiedSymbolRole\x10\0\x12\x0e\n\nD\ - efinition\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\x12\x15\n\x11ForwardDefinition\x10@*\xea\x06\n\nSyntaxK\ - ind\x12\x19\n\x15UnspecifiedSyntaxKind\x10\0\x12\x0b\n\x07Comment\x10\ - \x01\x12\x18\n\x14PunctuationDelimiter\x10\x02\x12\x16\n\x12PunctuationB\ - racket\x10\x03\x12\x0b\n\x07Keyword\x10\x04\x12\x19\n\x11IdentifierKeywo\ - rd\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\x0eIdentifierNull\x10\x08\x12\x16\n\x12IdentifierConstant\x10\t\ - \x12\x1b\n\x17IdentifierMutableGlobal\x10\n\x12\x17\n\x13IdentifierParam\ - eter\x10\x0b\x12\x13\n\x0fIdentifierLocal\x10\x0c\x12\x16\n\x12Identifie\ - rShadowed\x10\r\x12\x17\n\x13IdentifierNamespace\x10\x0e\x12\x18\n\x10Id\ - entifierModule\x10\x0e\x1a\x02\x08\x01\x12\x16\n\x12IdentifierFunction\ - \x10\x0f\x12\x20\n\x1cIdentifierFunctionDefinition\x10\x10\x12\x13\n\x0f\ - IdentifierMacro\x10\x11\x12\x1d\n\x19IdentifierMacroDefinition\x10\x12\ - \x12\x12\n\x0eIdentifierType\x10\x13\x12\x19\n\x15IdentifierBuiltinType\ - \x10\x14\x12\x17\n\x13IdentifierAttribute\x10\x15\x12\x0f\n\x0bRegexEsca\ - pe\x10\x16\x12\x11\n\rRegexRepeated\x10\x17\x12\x11\n\rRegexWildcard\x10\ - \x18\x12\x12\n\x0eRegexDelimiter\x10\x19\x12\r\n\tRegexJoin\x10\x1a\x12\ - \x11\n\rStringLiteral\x10\x1b\x12\x17\n\x13StringLiteralEscape\x10\x1c\ - \x12\x18\n\x14StringLiteralSpecial\x10\x1d\x12\x14\n\x10StringLiteralKey\ - \x10\x1e\x12\x14\n\x10CharacterLiteral\x10\x1f\x12\x12\n\x0eNumericLiter\ - al\x10\x20\x12\x12\n\x0eBooleanLiteral\x10!\x12\x07\n\x03Tag\x10\"\x12\ - \x10\n\x0cTagAttribute\x10#\x12\x10\n\x0cTagDelimiter\x10$\x1a\x02\x10\ - \x01*V\n\x08Severity\x12\x17\n\x13UnspecifiedSeverity\x10\0\x12\t\n\x05E\ - rror\x10\x01\x12\x0b\n\x07Warning\x10\x02\x12\x0f\n\x0bInformation\x10\ - \x03\x12\x08\n\x04Hint\x10\x04*N\n\rDiagnosticTag\x12\x1c\n\x18Unspecifi\ - edDiagnosticTag\x10\0\x12\x0f\n\x0bUnnecessary\x10\x01\x12\x0e\n\nDeprec\ - ated\x10\x02*\x9b\n\n\x08Language\x12\x17\n\x13UnspecifiedLanguage\x10\0\ - \x12\x08\n\x04ABAP\x10<\x12\x08\n\x04Apex\x10`\x12\x07\n\x03APL\x101\x12\ - \x07\n\x03Ada\x10'\x12\x08\n\x04Agda\x10-\x12\x0c\n\x08AsciiDoc\x10V\x12\ - \x0c\n\x08Assembly\x10:\x12\x07\n\x03Awk\x10B\x12\x07\n\x03Bat\x10D\x12\ - \n\n\x06BibTeX\x10Q\x12\x05\n\x01C\x10\"\x12\t\n\x05COBOL\x10;\x12\x07\n\ - \x03CPP\x10#\x12\x07\n\x03CSS\x10\x1a\x12\n\n\x06CSharp\x10\x01\x12\x0b\ - \n\x07Clojure\x10\x08\x12\x10\n\x0cCoffeescript\x10\x15\x12\x0e\n\nCommo\ - nLisp\x10\t\x12\x07\n\x03Coq\x10/\x12\x08\n\x04CUDA\x10a\x12\x08\n\x04Da\ - rt\x10\x03\x12\n\n\x06Delphi\x109\x12\x08\n\x04Diff\x10X\x12\x0e\n\nDock\ - erfile\x10P\x12\n\n\x06Dyalog\x102\x12\n\n\x06Elixir\x10\x11\x12\n\n\x06\ - Erlang\x10\x12\x12\n\n\x06FSharp\x10*\x12\x08\n\x04Fish\x10A\x12\x08\n\ - \x04Flow\x10\x18\x12\x0b\n\x07Fortran\x108\x12\x0e\n\nGit_Commit\x10[\ - \x12\x0e\n\nGit_Config\x10Y\x12\x0e\n\nGit_Rebase\x10\\\x12\x06\n\x02Go\ - \x10!\x12\x0b\n\x07GraphQL\x10b\x12\n\n\x06Groovy\x10\x07\x12\x08\n\x04H\ - TML\x10\x1e\x12\x08\n\x04Hack\x10\x14\x12\x0e\n\nHandlebars\x10Z\x12\x0b\ - \n\x07Haskell\x10,\x12\t\n\x05Idris\x10.\x12\x07\n\x03Ini\x10H\x12\x05\n\ - \x01J\x103\x12\x08\n\x04JSON\x10K\x12\x08\n\x04Java\x10\x06\x12\x0e\n\nJ\ - avaScript\x10\x16\x12\x13\n\x0fJavaScriptReact\x10]\x12\x0b\n\x07Jsonnet\ - \x10L\x12\t\n\x05Julia\x107\x12\x0c\n\x08Justfile\x10m\x12\n\n\x06Kotlin\ - \x10\x04\x12\t\n\x05LaTeX\x10S\x12\x08\n\x04Lean\x100\x12\x08\n\x04Less\ - \x10\x1b\x12\x07\n\x03Lua\x10\x0c\x12\x08\n\x04Luau\x10l\x12\x0c\n\x08Ma\ - kefile\x10O\x12\x0c\n\x08Markdown\x10T\x12\n\n\x06Matlab\x104\x12\n\n\ - \x06Nickel\x10n\x12\x07\n\x03Nix\x10M\x12\t\n\x05OCaml\x10)\x12\x0f\n\ - \x0bObjective_C\x10$\x12\x11\n\rObjective_CPP\x10%\x12\n\n\x06Pascal\x10\ - c\x12\x07\n\x03PHP\x10\x13\x12\t\n\x05PLSQL\x10F\x12\x08\n\x04Perl\x10\r\ - \x12\x0e\n\nPowerShell\x10C\x12\n\n\x06Prolog\x10G\x12\x0c\n\x08Protobuf\ - \x10d\x12\n\n\x06Python\x10\x0f\x12\x05\n\x01R\x106\x12\n\n\x06Racket\ - \x10\x0b\x12\x08\n\x04Raku\x10\x0e\x12\t\n\x05Razor\x10>\x12\t\n\x05Repr\ - o\x10f\x12\x08\n\x04ReST\x10U\x12\x08\n\x04Ruby\x10\x10\x12\x08\n\x04Rus\ - t\x10(\x12\x07\n\x03SAS\x10=\x12\x08\n\x04SCSS\x10\x1d\x12\x07\n\x03SML\ - \x10+\x12\x07\n\x03SQL\x10E\x12\x08\n\x04Sass\x10\x1c\x12\t\n\x05Scala\ - \x10\x05\x12\n\n\x06Scheme\x10\n\x12\x0f\n\x0bShellScript\x10@\x12\x0b\n\ - \x07Skylark\x10N\x12\t\n\x05Slang\x10k\x12\x0c\n\x08Solidity\x10_\x12\n\ - \n\x06Svelte\x10j\x12\t\n\x05Swift\x10\x02\x12\x07\n\x03Tcl\x10e\x12\x08\ - \n\x04TOML\x10I\x12\x07\n\x03TeX\x10R\x12\n\n\x06Thrift\x10g\x12\x0e\n\n\ - TypeScript\x10\x17\x12\x13\n\x0fTypeScriptReact\x10^\x12\x0b\n\x07Verilo\ - g\x10h\x12\x08\n\x04VHDL\x10i\x12\x0f\n\x0bVisualBasic\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-gi\ - thub.com/sourcegraph/scip/bindings/go/scip/J\xce\xb8\x02\n\x07\x12\x05\n\ - \0\xf2\x06\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20ind\ - ex\x20contains\x20one\x20or\x20more\x20pieces\x20of\x20information\x20ab\ - out\x20a\x20given\x20piece\x20of\n\x20source\x20code\x20or\x20software\ - \x20artifact.\x20Complementary\x20information\x20can\x20be\x20merged\n\ - \x20together\x20from\x20multiple\x20sources\x20to\x20provide\x20a\x20uni\ - fied\x20code\x20intelligence\n\x20experience.\n\n\x20Programs\x20produci\ - ng\x20a\x20file\x20of\x20this\x20format\x20is\x20an\x20\"indexer\"\x20an\ - d\x20may\x20operate\n\x20somewhere\x20on\x20the\x20spectrum\x20between\ - \x20precision,\x20such\x20as\x20indexes\x20produced\x20by\n\x20compiler-\ - backed\x20indexers,\x20and\x20heurstics,\x20such\x20as\x20indexes\x20pro\ - duced\x20by\x20local\n\x20syntax-directed\x20analysis\x20for\x20scope\ - \x20rules.\n\n\x08\n\x01\x02\x12\x03\x0c\0\r\n\x08\n\x01\x08\x12\x03\x0e\ - \0D\n\t\n\x02\x08\x0b\x12\x03\x0e\0D\n\xd0\x03\n\x02\x04\0\x12\x04\x16\0\ - #\x01\x1a\xc3\x03\x20Index\x20represents\x20a\x20complete\x20SCIP\x20ind\ - ex\x20for\x20a\x20workspace\x20this\x20is\x20rooted\x20at\x20a\n\x20sing\ - le\x20directory.\x20An\x20Index\x20message\x20payload\x20can\x20have\x20\ - a\x20large\x20memory\x20footprint\n\x20and\x20it's\x20therefore\x20recom\ - mended\x20to\x20emit\x20and\x20consume\x20an\x20Index\x20payload\x20one\ - \x20field\n\x20value\x20at\x20a\x20time.\x20To\x20permit\x20streaming\ - \x20consumption\x20of\x20an\x20Index\x20payload,\x20the\n\x20`metadata`\ - \x20field\x20must\x20appear\x20at\x20the\x20start\x20of\x20the\x20stream\ - \x20and\x20must\x20only\x20appear\n\x20once\x20in\x20the\x20stream.\x20O\ - ther\x20field\x20values\x20may\x20appear\x20in\x20any\x20order.\n\n\n\n\ - \x03\x04\0\x01\x12\x03\x16\x08\r\n)\n\x04\x04\0\x02\0\x12\x03\x18\x02\ - \x18\x1a\x1c\x20Metadata\x20about\x20this\x20index.\n\n\x0c\n\x05\x04\0\ - \x02\0\x06\x12\x03\x18\x02\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x18\x0b\ - \x13\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x18\x16\x17\n3\n\x04\x04\0\x02\ - \x01\x12\x03\x1a\x02\"\x1a&\x20Documents\x20that\x20belong\x20to\x20this\ - \x20index.\n\n\x0c\n\x05\x04\0\x02\x01\x04\x12\x03\x1a\x02\n\n\x0c\n\x05\ - \x04\0\x02\x01\x06\x12\x03\x1a\x0b\x13\n\x0c\n\x05\x04\0\x02\x01\x01\x12\ - \x03\x1a\x14\x1d\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x1a\x20!\n\xf6\ - \x03\n\x04\x04\0\x02\x02\x12\x03\x20\x022\x1a\xe9\x02\x20(optional)\x20S\ - ymbols\x20that\x20are\x20referenced\x20from\x20this\x20index\x20but\x20a\ - re\x20defined\x20in\n\x20an\x20external\x20package\x20(a\x20separate\x20\ - `Index`\x20message).\x20Leave\x20this\x20field\x20empty\n\x20if\x20you\ - \x20assume\x20the\x20external\x20package\x20will\x20get\x20indexed\x20se\ - parately.\x20If\x20the\n\x20external\x20package\x20won't\x20get\x20index\ - ed\x20for\x20some\x20reason\x20then\x20you\x20can\x20use\x20this\n\x20fi\ - eld\x20to\x20provide\x20hover\x20documentation\x20for\x20those\x20extern\ - al\x20symbols.\n\"}\x20IMPORTANT:\x20When\x20adding\x20a\x20new\x20field\ - \x20to\x20`Index`\x20here,\x20add\x20a\x20matching\n\x20function\x20in\ - \x20`IndexVisitor`\x20and\x20update\x20`ParseStreaming`.\n\n\x0c\n\x05\ - \x04\0\x02\x02\x04\x12\x03\x20\x02\n\n\x0c\n\x05\x04\0\x02\x02\x06\x12\ - \x03\x20\x0b\x1c\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x20\x1d-\n\x0c\n\ - \x05\x04\0\x02\x02\x03\x12\x03\x2001\n\n\n\x02\x04\x01\x12\x04%\02\x01\n\ - \n\n\x03\x04\x01\x01\x12\x03%\x08\x10\nN\n\x04\x04\x01\x02\0\x12\x03'\ - \x02\x1e\x1aA\x20Which\x20version\x20of\x20this\x20protocol\x20was\x20us\ - ed\x20to\x20generate\x20this\x20index?\n\n\x0c\n\x05\x04\x01\x02\0\x06\ - \x12\x03'\x02\x11\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03'\x12\x19\n\x0c\n\ - \x05\x04\x01\x02\0\x03\x12\x03'\x1c\x1d\nC\n\x04\x04\x01\x02\x01\x12\x03\ - )\x02\x19\x1a6\x20Information\x20about\x20the\x20tool\x20that\x20produce\ - d\x20this\x20index.\n\n\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03)\x02\n\n\ - \x0c\n\x05\x04\x01\x02\x01\x01\x12\x03)\x0b\x14\n\x0c\n\x05\x04\x01\x02\ - \x01\x03\x12\x03)\x17\x18\n\xa2\x01\n\x04\x04\x01\x02\x02\x12\x03-\x02\ - \x1a\x1a\x94\x01\x20URI-encoded\x20absolute\x20path\x20to\x20the\x20root\ - \x20directory\x20of\x20this\x20index.\x20All\n\x20documents\x20in\x20thi\ - s\x20index\x20must\x20appear\x20in\x20a\x20subdirectory\x20of\x20this\ - \x20root\n\x20directory.\n\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03-\x02\ - \x08\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03-\t\x15\n\x0c\n\x05\x04\x01\ - \x02\x02\x03\x12\x03-\x18\x19\n\xe0\x01\n\x04\x04\x01\x02\x03\x12\x031\ - \x02*\x1a\xd2\x01\x20Text\x20encoding\x20of\x20the\x20source\x20files\ - \x20on\x20disk\x20that\x20are\x20referenced\x20from\n\x20`Document.relat\ - ive_path`.\x20This\x20value\x20is\x20unrelated\x20to\x20the\x20`Document\ - .text`\n\x20field,\x20which\x20is\x20a\x20Protobuf\x20string\x20and\x20h\ - ence\x20must\x20be\x20UTF-8\x20encoded.\n\n\x0c\n\x05\x04\x01\x02\x03\ - \x06\x12\x031\x02\x0e\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x031\x0f%\n\ - \x0c\n\x05\x04\x01\x02\x03\x03\x12\x031()\n\n\n\x02\x05\0\x12\x044\06\ - \x01\n\n\n\x03\x05\0\x01\x12\x034\x05\x14\n\x0b\n\x04\x05\0\x02\0\x12\ - \x035\x02!\n\x0c\n\x05\x05\0\x02\0\x01\x12\x035\x02\x1c\n\x0c\n\x05\x05\ - \0\x02\0\x02\x12\x035\x1f\x20\n\n\n\x02\x05\x01\x12\x048\0<\x01\n\n\n\ - \x03\x05\x01\x01\x12\x038\x05\x11\n\x0b\n\x04\x05\x01\x02\0\x12\x039\x02\ - \x1e\n\x0c\n\x05\x05\x01\x02\0\x01\x12\x039\x02\x19\n\x0c\n\x05\x05\x01\ - \x02\0\x02\x12\x039\x1c\x1d\n\x0b\n\x04\x05\x01\x02\x01\x12\x03:\x02\x0b\ - \n\x0c\n\x05\x05\x01\x02\x01\x01\x12\x03:\x02\x06\n\x0c\n\x05\x05\x01\ - \x02\x01\x02\x12\x03:\t\n\n\x0b\n\x04\x05\x01\x02\x02\x12\x03;\x02\x0c\n\ - \x0c\n\x05\x05\x01\x02\x02\x01\x12\x03;\x02\x07\n\x0c\n\x05\x05\x01\x02\ - \x02\x02\x12\x03;\n\x0b\n\n\n\x02\x04\x02\x12\x04>\0E\x01\n\n\n\x03\x04\ - \x02\x01\x12\x03>\x08\x10\n<\n\x04\x04\x02\x02\0\x12\x03@\x02\x12\x1a/\ - \x20Name\x20of\x20the\x20indexer\x20that\x20produced\x20this\x20index.\n\ - \n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03@\x02\x08\n\x0c\n\x05\x04\x02\x02\ - \0\x01\x12\x03@\t\r\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03@\x10\x11\n?\n\ - \x04\x04\x02\x02\x01\x12\x03B\x02\x15\x1a2\x20Version\x20of\x20the\x20in\ - dexer\x20that\x20produced\x20this\x20index.\n\n\x0c\n\x05\x04\x02\x02\ - \x01\x05\x12\x03B\x02\x08\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03B\t\x10\ - \n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03B\x13\x14\nL\n\x04\x04\x02\x02\ - \x02\x12\x03D\x02\x20\x1a?\x20Command-line\x20arguments\x20that\x20were\ - \x20used\x20to\x20invoke\x20this\x20indexer.\n\n\x0c\n\x05\x04\x02\x02\ - \x02\x04\x12\x03D\x02\n\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\x03D\x0b\x11\ - \n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03D\x12\x1b\n\x0c\n\x05\x04\x02\ - \x02\x02\x03\x12\x03D\x1e\x1f\nH\n\x02\x04\x03\x12\x04H\0u\x01\x1a<\x20D\ - ocument\x20defines\x20the\x20metadata\x20about\x20a\x20source\x20file\ - \x20on\x20disk.\n\n\n\n\x03\x04\x03\x01\x12\x03H\x08\x10\n\xa5\x02\n\x04\ - \x04\x03\x02\0\x12\x03M\x02\x16\x1a\x97\x02\x20The\x20string\x20ID\x20fo\ - r\x20the\x20programming\x20language\x20this\x20file\x20is\x20written\x20\ - in.\n\x20The\x20`Language`\x20enum\x20contains\x20the\x20names\x20of\x20\ - most\x20common\x20programming\x20languages.\n\x20This\x20field\x20is\x20\ - typed\x20as\x20a\x20string\x20to\x20permit\x20any\x20programming\x20lang\ - uage,\x20including\n\x20ones\x20that\x20are\x20not\x20specified\x20by\ - \x20the\x20`Language`\x20enum.\n\n\x0c\n\x05\x04\x03\x02\0\x05\x12\x03M\ - \x02\x08\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03M\t\x11\n\x0c\n\x05\x04\ - \x03\x02\0\x03\x12\x03M\x14\x15\n\xb5\x03\n\x04\x04\x03\x02\x01\x12\x03W\ - \x02\x1b\x1a\xa7\x03\x20(Required)\x20Unique\x20path\x20to\x20the\x20tex\ - t\x20document.\n\n\x201.\x20The\x20path\x20must\x20be\x20relative\x20to\ + ass\x10\x07\x12\x0b\n\x07Concept\x10V\x12\x0c\n\x08Constant\x10\x08\x12\ + \x0f\n\x0bConstructor\x10\t\x12\x0c\n\x08Contract\x10>\x12\x0e\n\nDataFa\ + mily\x10\n\x12\x0c\n\x08Delegate\x10I\x12\x08\n\x04Enum\x10\x0b\x12\x0e\ + \n\nEnumMember\x10\x0c\x12\t\n\x05Error\x10?\x12\t\n\x05Event\x10\r\x12\ + \r\n\tExtension\x10T\x12\x08\n\x04Fact\x10\x0e\x12\t\n\x05Field\x10\x0f\ + \x12\x08\n\x04File\x10\x10\x12\x0c\n\x08Function\x10\x11\x12\n\n\x06Gett\ + er\x10\x12\x12\x0b\n\x07Grammar\x10\x13\x12\x0c\n\x08Instance\x10\x14\ + \x12\r\n\tInterface\x10\x15\x12\x07\n\x03Key\x10\x16\x12\x08\n\x04Lang\ + \x10\x17\x12\t\n\x05Lemma\x10\x18\x12\x0b\n\x07Library\x10@\x12\t\n\x05M\ + acro\x10\x19\x12\n\n\x06Method\x10\x1a\x12\x0f\n\x0bMethodAlias\x10J\x12\ + \x12\n\x0eMethodReceiver\x10\x1b\x12\x17\n\x13MethodSpecification\x10C\ + \x12\x0b\n\x07Message\x10\x1c\x12\t\n\x05Mixin\x10U\x12\x0c\n\x08Modifie\ + r\x10A\x12\n\n\x06Module\x10\x1d\x12\r\n\tNamespace\x10\x1e\x12\x08\n\ + \x04Null\x10\x1f\x12\n\n\x06Number\x10\x20\x12\n\n\x06Object\x10!\x12\ + \x0c\n\x08Operator\x10\"\x12\x0b\n\x07Package\x10#\x12\x11\n\rPackageObj\ + ect\x10$\x12\r\n\tParameter\x10%\x12\x12\n\x0eParameterLabel\x10&\x12\ + \x0b\n\x07Pattern\x10'\x12\r\n\tPredicate\x10(\x12\x0c\n\x08Property\x10\ + )\x12\x0c\n\x08Protocol\x10*\x12\x12\n\x0eProtocolMethod\x10D\x12\x15\n\ + \x11PureVirtualMethod\x10E\x12\x0f\n\x0bQuasiquoter\x10+\x12\x11\n\rSelf\ + Parameter\x10,\x12\n\n\x06Setter\x10-\x12\r\n\tSignature\x10.\x12\x12\n\ + \x0eSingletonClass\x10K\x12\x13\n\x0fSingletonMethod\x10L\x12\x14\n\x10S\ + taticDataMember\x10M\x12\x0f\n\x0bStaticEvent\x10N\x12\x0f\n\x0bStaticFi\ + eld\x10O\x12\x10\n\x0cStaticMethod\x10P\x12\x12\n\x0eStaticProperty\x10Q\ + \x12\x12\n\x0eStaticVariable\x10R\x12\n\n\x06String\x100\x12\n\n\x06Stru\ + ct\x101\x12\r\n\tSubscript\x10/\x12\n\n\x06Tactic\x102\x12\x0b\n\x07Theo\ + rem\x103\x12\x11\n\rThisParameter\x104\x12\t\n\x05Trait\x105\x12\x0f\n\ + \x0bTraitMethod\x10F\x12\x08\n\x04Type\x106\x12\r\n\tTypeAlias\x107\x12\ + \r\n\tTypeClass\x108\x12\x13\n\x0fTypeClassMethod\x10G\x12\x0e\n\nTypeFa\ + mily\x109\x12\x11\n\rTypeParameter\x10:\x12\t\n\x05Union\x10;\x12\t\n\ + \x05Value\x10<\x12\x0c\n\x08Variable\x10=\"\xc9\x01\n\x0cRelationship\ + \x12\x16\n\x06symbol\x18\x01\x20\x01(\tR\x06symbol\x12!\n\x0cis_referenc\ + e\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\x12#\n\ris_definition\x18\x05\x20\ + \x01(\x08R\x0cisDefinition\"\xa4\x02\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\x12'\n\x0fenclosing_range\x18\x07\x20\x03(\x05R\x0e\ + enclosingRange\"\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\x0fProtocolVersion\ + \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*\xa4\x01\n\x10PositionEncoding\x12\x1f\n\x1bUnspecif\ + iedPositionEncoding\x10\0\x12#\n\x1fUTF8CodeUnitOffsetFromLineStart\x10\ + \x01\x12$\n\x20UTF16CodeUnitOffsetFromLineStart\x10\x02\x12$\n\x20UTF32C\ + odeUnitOffsetFromLineStart\x10\x03*\x94\x01\n\nSymbolRole\x12\x19\n\x15U\ + nspecifiedSymbolRole\x10\0\x12\x0e\n\nDefinition\x10\x01\x12\n\n\x06Impo\ + rt\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\x12\x15\n\x11F\ + orwardDefinition\x10@*\xea\x06\n\nSyntaxKind\x12\x19\n\x15UnspecifiedSyn\ + taxKind\x10\0\x12\x0b\n\x07Comment\x10\x01\x12\x18\n\x14PunctuationDelim\ + iter\x10\x02\x12\x16\n\x12PunctuationBracket\x10\x03\x12\x0b\n\x07Keywor\ + d\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\x0eIdentifierNull\x10\x08\x12\ + \x16\n\x12IdentifierConstant\x10\t\x12\x1b\n\x17IdentifierMutableGlobal\ + \x10\n\x12\x17\n\x13IdentifierParameter\x10\x0b\x12\x13\n\x0fIdentifierL\ + ocal\x10\x0c\x12\x16\n\x12IdentifierShadowed\x10\r\x12\x17\n\x13Identifi\ + erNamespace\x10\x0e\x12\x18\n\x10IdentifierModule\x10\x0e\x1a\x02\x08\ + \x01\x12\x16\n\x12IdentifierFunction\x10\x0f\x12\x20\n\x1cIdentifierFunc\ + tionDefinition\x10\x10\x12\x13\n\x0fIdentifierMacro\x10\x11\x12\x1d\n\ + \x19IdentifierMacroDefinition\x10\x12\x12\x12\n\x0eIdentifierType\x10\ + \x13\x12\x19\n\x15IdentifierBuiltinType\x10\x14\x12\x17\n\x13IdentifierA\ + ttribute\x10\x15\x12\x0f\n\x0bRegexEscape\x10\x16\x12\x11\n\rRegexRepeat\ + ed\x10\x17\x12\x11\n\rRegexWildcard\x10\x18\x12\x12\n\x0eRegexDelimiter\ + \x10\x19\x12\r\n\tRegexJoin\x10\x1a\x12\x11\n\rStringLiteral\x10\x1b\x12\ + \x17\n\x13StringLiteralEscape\x10\x1c\x12\x18\n\x14StringLiteralSpecial\ + \x10\x1d\x12\x14\n\x10StringLiteralKey\x10\x1e\x12\x14\n\x10CharacterLit\ + eral\x10\x1f\x12\x12\n\x0eNumericLiteral\x10\x20\x12\x12\n\x0eBooleanLit\ + eral\x10!\x12\x07\n\x03Tag\x10\"\x12\x10\n\x0cTagAttribute\x10#\x12\x10\ + \n\x0cTagDelimiter\x10$\x1a\x02\x10\x01*V\n\x08Severity\x12\x17\n\x13Uns\ + pecifiedSeverity\x10\0\x12\t\n\x05Error\x10\x01\x12\x0b\n\x07Warning\x10\ + \x02\x12\x0f\n\x0bInformation\x10\x03\x12\x08\n\x04Hint\x10\x04*N\n\rDia\ + gnosticTag\x12\x1c\n\x18UnspecifiedDiagnosticTag\x10\0\x12\x0f\n\x0bUnne\ + cessary\x10\x01\x12\x0e\n\nDeprecated\x10\x02*\x9b\n\n\x08Language\x12\ + \x17\n\x13UnspecifiedLanguage\x10\0\x12\x08\n\x04ABAP\x10<\x12\x08\n\x04\ + Apex\x10`\x12\x07\n\x03APL\x101\x12\x07\n\x03Ada\x10'\x12\x08\n\x04Agda\ + \x10-\x12\x0c\n\x08AsciiDoc\x10V\x12\x0c\n\x08Assembly\x10:\x12\x07\n\ + \x03Awk\x10B\x12\x07\n\x03Bat\x10D\x12\n\n\x06BibTeX\x10Q\x12\x05\n\x01C\ + \x10\"\x12\t\n\x05COBOL\x10;\x12\x07\n\x03CPP\x10#\x12\x07\n\x03CSS\x10\ + \x1a\x12\n\n\x06CSharp\x10\x01\x12\x0b\n\x07Clojure\x10\x08\x12\x10\n\ + \x0cCoffeescript\x10\x15\x12\x0e\n\nCommonLisp\x10\t\x12\x07\n\x03Coq\ + \x10/\x12\x08\n\x04CUDA\x10a\x12\x08\n\x04Dart\x10\x03\x12\n\n\x06Delphi\ + \x109\x12\x08\n\x04Diff\x10X\x12\x0e\n\nDockerfile\x10P\x12\n\n\x06Dyalo\ + g\x102\x12\n\n\x06Elixir\x10\x11\x12\n\n\x06Erlang\x10\x12\x12\n\n\x06FS\ + harp\x10*\x12\x08\n\x04Fish\x10A\x12\x08\n\x04Flow\x10\x18\x12\x0b\n\x07\ + Fortran\x108\x12\x0e\n\nGit_Commit\x10[\x12\x0e\n\nGit_Config\x10Y\x12\ + \x0e\n\nGit_Rebase\x10\\\x12\x06\n\x02Go\x10!\x12\x0b\n\x07GraphQL\x10b\ + \x12\n\n\x06Groovy\x10\x07\x12\x08\n\x04HTML\x10\x1e\x12\x08\n\x04Hack\ + \x10\x14\x12\x0e\n\nHandlebars\x10Z\x12\x0b\n\x07Haskell\x10,\x12\t\n\ + \x05Idris\x10.\x12\x07\n\x03Ini\x10H\x12\x05\n\x01J\x103\x12\x08\n\x04JS\ + ON\x10K\x12\x08\n\x04Java\x10\x06\x12\x0e\n\nJavaScript\x10\x16\x12\x13\ + \n\x0fJavaScriptReact\x10]\x12\x0b\n\x07Jsonnet\x10L\x12\t\n\x05Julia\ + \x107\x12\x0c\n\x08Justfile\x10m\x12\n\n\x06Kotlin\x10\x04\x12\t\n\x05La\ + TeX\x10S\x12\x08\n\x04Lean\x100\x12\x08\n\x04Less\x10\x1b\x12\x07\n\x03L\ + ua\x10\x0c\x12\x08\n\x04Luau\x10l\x12\x0c\n\x08Makefile\x10O\x12\x0c\n\ + \x08Markdown\x10T\x12\n\n\x06Matlab\x104\x12\n\n\x06Nickel\x10n\x12\x07\ + \n\x03Nix\x10M\x12\t\n\x05OCaml\x10)\x12\x0f\n\x0bObjective_C\x10$\x12\ + \x11\n\rObjective_CPP\x10%\x12\n\n\x06Pascal\x10c\x12\x07\n\x03PHP\x10\ + \x13\x12\t\n\x05PLSQL\x10F\x12\x08\n\x04Perl\x10\r\x12\x0e\n\nPowerShell\ + \x10C\x12\n\n\x06Prolog\x10G\x12\x0c\n\x08Protobuf\x10d\x12\n\n\x06Pytho\ + n\x10\x0f\x12\x05\n\x01R\x106\x12\n\n\x06Racket\x10\x0b\x12\x08\n\x04Rak\ + u\x10\x0e\x12\t\n\x05Razor\x10>\x12\t\n\x05Repro\x10f\x12\x08\n\x04ReST\ + \x10U\x12\x08\n\x04Ruby\x10\x10\x12\x08\n\x04Rust\x10(\x12\x07\n\x03SAS\ + \x10=\x12\x08\n\x04SCSS\x10\x1d\x12\x07\n\x03SML\x10+\x12\x07\n\x03SQL\ + \x10E\x12\x08\n\x04Sass\x10\x1c\x12\t\n\x05Scala\x10\x05\x12\n\n\x06Sche\ + me\x10\n\x12\x0f\n\x0bShellScript\x10@\x12\x0b\n\x07Skylark\x10N\x12\t\n\ + \x05Slang\x10k\x12\x0c\n\x08Solidity\x10_\x12\n\n\x06Svelte\x10j\x12\t\n\ + \x05Swift\x10\x02\x12\x07\n\x03Tcl\x10e\x12\x08\n\x04TOML\x10I\x12\x07\n\ + \x03TeX\x10R\x12\n\n\x06Thrift\x10g\x12\x0e\n\nTypeScript\x10\x17\x12\ + \x13\n\x0fTypeScriptReact\x10^\x12\x0b\n\x07Verilog\x10h\x12\x08\n\x04VH\ + DL\x10i\x12\x0f\n\x0bVisualBasic\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\x8b\xb9\x02\n\x07\x12\x05\n\0\xf4\x06\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\x20\ + piece\x20of\n\x20source\x20code\x20or\x20software\x20artifact.\x20Comple\ + mentary\x20information\x20can\x20be\x20merged\n\x20together\x20from\x20m\ + ultiple\x20sources\x20to\x20provide\x20a\x20unified\x20code\x20intellige\ + nce\n\x20experience.\n\n\x20Programs\x20producing\x20a\x20file\x20of\x20\ + this\x20format\x20is\x20an\x20\"indexer\"\x20and\x20may\x20operate\n\x20\ + somewhere\x20on\x20the\x20spectrum\x20between\x20precision,\x20such\x20a\ + s\x20indexes\x20produced\x20by\n\x20compiler-backed\x20indexers,\x20and\ + \x20heurstics,\x20such\x20as\x20indexes\x20produced\x20by\x20local\n\x20\ + syntax-directed\x20analysis\x20for\x20scope\x20rules.\n\n\x08\n\x01\x02\ + \x12\x03\x0c\0\r\n\x08\n\x01\x08\x12\x03\x0e\0D\n\t\n\x02\x08\x0b\x12\ + \x03\x0e\0D\n\xd0\x03\n\x02\x04\0\x12\x04\x16\0#\x01\x1a\xc3\x03\x20Inde\ + x\x20represents\x20a\x20complete\x20SCIP\x20index\x20for\x20a\x20workspa\ + ce\x20this\x20is\x20rooted\x20at\x20a\n\x20single\x20directory.\x20An\ + \x20Index\x20message\x20payload\x20can\x20have\x20a\x20large\x20memory\ + \x20footprint\n\x20and\x20it's\x20therefore\x20recommended\x20to\x20emit\ + \x20and\x20consume\x20an\x20Index\x20payload\x20one\x20field\n\x20value\ + \x20at\x20a\x20time.\x20To\x20permit\x20streaming\x20consumption\x20of\ + \x20an\x20Index\x20payload,\x20the\n\x20`metadata`\x20field\x20must\x20a\ + ppear\x20at\x20the\x20start\x20of\x20the\x20stream\x20and\x20must\x20onl\ + y\x20appear\n\x20once\x20in\x20the\x20stream.\x20Other\x20field\x20value\ + s\x20may\x20appear\x20in\x20any\x20order.\n\n\n\n\x03\x04\0\x01\x12\x03\ + \x16\x08\r\n)\n\x04\x04\0\x02\0\x12\x03\x18\x02\x18\x1a\x1c\x20Metadata\ + \x20about\x20this\x20index.\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\x18\ + \x02\n\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x18\x0b\x13\n\x0c\n\x05\x04\0\ + \x02\0\x03\x12\x03\x18\x16\x17\n3\n\x04\x04\0\x02\x01\x12\x03\x1a\x02\"\ + \x1a&\x20Documents\x20that\x20belong\x20to\x20this\x20index.\n\n\x0c\n\ + \x05\x04\0\x02\x01\x04\x12\x03\x1a\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\ + \x12\x03\x1a\x0b\x13\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x1a\x14\x1d\n\ + \x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x1a\x20!\n\xf6\x03\n\x04\x04\0\x02\ + \x02\x12\x03\x20\x022\x1a\xe9\x02\x20(optional)\x20Symbols\x20that\x20ar\ + e\x20referenced\x20from\x20this\x20index\x20but\x20are\x20defined\x20in\ + \n\x20an\x20external\x20package\x20(a\x20separate\x20`Index`\x20message)\ + .\x20Leave\x20this\x20field\x20empty\n\x20if\x20you\x20assume\x20the\x20\ + external\x20package\x20will\x20get\x20indexed\x20separately.\x20If\x20th\ + e\n\x20external\x20package\x20won't\x20get\x20indexed\x20for\x20some\x20\ + reason\x20then\x20you\x20can\x20use\x20this\n\x20field\x20to\x20provide\ + \x20hover\x20documentation\x20for\x20those\x20external\x20symbols.\n\"}\ + \x20IMPORTANT:\x20When\x20adding\x20a\x20new\x20field\x20to\x20`Index`\ + \x20here,\x20add\x20a\x20matching\n\x20function\x20in\x20`IndexVisitor`\ + \x20and\x20update\x20`ParseStreaming`.\n\n\x0c\n\x05\x04\0\x02\x02\x04\ + \x12\x03\x20\x02\n\n\x0c\n\x05\x04\0\x02\x02\x06\x12\x03\x20\x0b\x1c\n\ + \x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x20\x1d-\n\x0c\n\x05\x04\0\x02\x02\ + \x03\x12\x03\x2001\n\n\n\x02\x04\x01\x12\x04%\02\x01\n\n\n\x03\x04\x01\ + \x01\x12\x03%\x08\x10\nN\n\x04\x04\x01\x02\0\x12\x03'\x02\x1e\x1aA\x20Wh\ + ich\x20version\x20of\x20this\x20protocol\x20was\x20used\x20to\x20generat\ + e\x20this\x20index?\n\n\x0c\n\x05\x04\x01\x02\0\x06\x12\x03'\x02\x11\n\ + \x0c\n\x05\x04\x01\x02\0\x01\x12\x03'\x12\x19\n\x0c\n\x05\x04\x01\x02\0\ + \x03\x12\x03'\x1c\x1d\nC\n\x04\x04\x01\x02\x01\x12\x03)\x02\x19\x1a6\x20\ + Information\x20about\x20the\x20tool\x20that\x20produced\x20this\x20index\ + .\n\n\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03)\x02\n\n\x0c\n\x05\x04\x01\ + \x02\x01\x01\x12\x03)\x0b\x14\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03)\ + \x17\x18\n\xa2\x01\n\x04\x04\x01\x02\x02\x12\x03-\x02\x1a\x1a\x94\x01\ + \x20URI-encoded\x20absolute\x20path\x20to\x20the\x20root\x20directory\ + \x20of\x20this\x20index.\x20All\n\x20documents\x20in\x20this\x20index\ + \x20must\x20appear\x20in\x20a\x20subdirectory\x20of\x20this\x20root\n\ + \x20directory.\n\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03-\x02\x08\n\x0c\ + \n\x05\x04\x01\x02\x02\x01\x12\x03-\t\x15\n\x0c\n\x05\x04\x01\x02\x02\ + \x03\x12\x03-\x18\x19\n\xe0\x01\n\x04\x04\x01\x02\x03\x12\x031\x02*\x1a\ + \xd2\x01\x20Text\x20encoding\x20of\x20the\x20source\x20files\x20on\x20di\ + sk\x20that\x20are\x20referenced\x20from\n\x20`Document.relative_path`.\ + \x20This\x20value\x20is\x20unrelated\x20to\x20the\x20`Document.text`\n\ + \x20field,\x20which\x20is\x20a\x20Protobuf\x20string\x20and\x20hence\x20\ + must\x20be\x20UTF-8\x20encoded.\n\n\x0c\n\x05\x04\x01\x02\x03\x06\x12\ + \x031\x02\x0e\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x031\x0f%\n\x0c\n\x05\ + \x04\x01\x02\x03\x03\x12\x031()\n\n\n\x02\x05\0\x12\x044\06\x01\n\n\n\ + \x03\x05\0\x01\x12\x034\x05\x14\n\x0b\n\x04\x05\0\x02\0\x12\x035\x02!\n\ + \x0c\n\x05\x05\0\x02\0\x01\x12\x035\x02\x1c\n\x0c\n\x05\x05\0\x02\0\x02\ + \x12\x035\x1f\x20\n\n\n\x02\x05\x01\x12\x048\0<\x01\n\n\n\x03\x05\x01\ + \x01\x12\x038\x05\x11\n\x0b\n\x04\x05\x01\x02\0\x12\x039\x02\x1e\n\x0c\n\ + \x05\x05\x01\x02\0\x01\x12\x039\x02\x19\n\x0c\n\x05\x05\x01\x02\0\x02\ + \x12\x039\x1c\x1d\n\x0b\n\x04\x05\x01\x02\x01\x12\x03:\x02\x0b\n\x0c\n\ + \x05\x05\x01\x02\x01\x01\x12\x03:\x02\x06\n\x0c\n\x05\x05\x01\x02\x01\ + \x02\x12\x03:\t\n\n\x0b\n\x04\x05\x01\x02\x02\x12\x03;\x02\x0c\n\x0c\n\ + \x05\x05\x01\x02\x02\x01\x12\x03;\x02\x07\n\x0c\n\x05\x05\x01\x02\x02\ + \x02\x12\x03;\n\x0b\n\n\n\x02\x04\x02\x12\x04>\0E\x01\n\n\n\x03\x04\x02\ + \x01\x12\x03>\x08\x10\n<\n\x04\x04\x02\x02\0\x12\x03@\x02\x12\x1a/\x20Na\ + me\x20of\x20the\x20indexer\x20that\x20produced\x20this\x20index.\n\n\x0c\ + \n\x05\x04\x02\x02\0\x05\x12\x03@\x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\ + \x12\x03@\t\r\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03@\x10\x11\n?\n\x04\ + \x04\x02\x02\x01\x12\x03B\x02\x15\x1a2\x20Version\x20of\x20the\x20indexe\ + r\x20that\x20produced\x20this\x20index.\n\n\x0c\n\x05\x04\x02\x02\x01\ + \x05\x12\x03B\x02\x08\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03B\t\x10\n\ + \x0c\n\x05\x04\x02\x02\x01\x03\x12\x03B\x13\x14\nL\n\x04\x04\x02\x02\x02\ + \x12\x03D\x02\x20\x1a?\x20Command-line\x20arguments\x20that\x20were\x20u\ + sed\x20to\x20invoke\x20this\x20indexer.\n\n\x0c\n\x05\x04\x02\x02\x02\ + \x04\x12\x03D\x02\n\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\x03D\x0b\x11\n\ + \x0c\n\x05\x04\x02\x02\x02\x01\x12\x03D\x12\x1b\n\x0c\n\x05\x04\x02\x02\ + \x02\x03\x12\x03D\x1e\x1f\nH\n\x02\x04\x03\x12\x04H\0u\x01\x1a<\x20Docum\ + ent\x20defines\x20the\x20metadata\x20about\x20a\x20source\x20file\x20on\ + \x20disk.\n\n\n\n\x03\x04\x03\x01\x12\x03H\x08\x10\n\xa5\x02\n\x04\x04\ + \x03\x02\0\x12\x03M\x02\x16\x1a\x97\x02\x20The\x20string\x20ID\x20for\ + \x20the\x20programming\x20language\x20this\x20file\x20is\x20written\x20i\ + n.\n\x20The\x20`Language`\x20enum\x20contains\x20the\x20names\x20of\x20m\ + ost\x20common\x20programming\x20languages.\n\x20This\x20field\x20is\x20t\ + yped\x20as\x20a\x20string\x20to\x20permit\x20any\x20programming\x20langu\ + age,\x20including\n\x20ones\x20that\x20are\x20not\x20specified\x20by\x20\ + the\x20`Language`\x20enum.\n\n\x0c\n\x05\x04\x03\x02\0\x05\x12\x03M\x02\ + \x08\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03M\t\x11\n\x0c\n\x05\x04\x03\ + \x02\0\x03\x12\x03M\x14\x15\n\xb5\x03\n\x04\x04\x03\x02\x01\x12\x03W\x02\ + \x1b\x1a\xa7\x03\x20(Required)\x20Unique\x20path\x20to\x20the\x20text\ + \x20document.\n\n\x201.\x20The\x20path\x20must\x20be\x20relative\x20to\ \x20the\x20directory\x20supplied\x20in\x20the\x20associated\n\x20\x20\ \x20\x20`Metadata.project_root`.\n\x202.\x20The\x20path\x20must\x20not\ \x20begin\x20with\x20a\x20leading\x20'/'.\n\x203.\x20The\x20path\x20must\ @@ -4975,7 +4982,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ sible\x20for\x20parsing\x20symbols.\n\n\r\n\x05\x04\x06\x02\x02\x06\x12\ \x04\xe1\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xe1\x01\t\x0f\ \n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xe1\x01\x12\x13\n\x83\x01\n\x02\ - \x04\x07\x12\x06\xe8\x01\0\xb8\x03\x01\x1au\x20SymbolInformation\x20defi\ + \x04\x07\x12\x06\xe8\x01\0\xba\x03\x01\x1au\x20SymbolInformation\x20defi\ nes\x20metadata\x20about\x20a\x20symbol,\x20such\x20as\x20the\x20symbol'\ s\n\x20docstring\x20or\x20what\x20package\x20it's\x20defined\x20it.\n\n\ \x0b\n\x03\x04\x07\x01\x12\x04\xe8\x01\x08\x19\n\xa0\x01\n\x04\x04\x07\ @@ -5008,7 +5015,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20for\x20example,\x20a\n\x20class\x20or\x20a\x20method.\n\n\r\n\x05\ \x04\x07\x02\x03\x06\x12\x04\xf8\x01\x02\x06\n\r\n\x05\x04\x07\x02\x03\ \x01\x12\x04\xf8\x01\x07\x0b\n\r\n\x05\x04\x07\x02\x03\x03\x12\x04\xf8\ - \x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\x87\x02\x02\x94\x03\ + \x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\x87\x02\x02\x96\x03\ \x03\x1a\xe4\x05\x20(optional)\x20Kind\x20represents\x20the\x20fine-grai\ ned\x20category\x20of\x20a\x20symbol,\x20suitable\x20for\x20presenting\n\ \x20information\x20about\x20the\x20symbol's\x20meaning\x20in\x20the\x20l\ @@ -5054,523 +5061,525 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\x95\x02\x10\x11\n\x0e\n\x06\ \x04\x07\x04\0\x02\t\x12\x04\x96\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ \x02\t\x01\x12\x04\x96\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\t\x02\ - \x12\x04\x96\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\n\x12\x04\x97\x02\ - \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\x04\x97\x02\x06\x0e\n\ - \x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x97\x02\x11\x12\n\x0e\n\x06\ - \x04\x07\x04\0\x02\x0b\x12\x04\x98\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x0b\x01\x12\x04\x98\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0b\ - \x02\x12\x04\x98\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\x02\x0c\x12\x04\ - \x9a\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x0c\x01\x12\x04\x9a\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\ - \x02\x12\x04\x9a\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\x02\r\x12\x04\x9c\ - \x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02\r\ - \x01\x12\x04\x9c\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\r\x02\x12\x04\ - \x9c\x02\x13\x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0e\x12\x04\x9e\x02\x06\ - \x14\x1a\x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x0e\x01\x12\x04\x9e\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x02\ - \x12\x04\x9e\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\x12\x04\x9f\ - \x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\x9f\x02\x06\n\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\x9f\x02\r\x0f\n\x0e\n\x06\ - \x04\x07\x04\0\x02\x10\x12\x04\xa0\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x10\x01\x12\x04\xa0\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x10\ - \x02\x12\x04\xa0\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\x11\x12\x04\ - \xa1\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\x12\x04\xa1\x02\ - \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\xa1\x02\x0e\x10\n\ - \x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa2\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x12\x01\x12\x04\xa2\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x12\x02\x12\x04\xa2\x02\x0e\x10\n\x1a\n\x06\x04\x07\x04\0\x02\x13\ - \x12\x04\xa4\x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02\x13\x01\x12\x04\xa4\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x13\ - \x02\x12\x04\xa4\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\x02\x14\x12\x04\ - \xa6\x02\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x14\x01\x12\x04\xa6\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x02\x12\ - \x04\xa6\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x15\x12\x04\xa7\x02\x06\ - \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\xa7\x02\x06\x0b\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa7\x02\x0e\x10\n\x0e\n\x06\x04\ - \x07\x04\0\x02\x16\x12\x04\xa8\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x16\x01\x12\x04\xa8\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x16\x02\x12\ - \x04\xa8\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x17\x12\x04\xa9\x02\x06\ - \x14\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x01\x12\x04\xa9\x02\x06\x0e\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\xa9\x02\x11\x13\n;\n\x06\x04\ - \x07\x04\0\x02\x18\x12\x04\xab\x02\x06\x12\x1a+\x20For\x20'get'\x20in\ - \x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x18\x01\x12\x04\xab\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x18\ - \x02\x12\x04\xab\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x19\x12\x04\ - \xad\x02\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x19\x01\x12\x04\xad\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x02\x12\ - \x04\xad\x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\x1a\x12\x04\xaf\x02\x06\ - \x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x1a\x01\x12\x04\xaf\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x1a\x02\x12\x04\xaf\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x1b\x12\ - \x04\xb0\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x01\x12\x04\xb0\ - \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\x12\x04\xb0\x02\x12\ - \x14\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xb1\x02\x06\x0f\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xb1\x02\x06\t\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x1c\x02\x12\x04\xb1\x02\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\ - \x1d\x12\x04\xb3\x02\x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x1d\x01\x12\x04\xb3\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1d\x02\x12\x04\xb3\x02\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x1e\x12\ - \x04\xb5\x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1e\x01\x12\x04\xb5\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\ - \x02\x12\x04\xb5\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02\x1f\x12\x04\ - \xb7\x02\x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1f\x01\x12\x04\xb7\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\x02\ - \x12\x04\xb7\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x20\x12\x04\xb8\ - \x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\x04\xb8\x02\x06\ - \x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xb8\x02\x0e\x10\n\x0e\ - \n\x06\x04\x07\x04\0\x02!\x12\x04\xb9\x02\x06\x12\n\x0f\n\x07\x04\x07\ - \x04\0\x02!\x01\x12\x04\xb9\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02!\ - \x02\x12\x04\xb9\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\"\x12\x04\xbb\ - \x02\x06\x17\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\ - \x12\x04\xbb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\"\x02\x12\x04\xbb\ - \x02\x14\x16\n\x94\x01\n\x06\x04\x07\x04\0\x02#\x12\x04\xbe\x02\x06\x1a\ - \x1a\x83\x01\x20Analogous\x20to\x20'ThisParameter'\x20and\x20'SelfParame\ - ter',\x20but\x20for\x20languages\n\x20like\x20Go\x20where\x20the\x20rece\ - iver\x20doesn't\x20have\x20a\x20conventional\x20name.\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02#\x01\x12\x04\xbe\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ - \x02#\x02\x12\x04\xbe\x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02$\x12\x04\ - \xc0\x02\x06\x1f\x1a(\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ - Go.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xc0\x02\x06\x19\n\x0f\n\ - \x07\x04\x07\x04\0\x02$\x02\x12\x04\xc0\x02\x1c\x1e\n\x1e\n\x06\x04\x07\ - \x04\0\x02%\x12\x04\xc2\x02\x06\x13\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02%\x01\x12\x04\xc2\x02\x06\r\n\x0f\n\x07\x04\x07\ - \x04\0\x02%\x02\x12\x04\xc2\x02\x10\x12\n\x1a\n\x06\x04\x07\x04\0\x02&\ - \x12\x04\xc4\x02\x06\x11\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02&\x01\x12\x04\xc4\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02&\x02\ - \x12\x04\xc4\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02'\x12\x04\xc6\x02\ - \x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02'\x01\ - \x12\x04\xc6\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02'\x02\x12\x04\xc6\ - \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02(\x12\x04\xc7\x02\x06\x12\n\ - \x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc7\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02(\x02\x12\x04\xc7\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ - \0\x02)\x12\x04\xc8\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02)\x01\x12\ - \x04\xc8\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02)\x02\x12\x04\xc8\x02\ - \x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\xc9\x02\x06\x10\n\x0f\n\ - \x07\x04\x07\x04\0\x02*\x01\x12\x04\xc9\x02\x06\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02*\x02\x12\x04\xc9\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02+\x12\ - \x04\xca\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02+\x01\x12\x04\xca\x02\ - \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\x04\xca\x02\x0f\x11\n\ - \x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xcb\x02\x06\x12\n\x0f\n\x07\x04\ - \x07\x04\0\x02,\x01\x12\x04\xcb\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\ - \x02,\x02\x12\x04\xcb\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02-\x12\x04\ - \xcc\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\x12\x04\xcc\x02\x06\ - \x0e\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xcc\x02\x11\x13\n\x0e\n\ - \x06\x04\x07\x04\0\x02.\x12\x04\xcd\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\ - \0\x02.\x01\x12\x04\xcd\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02.\x02\x12\ - \x04\xcd\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02/\x12\x04\xce\x02\x06\ - \x19\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\xce\x02\x06\x13\n\x0f\n\ - \x07\x04\x07\x04\0\x02/\x02\x12\x04\xce\x02\x16\x18\n\x0e\n\x06\x04\x07\ - \x04\0\x020\x12\x04\xcf\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x020\x01\ - \x12\x04\xcf\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x020\x02\x12\x04\xcf\ - \x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x021\x12\x04\xd0\x02\x06\x1a\n\ - \x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xd0\x02\x06\x14\n\x0f\n\x07\ - \x04\x07\x04\0\x021\x02\x12\x04\xd0\x02\x17\x19\n/\n\x06\x04\x07\x04\0\ - \x022\x12\x04\xd2\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSyno\ - nyms\n\n\x0f\n\x07\x04\x07\x04\0\x022\x01\x12\x04\xd2\x02\x06\r\n\x0f\n\ - \x07\x04\x07\x04\0\x022\x02\x12\x04\xd2\x02\x10\x12\n\x1b\n\x06\x04\x07\ - \x04\0\x023\x12\x04\xd4\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\ - \x07\x04\x07\x04\0\x023\x01\x12\x04\xd4\x02\x06\x0f\n\x0f\n\x07\x04\x07\ - \x04\0\x023\x02\x12\x04\xd4\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x024\ - \x12\x04\xd5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x024\x01\x12\x04\xd5\ - \x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\xd5\x02\x11\x13\ - \nQ\n\x06\x04\x07\x04\0\x025\x12\x04\xd7\x02\x06\x14\x1aA\x20Analogous\ - \x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Objec\ - tive-C\n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd7\x02\x06\x0e\n\ - \x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd7\x02\x11\x13\nK\n\x06\x04\ - \x07\x04\0\x026\x12\x04\xd9\x02\x06\x1a\x1a;\x20Analogous\x20to\x20'Abst\ - ractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\x0f\n\x07\x04\ - \x07\x04\0\x026\x01\x12\x04\xd9\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ - \x026\x02\x12\x04\xd9\x02\x17\x19\n9\n\x06\x04\x07\x04\0\x027\x12\x04\ - \xdb\x02\x06\x1d\x1a)\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ - C++.\n\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\xdb\x02\x06\x17\n\x0f\ - \n\x07\x04\x07\x04\0\x027\x02\x12\x04\xdb\x02\x1a\x1c\n\x1d\n\x06\x04\ - \x07\x04\0\x028\x12\x04\xdd\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\x0f\ - \n\x07\x04\x07\x04\0\x028\x01\x12\x04\xdd\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x028\x02\x12\x04\xdd\x02\x14\x16\n4\n\x06\x04\x07\x04\0\x029\ - \x12\x04\xdf\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20Rust,\x20Swi\ - ft\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xdf\x02\x06\x13\ - \n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xdf\x02\x16\x18\n;\n\x06\x04\ - \x07\x04\0\x02:\x12\x04\xe1\x02\x06\x12\x1a+\x20For\x20'set'\x20in\x20Sw\ - ift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02:\x01\ - \x12\x04\xe1\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02:\x02\x12\x04\xe1\ - \x02\x0f\x11\n3\n\x06\x04\x07\x04\0\x02;\x12\x04\xe3\x02\x06\x15\x1a#\ - \x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02;\x01\x12\x04\xe3\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02;\ - \x02\x12\x04\xe3\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02<\x12\x04\xe5\ - \x02\x06\x1a\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02<\x01\ - \x12\x04\xe5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\x12\x04\xe5\ - \x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02=\x12\x04\xe7\x02\x06\x1b\x1a(\ - \x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02=\x01\x12\x04\xe7\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ - \x02=\x02\x12\x04\xe7\x02\x18\x1a\n5\n\x06\x04\x07\x04\0\x02>\x12\x04\ - \xe9\x02\x06\x1c\x1a%\x20Analogous\x20to\x20'StaticField',\x20for\x20C++\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\xe9\x02\x06\x16\n\x0f\n\ - \x07\x04\x07\x04\0\x02>\x02\x12\x04\xe9\x02\x19\x1b\n\x18\n\x06\x04\x07\ - \x04\0\x02?\x12\x04\xeb\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02?\x01\x12\x04\xeb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\ - \0\x02?\x02\x12\x04\xeb\x02\x14\x16\n\x18\n\x06\x04\x07\x04\0\x02@\x12\ - \x04\xed\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02@\x01\x12\x04\xed\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\x02\x12\ - \x04\xed\x02\x14\x16\n(\n\x06\x04\x07\x04\0\x02A\x12\x04\xef\x02\x06\x18\ - \x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02A\x01\x12\x04\xef\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02A\x02\ - \x12\x04\xef\x02\x15\x17\n)\n\x06\x04\x07\x04\0\x02B\x12\x04\xf1\x02\x06\ - \x1a\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02B\x01\x12\x04\xf1\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02B\ - \x02\x12\x04\xf1\x02\x17\x19\n\x1c\n\x06\x04\x07\x04\0\x02C\x12\x04\xf3\ - \x02\x06\x1a\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - C\x01\x12\x04\xf3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02C\x02\x12\x04\ - \xf3\x02\x17\x19\n\x0e\n\x06\x04\x07\x04\0\x02D\x12\x04\xf4\x02\x06\x12\ - \n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf4\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02D\x02\x12\x04\xf4\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ - \0\x02E\x12\x04\xf5\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02E\x01\x12\ - \x04\xf5\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\x12\x04\xf5\x02\ - \x0f\x11\n\x1b\n\x06\x04\x07\x04\0\x02F\x12\x04\xf7\x02\x06\x15\x1a\x0b\ - \x20For\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02F\x01\x12\x04\xf7\x02\ - \x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02F\x02\x12\x04\xf7\x02\x12\x14\n\ - \x1a\n\x06\x04\x07\x04\0\x02G\x12\x04\xf9\x02\x06\x12\x1a\n\x20For\x20Le\ - an\n\n\x0f\n\x07\x04\x07\x04\0\x02G\x01\x12\x04\xf9\x02\x06\x0c\n\x0f\n\ - \x07\x04\x07\x04\0\x02G\x02\x12\x04\xf9\x02\x0f\x11\n\x1a\n\x06\x04\x07\ - \x04\0\x02H\x12\x04\xfb\x02\x06\x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02H\x01\x12\x04\xfb\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\ - \x02H\x02\x12\x04\xfb\x02\x10\x12\nU\n\x06\x04\x07\x04\0\x02I\x12\x04\ - \xfe\x02\x06\x19\x1aE\x20Method\x20receiver\x20for\x20languages\n\x20'th\ - is'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02I\x01\x12\x04\xfe\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02I\ - \x02\x12\x04\xfe\x02\x16\x18\nO\n\x06\x04\x07\x04\0\x02J\x12\x04\x80\x03\ - \x06\x11\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeClass',\ - \x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02J\x01\ - \x12\x04\x80\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02J\x02\x12\x04\x80\ - \x03\x0e\x10\nE\n\x06\x04\x07\x04\0\x02K\x12\x04\x82\x03\x06\x17\x1a5\ - \x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\x20Scala\x20etc\ - .\n\n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x82\x03\x06\x11\n\x0f\n\ - \x07\x04\x07\x04\0\x02K\x02\x12\x04\x82\x03\x14\x16\n\x89\x01\n\x06\x04\ - \x07\x04\0\x02L\x12\x04\x85\x03\x06\x10\x1ay\x20Data\x20type\x20definiti\ - on\x20for\x20languages\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20r\ - ather\x20than\x20separate\x20keywords\x20like\x20`struct`\x20and\x20`enu\ - m`.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\x12\x04\x85\x03\x06\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02L\x02\x12\x04\x85\x03\r\x0f\n\x0e\n\x06\x04\x07\ - \x04\0\x02M\x12\x04\x86\x03\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02M\x01\ - \x12\x04\x86\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02M\x02\x12\x04\x86\ - \x03\x12\x14\nS\n\x06\x04\x07\x04\0\x02N\x12\x04\x88\x03\x06\x15\x1aC\ - \x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\ - \x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02N\x01\x12\x04\x88\ - \x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02N\x02\x12\x04\x88\x03\x12\x14\ - \nM\n\x06\x04\x07\x04\0\x02O\x12\x04\x8a\x03\x06\x1b\x1a=\x20Analogous\ - \x20to\x20'AbstractMethod',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02O\x01\x12\x04\x8a\x03\x06\x15\n\x0f\n\x07\ - \x04\x07\x04\0\x02O\x02\x12\x04\x8a\x03\x18\x1a\n\x1d\n\x06\x04\x07\x04\ - \0\x02P\x12\x04\x8c\x03\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02P\x01\x12\x04\x8c\x03\x06\x10\n\x0f\n\x07\x04\x07\x04\ - \0\x02P\x02\x12\x04\x8c\x03\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02Q\x12\ - \x04\x8d\x03\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\x12\x04\x8d\x03\ - \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8d\x03\x16\x18\n(\n\ - \x06\x04\x07\x04\0\x02R\x12\x04\x8f\x03\x06\x11\x1a\x18\x20For\x20C,\x20\ - C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02R\x01\x12\x04\x8f\ - \x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02R\x02\x12\x04\x8f\x03\x0e\x10\ - \n\x0e\n\x06\x04\x07\x04\0\x02S\x12\x04\x90\x03\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02S\x01\x12\x04\x90\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ - \x02S\x02\x12\x04\x90\x03\x0e\x10\n[\n\x06\x04\x07\x04\0\x02T\x12\x04\ - \x91\x03\x06\x14\"K\x20Next\x20=\x2086;\n\x20Feel\x20free\x20to\x20open\ - \x20a\x20PR\x20proposing\x20new\x20language-specific\x20kinds.\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02T\x01\x12\x04\x91\x03\x06\x0e\n\x0f\n\x07\x04\x07\ - \x04\0\x02T\x02\x12\x04\x91\x03\x11\x13\n\xf3\x03\n\x04\x04\x07\x02\x04\ - \x12\x04\x9e\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20The\x20name\x20of\ - \x20this\x20symbol\x20as\x20it\x20should\x20be\x20displayed\x20to\x20the\ - \x20user.\n\x20For\x20example,\x20the\x20symbol\x20\"com/example/MyClass\ - #myMethod(+1).\"\x20should\x20have\x20the\n\x20display\x20name\x20\"myMe\ - thod\".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\x20reliable\x20sou\ - rce\x20of\n\x20the\x20display\x20name\x20for\x20several\x20reasons:\n\n\ - \x20-\x20Local\x20symbols\x20don't\x20encode\x20the\x20name.\n\x20-\x20S\ - ome\x20languages\x20have\x20case-insensitive\x20names,\x20so\x20the\x20s\ - ymbol\x20is\x20all-lowercase.\n\x20-\x20The\x20symbol\x20may\x20encode\ - \x20names\x20with\x20special\x20characters\x20that\x20should\x20not\x20b\ - e\n\x20\x20\x20displayed\x20to\x20the\x20user.\n\n\r\n\x05\x04\x07\x02\ - \x04\x05\x12\x04\x9e\x03\x02\x08\n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\ - \x9e\x03\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\x9e\x03\x18\x19\n\ - \xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xa5\x03\x02'\x1a\xb5\x03\x20(opti\ - onal)\x20The\x20signature\x20of\x20this\x20symbol\x20as\x20it's\x20displ\ - ayed\x20in\x20API\n\x20documentation\x20or\x20in\x20hover\x20tooltips.\ - \x20For\x20example,\x20a\x20Java\x20method\x20that\x20adds\n\x20two\x20n\ - umbers\x20this\x20would\x20have\x20`Document.language\x20=\x20\"java\"`\ - \x20and\x20`Document.text\n\x20=\x20\"void\x20add(int\x20a,\x20int\x20b)\ - \".\x20The\x20`language`\x20and\x20`text`\x20fields\x20are\x20required\n\ - \x20while\x20other\x20fields\x20such\x20as\x20`Documentation.occurrences\ - `\x20can\x20be\x20optionally\n\x20included\x20to\x20support\x20hyperlink\ - ing\x20referenced\x20symbols\x20in\x20the\x20signature.\n\n\r\n\x05\x04\ - \x07\x02\x05\x06\x12\x04\xa5\x03\x02\n\n\r\n\x05\x04\x07\x02\x05\x01\x12\ - \x04\xa5\x03\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\x12\x04\xa5\x03%&\n\xc9\ - \x08\n\x04\x04\x07\x02\x06\x12\x04\xb7\x03\x02\x1e\x1a\xba\x08\x20(optio\ - nal)\x20The\x20enclosing\x20symbol\x20if\x20this\x20is\x20a\x20local\x20\ - symbol.\x20\x20For\x20non-local\n\x20symbols,\x20the\x20enclosing\x20sym\ - bol\x20should\x20be\x20parsed\x20from\x20the\x20`symbol`\x20field\n\x20u\ - sing\x20the\x20`Descriptor`\x20grammar.\n\n\x20The\x20primary\x20use-cas\ - e\x20for\x20this\x20field\x20is\x20to\x20allow\x20local\x20symbol\x20to\ - \x20be\x20displayed\n\x20in\x20a\x20symbol\x20hierarchy\x20for\x20API\ - \x20documentation.\x20It's\x20OK\x20to\x20leave\x20this\x20field\n\x20em\ - pty\x20for\x20local\x20variables\x20since\x20local\x20variables\x20usual\ - ly\x20don't\x20belong\x20in\x20API\n\x20documentation.\x20However,\x20in\ - \x20the\x20situation\x20that\x20you\x20wish\x20to\x20include\x20a\x20loc\ - al\n\x20symbol\x20in\x20the\x20hierarchy,\x20then\x20you\x20can\x20use\ - \x20`enclosing_symbol`\x20to\x20locate\x20the\n\x20\"parent\"\x20or\x20\ - \"owner\"\x20of\x20this\x20local\x20symbol.\x20For\x20example,\x20a\x20J\ - ava\x20indexer\x20may\n\x20choose\x20to\x20use\x20local\x20symbols\x20fo\ - r\x20private\x20class\x20fields\x20while\x20providing\x20an\n\x20`enclos\ - ing_symbol`\x20to\x20reference\x20the\x20enclosing\x20class\x20to\x20all\ - ow\x20the\x20field\x20to\n\x20be\x20part\x20of\x20the\x20class\x20docume\ - ntation\x20hierarchy.\x20From\x20the\x20perspective\x20of\x20an\n\x20aut\ - hor\x20of\x20an\x20indexer,\x20the\x20decision\x20to\x20use\x20a\x20loca\ - l\x20symbol\x20or\x20global\x20symbol\n\x20should\x20exclusively\x20be\ - \x20determined\x20whether\x20the\x20local\x20symbol\x20is\x20accessible\ - \n\x20outside\x20the\x20document,\x20not\x20by\x20the\x20capability\x20t\ - o\x20find\x20the\x20enclosing\n\x20symbol.\n\n\r\n\x05\x04\x07\x02\x06\ - \x05\x12\x04\xb7\x03\x02\x08\n\r\n\x05\x04\x07\x02\x06\x01\x12\x04\xb7\ - \x03\t\x19\n\r\n\x05\x04\x07\x02\x06\x03\x12\x04\xb7\x03\x1c\x1d\n\x0c\n\ - \x02\x04\x08\x12\x06\xbb\x03\0\xf3\x03\x01\n\x0b\n\x03\x04\x08\x01\x12\ - \x04\xbb\x03\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\xbc\x03\x02\x14\n\ - \r\n\x05\x04\x08\x02\0\x05\x12\x04\xbc\x03\x02\x08\n\r\n\x05\x04\x08\x02\ - \0\x01\x12\x04\xbc\x03\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\xbc\x03\ - \x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\x04\xd5\x03\x02\x18\x1a\xcf\ - \x08\x20When\x20resolving\x20\"Find\x20references\",\x20this\x20field\ - \x20documents\x20what\x20other\x20symbols\n\x20should\x20be\x20included\ - \x20together\x20with\x20this\x20symbol.\x20For\x20example,\x20consider\ - \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#,\x20relationships\x20=\x20[{symbol:\x20\"Animal#\",\x20is\ - _implementation:\x20true}]\n\x20\x20\x20public\x20sound():\x20string\x20\ - {\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^\ - ^^^\x20definition\x20Dog#sound(),\x20references_symbols\x20=\x20Animal#s\ - ound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal#sound()\",\x20is_\ - implementation:true,\x20is_reference:\x20true}]\n\x20}\n\x20const\x20ani\ - mal:\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()`\x20method\x20as\x20well.\x20Vice-versa,\x20doing\x20\"Find\n\ - \x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\x20should\x20in\ - clude\x20references\x20to\x20the\n\x20`Animal#sound()`\x20method\x20as\ - \x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xd5\x03\x02\x06\n\r\n\ - \x05\x04\x08\x02\x01\x01\x12\x04\xd5\x03\x07\x13\n\r\n\x05\x04\x08\x02\ - \x01\x03\x12\x04\xd5\x03\x16\x17\n\xee\x03\n\x04\x04\x08\x02\x02\x12\x04\ - \xde\x03\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_reference`\x20but\ - \x20for\x20\"Find\x20implementations\".\n\x20It's\x20common\x20for\x20`i\ - s_implementation`\x20and\x20`is_reference`\x20to\x20both\x20be\x20true\ - \x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\x20the\x20Typ\ - eScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\x20has\x20an\n\ - \x20`is_implementation`\x20relationship\x20with\x20`\"Animal#\"`\x20but\ - \x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\"Find\x20refer\ - ences\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\x20not\x20return\ - \n\x20\"Dog#\".\x20We\x20only\x20want\x20\"Dog#\"\x20to\x20return\x20as\ - \x20a\x20result\x20for\x20\"Find\n\x20implementations\"\x20on\x20the\x20\ - \"Animal#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xde\x03\ - \x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xde\x03\x07\x18\n\r\n\x05\ - \x04\x08\x02\x02\x03\x12\x04\xde\x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\ - \x12\x04\xe0\x03\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\x03\x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\ - \x12\x04\xe0\x03\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xe0\x03\ - \x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\xf1\x03\x02\x19\x1a\xd5\ - \x06\x20Allows\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20d\ - efinition\"\x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20whic\ - h\x20do\x20not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\ - \x20could\n\x20potentially\x20have\x20multiple\x20definitions.\n\n\x20Fo\ - r\x20example,\x20in\x20a\x20language\x20with\x20single\x20inheritance\ - \x20and\x20no\x20field\x20overriding,\n\x20inherited\x20fields\x20can\ - \x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20\ - declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation,\x20is_defin\ - ition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\ - \x20languages\x20with\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,\x20and\x20is_reference\x20to\x20relate\x20the\n\x20symbol\ - \x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NOTE:\x20At\ - \x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20SCIP\x20t\ - o\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\x20an\x20i\ - ndex\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20The\x20relati\ - onship\x20may\x20not\x20get\x20recorded\x20if\x20either\x20symbol\x20is\ - \x20local.\n\"A\x20Update\x20registerInverseRelationships\x20on\x20addin\ - g\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\x04\ - \xf1\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xf1\x03\x07\x14\n\ - \r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf1\x03\x17\x18\n\x88\x03\n\x02\x05\ - \x03\x12\x06\xfa\x03\0\x90\x04\x01\x1a\xf9\x02\x20SymbolRole\x20declares\ - \x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20occurrence.\ - \x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20where\x20each\ - \x20bit\x20represents\x20a\x20different\x20role.\x20For\x20example,\n\ - \x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20set,\x20te\ - st\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\x20value\ - \x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\x20implemen\ - ted\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20=\x20(role.v\ - alue\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\x03\ - \x01\x12\x04\xfa\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\x12\x04\xfd\x03\x02\ - \x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\x20used;\x20\ - it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20from\x20the\x20P\ - rotobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\xfd\ - \x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\xfd\x03\x1a\x1b\nT\n\ - \x04\x05\x03\x02\x01\x12\x04\xff\x03\x02\x13\x1aF\x20Is\x20the\x20symbol\ - \x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbol\ - \x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\xff\x03\x02\x0c\n\ - \r\n\x05\x05\x03\x02\x01\x02\x12\x04\xff\x03\x0f\x12\n,\n\x04\x05\x03\ - \x02\x02\x12\x04\x81\x04\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ - ted\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x81\x04\x02\x08\n\r\ - \n\x05\x05\x03\x02\x02\x02\x12\x04\x81\x04\x0b\x0e\n+\n\x04\x05\x03\x02\ - \x03\x12\x04\x83\x04\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ - \x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x83\x04\x02\r\n\r\n\ - \x05\x05\x03\x02\x03\x02\x12\x04\x83\x04\x10\x13\n(\n\x04\x05\x03\x02\ - \x04\x12\x04\x85\x04\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ - ere?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x85\x04\x02\x0c\n\r\n\x05\ - \x05\x03\x02\x04\x02\x12\x04\x85\x04\x0f\x12\n0\n\x04\x05\x03\x02\x05\ - \x12\x04\x87\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ - \x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x87\x04\x02\x0b\n\r\n\ - \x05\x05\x03\x02\x05\x02\x12\x04\x87\x04\x0e\x12\n+\n\x04\x05\x03\x02\ - \x06\x12\x04\x89\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ - t\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x89\x04\x02\x06\n\r\n\ - \x05\x05\x03\x02\x06\x02\x12\x04\x89\x04\t\r\n\xed\x01\n\x04\x05\x03\x02\ - \x07\x12\x04\x8f\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\x20a\x20signature\ - \x20for\x20a\x20symbol\x20that\x20is\x20defined\x20elsewhere?\n\n\x20App\ - lies\x20to\x20forward\x20declarations\x20for\x20languages\x20like\x20C,\ - \x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\x20`val`\x20declara\ - tions\x20in\x20interface\n\x20files\x20in\x20languages\x20like\x20SML\ - \x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\x8f\x04\x02\ - \x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x8f\x04\x16\x1a\n\x0c\n\x02\ - \x05\x04\x12\x06\x92\x04\0\xef\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\ - \x92\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x93\x04\x02\x1c\n\x0c\n\ - \x04\x05\x04\x03\x02\x12\x04\x93\x04\x02\x1c\n\x0c\n\x04\x05\x04\x02\0\ - \x12\x04\x95\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\x04\x95\x04\x02\ - \x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x95\x04\x1a\x1b\n;\n\x04\x05\ - \x04\x02\x01\x12\x04\x98\x04\x02\x0e\x1a-\x20Comment,\x20including\x20co\ - mment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\ - \x98\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x98\x04\x0c\r\n\x1b\ - \n\x04\x05\x04\x02\x02\x12\x04\x9b\x04\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,\ - `\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x9b\x04\x02\x16\n\r\n\x05\x05\ - \x04\x02\x02\x02\x12\x04\x9b\x04\x19\x1a\n2\n\x04\x05\x04\x02\x03\x12\ - \x04\x9d\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntact\ - ically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9d\x04\x02\x14\n\r\n\x05\ - \x05\x04\x02\x03\x02\x12\x04\x9d\x04\x17\x18\n5\n\x04\x05\x04\x02\x04\ - \x12\x04\xa0\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class\ - `,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xa0\x04\x02\t\n\r\n\ - \x05\x05\x04\x02\x04\x02\x12\x04\xa0\x04\x0c\r\n\x0c\n\x04\x05\x04\x02\ - \x05\x12\x04\xa1\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\x04\xa1\x04\ - \x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\xa1\x04\x16\x17\n\r\n\x05\ - \x05\x04\x02\x05\x03\x12\x04\xa1\x04\x18)\n\x0e\n\x06\x05\x04\x02\x05\ - \x03\x01\x12\x04\xa1\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\x12\x04\xa4\ - \x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x06\ - \x01\x12\x04\xa4\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\x12\x04\xa4\ - \x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa7\x04\x02\x11\x1aJ\x20no\ - n-specific\x20catch-all\x20for\x20any\x20identifier\x20not\x20better\x20\ - described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\x12\x04\xa7\x04\ - \x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa7\x04\x0f\x10\nN\n\x04\ - \x05\x04\x02\x08\x12\x04\xa9\x04\x02\x18\x1a@\x20Identifiers\x20builtin\ - \x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\ - \x05\x05\x04\x02\x08\x01\x12\x04\xa9\x04\x02\x13\n\r\n\x05\x05\x04\x02\ - \x08\x02\x12\x04\xa9\x04\x16\x17\n[\n\x04\x05\x04\x02\t\x12\x04\xab\x04\ - \x02\x15\x1aM\x20Identifiers\x20representing\x20`null`-like\x20values:\ - \x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x04\ - \x02\t\x01\x12\x04\xab\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\x02\x12\x04\ - \xab\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xad\x04\x02\x19\x1a\x20\ - \x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x04\ - \x02\n\x01\x12\x04\xad\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\x02\x12\x04\ - \xad\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xaf\x04\x02\x1f\x1a\ - \x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\ - \x0b\x01\x12\x04\xaf\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\x02\x12\x04\ - \xaf\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xb1\x04\x02\x1b\x1a%\ - \x20Parameter\x20definition\x20and\x20references\n\n\r\n\x05\x05\x04\x02\ - \x0c\x01\x12\x04\xb1\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0c\x02\x12\x04\ - \xb1\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb3\x04\x02\x17\x1aJ\x20\ - Identifiers\x20for\x20variable\x20definitions\x20and\x20references\x20wi\ - thin\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\r\x01\x12\x04\xb3\ - \x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb3\x04\x14\x16\nK\n\ - \x04\x05\x04\x02\x0e\x12\x04\xb5\x04\x02\x1a\x1a=\x20Identifiers\x20that\ - \x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\ - \x05\x05\x04\x02\x0e\x01\x12\x04\xb5\x04\x02\x14\n\r\n\x05\x05\x04\x02\ - \x0e\x02\x12\x04\xb5\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\x02\x0f\x12\x04\ - \xba\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\ - \x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20\ - This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20l\ - anguages,\n\x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\ - \x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\x04\xba\x04\ - \x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xba\x04\x18\x1a\n\x0c\n\ - \x04\x05\x04\x02\x10\x12\x04\xbb\x04\x02*\n\r\n\x05\x05\x04\x02\x10\x01\ - \x12\x04\xbb\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\x04\xbb\x04\ - \x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xbb\x04\x18)\n\x0e\n\x06\ - \x05\x04\x02\x10\x03\x01\x12\x04\xbb\x04\x19(\n4\n\x04\x05\x04\x02\x11\ - \x12\x04\xbe\x04\x02\x1a\x1a&\x20Function\x20references,\x20including\ - \x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xbe\x04\x02\x14\n\r\n\ - \x05\x05\x04\x02\x11\x02\x12\x04\xbe\x04\x17\x19\n(\n\x04\x05\x04\x02\ - \x12\x12\x04\xc0\x04\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\ - \r\n\x05\x05\x04\x02\x12\x01\x12\x04\xc0\x04\x02\x1e\n\r\n\x05\x05\x04\ - \x02\x12\x02\x12\x04\xc0\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\xc3\x04\ - \x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocations\n\n\r\ - \n\x05\x05\x04\x02\x13\x01\x12\x04\xc3\x04\x02\x11\n\r\n\x05\x05\x04\x02\ - \x13\x02\x12\x04\xc3\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\x04\xc5\ - \x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x04\x02\ - \x14\x01\x12\x04\xc5\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\x12\x04\ - \xc5\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xc8\x04\x02\x16\x1a\ - \x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\x04\xc8\ - \x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xc8\x04\x13\x15\nK\n\ - \x04\x05\x04\x02\x16\x12\x04\xca\x04\x02\x1d\x1a=\x20builtin\x20types\ - \x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\ - \x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xca\x04\x02\x17\n\r\n\x05\ - \x05\x04\x02\x16\x02\x12\x04\xca\x04\x1a\x1c\n7\n\x04\x05\x04\x02\x17\ - \x12\x04\xcd\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__at\ - tribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcd\x04\x02\x15\n\r\n\ - \x05\x05\x04\x02\x17\x02\x12\x04\xcd\x04\x18\x1a\n\x14\n\x04\x05\x04\x02\ - \x18\x12\x04\xd0\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x04\x02\ - \x18\x01\x12\x04\xd0\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\x12\x04\xd0\ - \x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd2\x04\x02\x15\x1a\n\ - \x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd2\x04\x02\x0f\ - \n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd2\x04\x12\x14\n\x13\n\x04\x05\ - \x04\x02\x1a\x12\x04\xd4\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x04\ - \x02\x1a\x01\x12\x04\xd4\x04\x02\x0f\n\r\n\x05\x05\x04\x02\x1a\x02\x12\ - \x04\xd4\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd6\x04\x02\x16\ - \x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\x02\x1b\x01\ - \x12\x04\xd6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\x04\xd6\x04\ - \x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xd8\x04\x02\x11\x1a\n\x20`|\ - `,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xd8\x04\x02\x0b\n\r\n\ - \x05\x05\x04\x02\x1c\x02\x12\x04\xd8\x04\x0e\x10\n0\n\x04\x05\x04\x02\ - \x1d\x12\x04\xdb\x04\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\ - \x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xdb\x04\x02\x0f\n\r\ - \n\x05\x05\x04\x02\x1d\x02\x12\x04\xdb\x04\x12\x14\n-\n\x04\x05\x04\x02\ - \x1e\x12\x04\xdd\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\"\ - ,\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdd\x04\x02\x15\n\r\ - \n\x05\x05\x04\x02\x1e\x02\x12\x04\xdd\x04\x18\x1a\n_\n\x04\x05\x04\x02\ - \x1f\x12\x04\xdf\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20\ - special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20st\ - rings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xdf\x04\x02\x16\n\r\n\x05\ - \x05\x04\x02\x1f\x02\x12\x04\xdf\x04\x19\x1b\nG\n\x04\x05\x04\x02\x20\ - \x12\x04\xe1\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"val\ - ue\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x04\ - \x02\x20\x01\x12\x04\xe1\x04\x02\x12\n\r\n\x05\x05\x04\x02\x20\x02\x12\ - \x04\xe1\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe3\x04\x02\x18\x1aH\ - \x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\ - \x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\x12\x04\ - \xe3\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe3\x04\x15\x17\n9\n\ - \x04\x05\x04\x02\"\x12\x04\xe5\x04\x02\x16\x1a+\x20Literal\x20numbers,\ - \x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\x01\x12\ - \x04\xe5\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe5\x04\x13\x15\ - \n\x1f\n\x04\x05\x04\x02#\x12\x04\xe7\x04\x02\x16\x1a\x11\x20`true`,\x20\ - `false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe7\x04\x02\x10\n\r\n\x05\ - \x05\x04\x02#\x02\x12\x04\xe7\x04\x13\x15\n&\n\x04\x05\x04\x02$\x12\x04\ - \xea\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\ - \x05\x04\x02$\x01\x12\x04\xea\x04\x02\x05\n\r\n\x05\x05\x04\x02$\x02\x12\ - \x04\xea\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xec\x04\x02\x14\x1a!\ - \x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02%\ - \x01\x12\x04\xec\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xec\x04\ - \x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xee\x04\x02\x14\x1a\x1e\x20Delimi\ - ters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\xee\ - \x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xee\x04\x11\x13\n\xf9\ - \x01\n\x02\x04\t\x12\x06\xf6\x04\0\xd7\x05\x01\x1a\xea\x01\x20Occurrence\ - \x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/\ - or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\ - \x20should\x20try\x20to\x20bundle\x20logically\x20related\x20information\ - \n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\ - \x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf6\x04\ - \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x8e\x05\x02\x1b\x1a\xd9\x08\ + \x12\x04\x96\x02\x0e\x0f\n\x19\n\x06\x04\x07\x04\0\x02\n\x12\x04\x98\x02\ + \x06\x13\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\ + \x04\x98\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x98\x02\ + \x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x0b\x12\x04\x99\x02\x06\x13\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x0b\x01\x12\x04\x99\x02\x06\x0e\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x0b\x02\x12\x04\x99\x02\x11\x12\n\x0e\n\x06\x04\x07\x04\0\ + \x02\x0c\x12\x04\x9a\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\x01\ + \x12\x04\x9a\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\x02\x12\x04\ + \x9a\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\x02\r\x12\x04\x9c\x02\x06\x14\ + \x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02\r\x01\x12\ + \x04\x9c\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\r\x02\x12\x04\x9c\x02\ + \x11\x13\n\x1d\n\x06\x04\x07\x04\0\x02\x0e\x12\x04\x9e\x02\x06\x16\x1a\r\ + \x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x01\x12\x04\x9e\ + \x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x02\x12\x04\x9e\x02\x13\ + \x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0f\x12\x04\xa0\x02\x06\x14\x1a\x0f\ + \x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\ + \x04\xa0\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\xa0\ + \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x10\x12\x04\xa1\x02\x06\x10\n\ + \x0f\n\x07\x04\x07\x04\0\x02\x10\x01\x12\x04\xa1\x02\x06\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02\x10\x02\x12\x04\xa1\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\ + \0\x02\x11\x12\x04\xa2\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\ + \x12\x04\xa2\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\ + \xa2\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa3\x02\x06\ + \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x12\x01\x12\x04\xa3\x02\x06\x0b\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x12\x02\x12\x04\xa3\x02\x0e\x10\n\x0e\n\x06\x04\ + \x07\x04\0\x02\x13\x12\x04\xa4\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x13\x01\x12\x04\xa4\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x13\x02\ + \x12\x04\xa4\x02\x0e\x10\n\x1a\n\x06\x04\x07\x04\0\x02\x14\x12\x04\xa6\ + \x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\0\x02\x14\ + \x01\x12\x04\xa6\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x02\x12\ + \x04\xa6\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\x02\x15\x12\x04\xa8\x02\ + \x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\ + \x12\x04\xa8\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa8\ + \x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x16\x12\x04\xa9\x02\x06\x11\n\ + \x0f\n\x07\x04\x07\x04\0\x02\x16\x01\x12\x04\xa9\x02\x06\x0b\n\x0f\n\x07\ + \x04\x07\x04\0\x02\x16\x02\x12\x04\xa9\x02\x0e\x10\n\x0e\n\x06\x04\x07\ + \x04\0\x02\x17\x12\x04\xaa\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x17\ + \x01\x12\x04\xaa\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\ + \xaa\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x18\x12\x04\xab\x02\x06\x14\ + \n\x0f\n\x07\x04\x07\x04\0\x02\x18\x01\x12\x04\xab\x02\x06\x0e\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x18\x02\x12\x04\xab\x02\x11\x13\n;\n\x06\x04\x07\ + \x04\0\x02\x19\x12\x04\xad\x02\x06\x12\x1a+\x20For\x20'get'\x20in\x20Swi\ + ft,\x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02\x19\ + \x01\x12\x04\xad\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x02\x12\ + \x04\xad\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x1a\x12\x04\xaf\x02\ + \x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x01\ + \x12\x04\xaf\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x02\x12\x04\xaf\ + \x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\x1b\x12\x04\xb1\x02\x06\x14\x1a\ + \x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x1b\x01\x12\x04\xb1\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\ + \x12\x04\xb1\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xb2\ + \x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xb2\x02\x06\ + \x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x02\x12\x04\xb2\x02\x12\x14\n\x0e\ + \n\x06\x04\x07\x04\0\x02\x1d\x12\x04\xb3\x02\x06\x0f\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1d\x01\x12\x04\xb3\x02\x06\t\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x1d\x02\x12\x04\xb3\x02\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\x1e\x12\ + \x04\xb5\x02\x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02\x1e\x01\x12\x04\xb5\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\ + \x02\x12\x04\xb5\x02\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x1f\x12\x04\xb7\ + \x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\ + \x01\x12\x04\xb7\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\x02\x12\ + \x04\xb7\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02\x20\x12\x04\xb9\x02\ + \x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02\x20\ + \x01\x12\x04\xb9\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\ + \xb9\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02!\x12\x04\xba\x02\x06\x11\ + \n\x0f\n\x07\x04\x07\x04\0\x02!\x01\x12\x04\xba\x02\x06\x0b\n\x0f\n\x07\ + \x04\x07\x04\0\x02!\x02\x12\x04\xba\x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\ + \0\x02\"\x12\x04\xbb\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\x12\ + \x04\xbb\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\"\x02\x12\x04\xbb\x02\ + \x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02#\x12\x04\xbd\x02\x06\x17\x1a\n\ + \x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02#\x01\x12\x04\xbd\x02\x06\ + \x11\n\x0f\n\x07\x04\x07\x04\0\x02#\x02\x12\x04\xbd\x02\x14\x16\n\x94\ + \x01\n\x06\x04\x07\x04\0\x02$\x12\x04\xc0\x02\x06\x1a\x1a\x83\x01\x20Ana\ + logous\x20to\x20'ThisParameter'\x20and\x20'SelfParameter',\x20but\x20for\ + \x20languages\n\x20like\x20Go\x20where\x20the\x20receiver\x20doesn't\x20\ + have\x20a\x20conventional\x20name.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\ + \x12\x04\xc0\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02$\x02\x12\x04\xc0\ + \x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02%\x12\x04\xc2\x02\x06\x1f\x1a(\ + \x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Go.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02%\x01\x12\x04\xc2\x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\ + \x02%\x02\x12\x04\xc2\x02\x1c\x1e\n\x1e\n\x06\x04\x07\x04\0\x02&\x12\x04\ + \xc4\x02\x06\x13\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02&\x01\x12\x04\xc4\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02&\x02\x12\ + \x04\xc4\x02\x10\x12\n\x1a\n\x06\x04\x07\x04\0\x02'\x12\x04\xc6\x02\x06\ + \x11\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\0\x02'\x01\x12\x04\ + \xc6\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02'\x02\x12\x04\xc6\x02\x0e\ + \x10\n\x1e\n\x06\x04\x07\x04\0\x02(\x12\x04\xc8\x02\x06\x14\x1a\x0e\x20F\ + or\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc8\x02\x06\ + \x0e\n\x0f\n\x07\x04\x07\x04\0\x02(\x02\x12\x04\xc8\x02\x11\x13\n\x0e\n\ + \x06\x04\x07\x04\0\x02)\x12\x04\xc9\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\ + \0\x02)\x01\x12\x04\xc9\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02)\x02\ + \x12\x04\xc9\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\xca\x02\ + \x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02*\x01\x12\x04\xca\x02\x06\x0f\n\ + \x0f\n\x07\x04\x07\x04\0\x02*\x02\x12\x04\xca\x02\x12\x14\n\x0e\n\x06\ + \x04\x07\x04\0\x02+\x12\x04\xcb\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ + \x02+\x01\x12\x04\xcb\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\ + \x04\xcb\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xcc\x02\x06\ + \x12\n\x0f\n\x07\x04\x07\x04\0\x02,\x01\x12\x04\xcc\x02\x06\x0c\n\x0f\n\ + \x07\x04\x07\x04\0\x02,\x02\x12\x04\xcc\x02\x0f\x11\n\x0e\n\x06\x04\x07\ + \x04\0\x02-\x12\x04\xcd\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\ + \x12\x04\xcd\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xcd\ + \x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02.\x12\x04\xce\x02\x06\x14\n\ + \x0f\n\x07\x04\x07\x04\0\x02.\x01\x12\x04\xce\x02\x06\x0e\n\x0f\n\x07\ + \x04\x07\x04\0\x02.\x02\x12\x04\xce\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\ + \0\x02/\x12\x04\xcf\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\ + \x04\xcf\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02/\x02\x12\x04\xcf\x02\ + \x10\x12\n\x0e\n\x06\x04\x07\x04\0\x020\x12\x04\xd0\x02\x06\x19\n\x0f\n\ + \x07\x04\x07\x04\0\x020\x01\x12\x04\xd0\x02\x06\x13\n\x0f\n\x07\x04\x07\ + \x04\0\x020\x02\x12\x04\xd0\x02\x16\x18\n\x0e\n\x06\x04\x07\x04\0\x021\ + \x12\x04\xd1\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xd1\ + \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x021\x02\x12\x04\xd1\x02\x12\x14\ + \n\x0e\n\x06\x04\x07\x04\0\x022\x12\x04\xd2\x02\x06\x1a\n\x0f\n\x07\x04\ + \x07\x04\0\x022\x01\x12\x04\xd2\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x022\x02\x12\x04\xd2\x02\x17\x19\n/\n\x06\x04\x07\x04\0\x023\x12\x04\ + \xd4\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSynonyms\n\n\x0f\ + \n\x07\x04\x07\x04\0\x023\x01\x12\x04\xd4\x02\x06\r\n\x0f\n\x07\x04\x07\ + \x04\0\x023\x02\x12\x04\xd4\x02\x10\x12\n\x1b\n\x06\x04\x07\x04\0\x024\ + \x12\x04\xd6\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\ + \x04\0\x024\x01\x12\x04\xd6\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x024\ + \x02\x12\x04\xd6\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x025\x12\x04\xd7\ + \x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd7\x02\x06\x0e\ + \n\x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd7\x02\x11\x13\nQ\n\x06\x04\ + \x07\x04\0\x026\x12\x04\xd9\x02\x06\x14\x1aA\x20Analogous\x20to\x20'Trai\ + t'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Objective-C\n\n\x0f\ + \n\x07\x04\x07\x04\0\x026\x01\x12\x04\xd9\x02\x06\x0e\n\x0f\n\x07\x04\ + \x07\x04\0\x026\x02\x12\x04\xd9\x02\x11\x13\nK\n\x06\x04\x07\x04\0\x027\ + \x12\x04\xdb\x02\x06\x1a\x1a;\x20Analogous\x20to\x20'AbstractMethod',\ + \x20for\x20Swift\x20and\x20Objective-C.\n\n\x0f\n\x07\x04\x07\x04\0\x027\ + \x01\x12\x04\xdb\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x027\x02\x12\x04\ + \xdb\x02\x17\x19\n9\n\x06\x04\x07\x04\0\x028\x12\x04\xdd\x02\x06\x1d\x1a\ + )\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20C++.\n\n\x0f\n\x07\ + \x04\x07\x04\0\x028\x01\x12\x04\xdd\x02\x06\x17\n\x0f\n\x07\x04\x07\x04\ + \0\x028\x02\x12\x04\xdd\x02\x1a\x1c\n\x1d\n\x06\x04\x07\x04\0\x029\x12\ + \x04\xdf\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\ + \x029\x01\x12\x04\xdf\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\ + \x04\xdf\x02\x14\x16\n4\n\x06\x04\x07\x04\0\x02:\x12\x04\xe1\x02\x06\x19\ + \x1a$\x20'self'\x20in\x20Python,\x20Rust,\x20Swift\x20etc.\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02:\x01\x12\x04\xe1\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\ + \0\x02:\x02\x12\x04\xe1\x02\x16\x18\n;\n\x06\x04\x07\x04\0\x02;\x12\x04\ + \xe3\x02\x06\x12\x1a+\x20For\x20'set'\x20in\x20Swift,\x20'attr_writer'\ + \x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02;\x01\x12\x04\xe3\x02\x06\ + \x0c\n\x0f\n\x07\x04\x07\x04\0\x02;\x02\x12\x04\xe3\x02\x0f\x11\n3\n\x06\ + \x04\x07\x04\0\x02<\x12\x04\xe5\x02\x06\x15\x1a#\x20For\x20Alloy,\x20ana\ + logous\x20to\x20'Struct'.\n\n\x0f\n\x07\x04\x07\x04\0\x02<\x01\x12\x04\ + \xe5\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\x12\x04\xe5\x02\x12\ + \x14\n\x1a\n\x06\x04\x07\x04\0\x02=\x12\x04\xe7\x02\x06\x1a\x1a\n\x20For\ + \x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02=\x01\x12\x04\xe7\x02\x06\x14\n\ + \x0f\n\x07\x04\x07\x04\0\x02=\x02\x12\x04\xe7\x02\x17\x19\n8\n\x06\x04\ + \x07\x04\0\x02>\x12\x04\xe9\x02\x06\x1b\x1a(\x20Analogous\x20to\x20'Stat\ + icMethod',\x20for\x20Ruby.\n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\ + \xe9\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02>\x02\x12\x04\xe9\x02\x18\ + \x1a\n5\n\x06\x04\x07\x04\0\x02?\x12\x04\xeb\x02\x06\x1c\x1a%\x20Analogo\ + us\x20to\x20'StaticField',\x20for\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + ?\x01\x12\x04\xeb\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\x02?\x02\x12\x04\ + \xeb\x02\x19\x1b\n\x18\n\x06\x04\x07\x04\0\x02@\x12\x04\xed\x02\x06\x17\ + \x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\x04\0\x02@\x01\x12\x04\xed\ + \x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\x02\x12\x04\xed\x02\x14\x16\ + \n\x18\n\x06\x04\x07\x04\0\x02A\x12\x04\xef\x02\x06\x17\x1a\x08\x20For\ + \x20C#\n\n\x0f\n\x07\x04\x07\x04\0\x02A\x01\x12\x04\xef\x02\x06\x11\n\ + \x0f\n\x07\x04\x07\x04\0\x02A\x02\x12\x04\xef\x02\x14\x16\n(\n\x06\x04\ + \x07\x04\0\x02B\x12\x04\xf1\x02\x06\x18\x1a\x18\x20For\x20Java,\x20C#,\ + \x20C++\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02B\x01\x12\x04\xf1\x02\x06\ + \x12\n\x0f\n\x07\x04\x07\x04\0\x02B\x02\x12\x04\xf1\x02\x15\x17\n)\n\x06\ + \x04\x07\x04\0\x02C\x12\x04\xf3\x02\x06\x1a\x1a\x19\x20For\x20C#,\x20Typ\ + eScript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02C\x01\x12\x04\xf3\x02\x06\ + \x14\n\x0f\n\x07\x04\x07\x04\0\x02C\x02\x12\x04\xf3\x02\x17\x19\n\x1c\n\ + \x06\x04\x07\x04\0\x02D\x12\x04\xf5\x02\x06\x1a\x1a\x0c\x20For\x20C,\x20\ + C++\n\n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf5\x02\x06\x14\n\x0f\n\ + \x07\x04\x07\x04\0\x02D\x02\x12\x04\xf5\x02\x17\x19\n\x0e\n\x06\x04\x07\ + \x04\0\x02E\x12\x04\xf6\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02E\x01\ + \x12\x04\xf6\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\x12\x04\xf6\ + \x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02F\x12\x04\xf7\x02\x06\x12\n\ + \x0f\n\x07\x04\x07\x04\0\x02F\x01\x12\x04\xf7\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02F\x02\x12\x04\xf7\x02\x0f\x11\n\x1b\n\x06\x04\x07\x04\ + \0\x02G\x12\x04\xf9\x02\x06\x15\x1a\x0b\x20For\x20Swift\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02G\x01\x12\x04\xf9\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\ + \0\x02G\x02\x12\x04\xf9\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02H\x12\ + \x04\xfb\x02\x06\x12\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02H\x01\x12\x04\xfb\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02H\x02\x12\ + \x04\xfb\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02I\x12\x04\xfd\x02\x06\ + \x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02I\x01\x12\x04\ + \xfd\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02I\x02\x12\x04\xfd\x02\x10\ + \x12\nU\n\x06\x04\x07\x04\0\x02J\x12\x04\x80\x03\x06\x19\x1aE\x20Method\ + \x20receiver\x20for\x20languages\n\x20'this'\x20in\x20JavaScript,\x20C++\ + ,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02J\x01\x12\x04\x80\x03\ + \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02J\x02\x12\x04\x80\x03\x16\x18\nO\n\ + \x06\x04\x07\x04\0\x02K\x12\x04\x82\x03\x06\x11\x1a?\x20Analogous\x20to\ + \x20'Protocol'\x20and\x20'TypeClass',\x20for\x20Rust,\x20Scala\x20etc.\n\ + \n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x82\x03\x06\x0b\n\x0f\n\x07\ + \x04\x07\x04\0\x02K\x02\x12\x04\x82\x03\x0e\x10\nE\n\x06\x04\x07\x04\0\ + \x02L\x12\x04\x84\x03\x06\x17\x1a5\x20Analogous\x20to\x20'AbstractMethod\ + ',\x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\ + \x12\x04\x84\x03\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02L\x02\x12\x04\x84\ + \x03\x14\x16\n\x89\x01\n\x06\x04\x07\x04\0\x02M\x12\x04\x87\x03\x06\x10\ + \x1ay\x20Data\x20type\x20definition\x20for\x20languages\x20like\x20OCaml\ + \x20which\x20use\x20`type`\n\x20rather\x20than\x20separate\x20keywords\ + \x20like\x20`struct`\x20and\x20`enum`.\n\n\x0f\n\x07\x04\x07\x04\0\x02M\ + \x01\x12\x04\x87\x03\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02M\x02\x12\x04\ + \x87\x03\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02N\x12\x04\x88\x03\x06\x15\n\ + \x0f\n\x07\x04\x07\x04\0\x02N\x01\x12\x04\x88\x03\x06\x0f\n\x0f\n\x07\ + \x04\x07\x04\0\x02N\x02\x12\x04\x88\x03\x12\x14\nS\n\x06\x04\x07\x04\0\ + \x02O\x12\x04\x8a\x03\x06\x15\x1aC\x20Analogous\x20to\x20'Trait'\x20and\ + \x20'Protocol',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02O\x01\x12\x04\x8a\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\ + \0\x02O\x02\x12\x04\x8a\x03\x12\x14\nM\n\x06\x04\x07\x04\0\x02P\x12\x04\ + \x8c\x03\x06\x1b\x1a=\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ + Haskell,\x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02P\x01\x12\ + \x04\x8c\x03\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02P\x02\x12\x04\x8c\x03\ + \x18\x1a\n\x1d\n\x06\x04\x07\x04\0\x02Q\x12\x04\x8e\x03\x06\x16\x1a\r\ + \x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\x12\x04\x8e\x03\ + \x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8e\x03\x13\x15\n\ + \x0e\n\x06\x04\x07\x04\0\x02R\x12\x04\x8f\x03\x06\x19\n\x0f\n\x07\x04\ + \x07\x04\0\x02R\x01\x12\x04\x8f\x03\x06\x13\n\x0f\n\x07\x04\x07\x04\0\ + \x02R\x02\x12\x04\x8f\x03\x16\x18\n(\n\x06\x04\x07\x04\0\x02S\x12\x04\ + \x91\x03\x06\x11\x1a\x18\x20For\x20C,\x20C++,\x20Capn\x20Proto\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02S\x01\x12\x04\x91\x03\x06\x0b\n\x0f\n\x07\x04\x07\ + \x04\0\x02S\x02\x12\x04\x91\x03\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02T\ + \x12\x04\x92\x03\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02T\x01\x12\x04\x92\ + \x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02T\x02\x12\x04\x92\x03\x0e\x10\ + \n[\n\x06\x04\x07\x04\0\x02U\x12\x04\x93\x03\x06\x14\"K\x20Next\x20=\x20\ + 87;\n\x20Feel\x20free\x20to\x20open\x20a\x20PR\x20proposing\x20new\x20la\ + nguage-specific\x20kinds.\n\n\x0f\n\x07\x04\x07\x04\0\x02U\x01\x12\x04\ + \x93\x03\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02U\x02\x12\x04\x93\x03\x11\ + \x13\n\xf3\x03\n\x04\x04\x07\x02\x04\x12\x04\xa0\x03\x02\x1a\x1a\xe4\x03\ + \x20(optional)\x20The\x20name\x20of\x20this\x20symbol\x20as\x20it\x20sho\ + uld\x20be\x20displayed\x20to\x20the\x20user.\n\x20For\x20example,\x20the\ + \x20symbol\x20\"com/example/MyClass#myMethod(+1).\"\x20should\x20have\ + \x20the\n\x20display\x20name\x20\"myMethod\".\x20The\x20`symbol`\x20fiel\ + d\x20is\x20not\x20a\x20reliable\x20source\x20of\n\x20the\x20display\x20n\ + ame\x20for\x20several\x20reasons:\n\n\x20-\x20Local\x20symbols\x20don't\ + \x20encode\x20the\x20name.\n\x20-\x20Some\x20languages\x20have\x20case-i\ + nsensitive\x20names,\x20so\x20the\x20symbol\x20is\x20all-lowercase.\n\ + \x20-\x20The\x20symbol\x20may\x20encode\x20names\x20with\x20special\x20c\ + haracters\x20that\x20should\x20not\x20be\n\x20\x20\x20displayed\x20to\ + \x20the\x20user.\n\n\r\n\x05\x04\x07\x02\x04\x05\x12\x04\xa0\x03\x02\x08\ + \n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\xa0\x03\t\x15\n\r\n\x05\x04\x07\ + \x02\x04\x03\x12\x04\xa0\x03\x18\x19\n\xc4\x03\n\x04\x04\x07\x02\x05\x12\ + \x04\xa7\x03\x02'\x1a\xb5\x03\x20(optional)\x20The\x20signature\x20of\ + \x20this\x20symbol\x20as\x20it's\x20displayed\x20in\x20API\n\x20document\ + ation\x20or\x20in\x20hover\x20tooltips.\x20For\x20example,\x20a\x20Java\ + \x20method\x20that\x20adds\n\x20two\x20numbers\x20this\x20would\x20have\ + \x20`Document.language\x20=\x20\"java\"`\x20and\x20`Document.text\n\x20=\ + \x20\"void\x20add(int\x20a,\x20int\x20b)\".\x20The\x20`language`\x20and\ + \x20`text`\x20fields\x20are\x20required\n\x20while\x20other\x20fields\ + \x20such\x20as\x20`Documentation.occurrences`\x20can\x20be\x20optionally\ + \n\x20included\x20to\x20support\x20hyperlinking\x20referenced\x20symbols\ + \x20in\x20the\x20signature.\n\n\r\n\x05\x04\x07\x02\x05\x06\x12\x04\xa7\ + \x03\x02\n\n\r\n\x05\x04\x07\x02\x05\x01\x12\x04\xa7\x03\x0b\"\n\r\n\x05\ + \x04\x07\x02\x05\x03\x12\x04\xa7\x03%&\n\xc9\x08\n\x04\x04\x07\x02\x06\ + \x12\x04\xb9\x03\x02\x1e\x1a\xba\x08\x20(optional)\x20The\x20enclosing\ + \x20symbol\x20if\x20this\x20is\x20a\x20local\x20symbol.\x20\x20For\x20no\ + n-local\n\x20symbols,\x20the\x20enclosing\x20symbol\x20should\x20be\x20p\ + arsed\x20from\x20the\x20`symbol`\x20field\n\x20using\x20the\x20`Descript\ + or`\x20grammar.\n\n\x20The\x20primary\x20use-case\x20for\x20this\x20fiel\ + d\x20is\x20to\x20allow\x20local\x20symbol\x20to\x20be\x20displayed\n\x20\ + in\x20a\x20symbol\x20hierarchy\x20for\x20API\x20documentation.\x20It's\ + \x20OK\x20to\x20leave\x20this\x20field\n\x20empty\x20for\x20local\x20var\ + iables\x20since\x20local\x20variables\x20usually\x20don't\x20belong\x20i\ + n\x20API\n\x20documentation.\x20However,\x20in\x20the\x20situation\x20th\ + at\x20you\x20wish\x20to\x20include\x20a\x20local\n\x20symbol\x20in\x20th\ + e\x20hierarchy,\x20then\x20you\x20can\x20use\x20`enclosing_symbol`\x20to\ + \x20locate\x20the\n\x20\"parent\"\x20or\x20\"owner\"\x20of\x20this\x20lo\ + cal\x20symbol.\x20For\x20example,\x20a\x20Java\x20indexer\x20may\n\x20ch\ + oose\x20to\x20use\x20local\x20symbols\x20for\x20private\x20class\x20fiel\ + ds\x20while\x20providing\x20an\n\x20`enclosing_symbol`\x20to\x20referenc\ + e\x20the\x20enclosing\x20class\x20to\x20allow\x20the\x20field\x20to\n\ + \x20be\x20part\x20of\x20the\x20class\x20documentation\x20hierarchy.\x20F\ + rom\x20the\x20perspective\x20of\x20an\n\x20author\x20of\x20an\x20indexer\ + ,\x20the\x20decision\x20to\x20use\x20a\x20local\x20symbol\x20or\x20globa\ + l\x20symbol\n\x20should\x20exclusively\x20be\x20determined\x20whether\ + \x20the\x20local\x20symbol\x20is\x20accessible\n\x20outside\x20the\x20do\ + cument,\x20not\x20by\x20the\x20capability\x20to\x20find\x20the\x20enclos\ + ing\n\x20symbol.\n\n\r\n\x05\x04\x07\x02\x06\x05\x12\x04\xb9\x03\x02\x08\ + \n\r\n\x05\x04\x07\x02\x06\x01\x12\x04\xb9\x03\t\x19\n\r\n\x05\x04\x07\ + \x02\x06\x03\x12\x04\xb9\x03\x1c\x1d\n\x0c\n\x02\x04\x08\x12\x06\xbd\x03\ + \0\xf5\x03\x01\n\x0b\n\x03\x04\x08\x01\x12\x04\xbd\x03\x08\x14\n\x0c\n\ + \x04\x04\x08\x02\0\x12\x04\xbe\x03\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\ + \x12\x04\xbe\x03\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xbe\x03\t\ + \x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\xbe\x03\x12\x13\n\xde\x08\n\x04\ + \x04\x08\x02\x01\x12\x04\xd7\x03\x02\x18\x1a\xcf\x08\x20When\x20resolvin\ + g\x20\"Find\x20references\",\x20this\x20field\x20documents\x20what\x20ot\ + her\x20symbols\n\x20should\x20be\x20included\x20together\x20with\x20this\ + \x20symbol.\x20For\x20example,\x20consider\x20the\n\x20following\x20Type\ + Script\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\x20Anim\ + al#\n\x20\x20\x20sound():\x20string\n\x20\x20\x20^^^^^\x20definition\x20\ + Animal#sound()\n\x20}\n\x20class\x20Dog\x20implements\x20Animal\x20{\n\ + \x20\x20\x20\x20\x20\x20\x20^^^\x20definition\x20Dog#,\x20relationships\ + \x20=\x20[{symbol:\x20\"Animal#\",\x20is_implementation:\x20true}]\n\x20\ + \x20\x20public\x20sound():\x20string\x20{\x20return\x20\"woof\"\x20}\n\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound\ + (),\x20references_symbols\x20=\x20Animal#sound(),\x20relationships\x20=\ + \x20[{symbol:\x20\"Animal#sound()\",\x20is_implementation:true,\x20is_re\ + ference:\x20true}]\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\xd7\x03\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\ + \xd7\x03\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd7\x03\x16\x17\n\ + \xee\x03\n\x04\x04\x08\x02\x02\x12\x04\xe0\x03\x02\x1d\x1a\xdf\x03\x20Si\ + milar\x20to\x20`is_reference`\x20but\x20for\x20\"Find\x20implementations\ + \".\n\x20It's\x20common\x20for\x20`is_implementation`\x20and\x20`is_refe\ + rence`\x20to\x20both\x20be\x20true\x20but\n\x20it's\x20not\x20always\x20\ + the\x20case.\n\x20In\x20the\x20TypeScript\x20example\x20above,\x20observ\ + e\x20that\x20`Dog#`\x20has\x20an\n\x20`is_implementation`\x20relationshi\ + p\x20with\x20`\"Animal#\"`\x20but\x20not\x20`is_reference`.\n\x20This\ + \x20is\x20because\x20\"Find\x20references\"\x20on\x20the\x20\"Animal#\"\ + \x20symbol\x20should\x20not\x20return\n\x20\"Dog#\".\x20We\x20only\x20wa\ + nt\x20\"Dog#\"\x20to\x20return\x20as\x20a\x20result\x20for\x20\"Find\n\ + \x20implementations\"\x20on\x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\ + \x04\x08\x02\x02\x05\x12\x04\xe0\x03\x02\x06\n\r\n\x05\x04\x08\x02\x02\ + \x01\x12\x04\xe0\x03\x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xe0\ + \x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\x12\x04\xe2\x03\x02\x1e\x1aB\x20Si\ + milar\x20to\x20`references_symbols`\x20but\x20for\x20\"Go\x20to\x20type\ + \x20definition\".\n\n\r\n\x05\x04\x08\x02\x03\x05\x12\x04\xe2\x03\x02\ + \x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\xe2\x03\x07\x19\n\r\n\x05\x04\ + \x08\x02\x03\x03\x12\x04\xe2\x03\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\ + \x12\x04\xf3\x03\x02\x19\x1a\xd5\x06\x20Allows\x20overriding\x20the\x20b\ + ehavior\x20of\x20\"Go\x20to\x20definition\"\x20and\x20\"Find\x20referenc\ + es\"\n\x20for\x20symbols\x20which\x20do\x20not\x20have\x20a\x20definitio\ + n\x20of\x20their\x20own\x20or\x20could\n\x20potentially\x20have\x20multi\ + ple\x20definitions.\n\n\x20For\x20example,\x20in\x20a\x20language\x20wit\ + h\x20single\x20inheritance\x20and\x20no\x20field\x20overriding,\n\x20inh\ + erited\x20fields\x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\ + \x20ancestor\x20which\x20declares\n\x20the\x20field.\x20In\x20such\x20a\ + \x20situation,\x20is_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\ + \x20other\x20hand,\x20in\x20languages\x20with\x20single\x20inheritance\ + \x20and\x20some\x20form\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_de\ + finition\x20to\x20relate\x20the\x20symbol\x20to\x20the\n\x20matching\x20\ + symbol\x20in\x20ancestor\x20classes,\x20and\x20is_reference\x20to\x20rel\ + ate\x20the\n\x20symbol\x20to\x20the\x20matching\x20symbol\x20in\x20mixin\ + s.\n\n\x20NOTE:\x20At\x20the\x20moment,\x20due\x20to\x20limitations\x20o\ + f\x20the\x20SCIP\x20to\x20LSIF\x20conversion,\n\x20only\x20global\x20sym\ + bols\x20in\x20an\x20index\x20are\x20allowed\x20to\x20use\x20is_definitio\ + n.\n\x20The\x20relationship\x20may\x20not\x20get\x20recorded\x20if\x20ei\ + ther\x20symbol\x20is\x20local.\n\"A\x20Update\x20registerInverseRelation\ + ships\x20on\x20adding\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\ + \x02\x04\x05\x12\x04\xf3\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\ + \x04\xf3\x03\x07\x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf3\x03\x17\ + \x18\n\x88\x03\n\x02\x05\x03\x12\x06\xfc\x03\0\x92\x04\x01\x1a\xf9\x02\ + \x20SymbolRole\x20declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20\ + in\x20an\x20occurrence.\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bi\ + tset\x20where\x20each\x20bit\x20represents\x20a\x20different\x20role.\ + \x20For\x20example,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20rol\ + e\x20is\x20set,\x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\ + \n\x20enum\x20value\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20ca\ + n\x20be\x20implemented\x20with\x20the\n\x20logic:\x20`const\x20isImportR\ + ole\x20=\x20(role.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\ + \x0b\n\x03\x05\x03\x01\x12\x04\xfc\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\ + \x12\x04\xff\x03\x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20t\ + o\x20be\x20used;\x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\ + \x20from\x20the\x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\ + \x02\0\x01\x12\x04\xff\x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\ + \xff\x03\x1a\x1b\nT\n\x04\x05\x03\x02\x01\x12\x04\x81\x04\x02\x13\x1aF\ + \x20Is\x20the\x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20thi\ + s\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\ + \x04\x81\x04\x02\x0c\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\x81\x04\x0f\ + \x12\n,\n\x04\x05\x03\x02\x02\x12\x04\x83\x04\x02\x0f\x1a\x1e\x20Is\x20t\ + he\x20symbol\x20imported\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\ + \x04\x83\x04\x02\x08\n\r\n\x05\x05\x03\x02\x02\x02\x12\x04\x83\x04\x0b\ + \x0e\n+\n\x04\x05\x03\x02\x03\x12\x04\x85\x04\x02\x14\x1a\x1d\x20Is\x20t\ + he\x20symbol\x20written\x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\ + \x85\x04\x02\r\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x85\x04\x10\x13\n(\ + \n\x04\x05\x03\x02\x04\x12\x04\x87\x04\x02\x13\x1a\x1a\x20Is\x20the\x20s\ + ymbol\x20read\x20here?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x87\x04\ + \x02\x0c\n\r\n\x05\x05\x03\x02\x04\x02\x12\x04\x87\x04\x0f\x12\n0\n\x04\ + \x05\x03\x02\x05\x12\x04\x89\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\ + \x20in\x20generated\x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x89\ + \x04\x02\x0b\n\r\n\x05\x05\x03\x02\x05\x02\x12\x04\x89\x04\x0e\x12\n+\n\ + \x04\x05\x03\x02\x06\x12\x04\x8b\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20sym\ + bol\x20in\x20test\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x8b\ + \x04\x02\x06\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x8b\x04\t\r\n\xed\x01\ + \n\x04\x05\x03\x02\x07\x12\x04\x91\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\ + \x20a\x20signature\x20for\x20a\x20symbol\x20that\x20is\x20defined\x20els\ + ewhere?\n\n\x20Applies\x20to\x20forward\x20declarations\x20for\x20langua\ + ges\x20like\x20C,\x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\ + \x20`val`\x20declarations\x20in\x20interface\n\x20files\x20in\x20languag\ + es\x20like\x20SML\x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\ + \x04\x91\x04\x02\x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x91\x04\x16\ + \x1a\n\x0c\n\x02\x05\x04\x12\x06\x94\x04\0\xf1\x04\x01\n\x0b\n\x03\x05\ + \x04\x01\x12\x04\x94\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x95\x04\ + \x02\x1c\n\x0c\n\x04\x05\x04\x03\x02\x12\x04\x95\x04\x02\x1c\n\x0c\n\x04\ + \x05\x04\x02\0\x12\x04\x97\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\ + \x04\x97\x04\x02\x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x97\x04\x1a\x1b\ + \n;\n\x04\x05\x04\x02\x01\x12\x04\x9a\x04\x02\x0e\x1a-\x20Comment,\x20in\ + cluding\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\ + \x01\x12\x04\x9a\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x9a\x04\ + \x0c\r\n\x1b\n\x04\x05\x04\x02\x02\x12\x04\x9d\x04\x02\x1b\x1a\r\x20`;`\ + \x20`.`\x20`,`\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x9d\x04\x02\x16\n\ + \r\n\x05\x05\x04\x02\x02\x02\x12\x04\x9d\x04\x19\x1a\n2\n\x04\x05\x04\ + \x02\x03\x12\x04\x9f\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20use\ + d\x20syntactically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9f\x04\x02\ + \x14\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\x9f\x04\x17\x18\n5\n\x04\x05\ + \x04\x02\x04\x12\x04\xa2\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return\ + `,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xa2\x04\ + \x02\t\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\xa2\x04\x0c\r\n\x0c\n\x04\ + \x05\x04\x02\x05\x12\x04\xa3\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\ + \x04\xa3\x04\x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\xa3\x04\x16\ + \x17\n\r\n\x05\x05\x04\x02\x05\x03\x12\x04\xa3\x04\x18)\n\x0e\n\x06\x05\ + \x04\x02\x05\x03\x01\x12\x04\xa3\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\ + \x12\x04\xa6\x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\ + \x04\x02\x06\x01\x12\x04\xa6\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\ + \x12\x04\xa6\x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa9\x04\x02\ + \x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20identifier\x20no\ + t\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\ + \x12\x04\xa9\x04\x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa9\x04\ + \x0f\x10\nN\n\x04\x05\x04\x02\x08\x12\x04\xab\x04\x02\x18\x1a@\x20Identi\ + fiers\x20builtin\x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\ + \x20Python.\n\n\r\n\x05\x05\x04\x02\x08\x01\x12\x04\xab\x04\x02\x13\n\r\ + \n\x05\x05\x04\x02\x08\x02\x12\x04\xab\x04\x16\x17\n[\n\x04\x05\x04\x02\ + \t\x12\x04\xad\x04\x02\x15\x1aM\x20Identifiers\x20representing\x20`null`\ + -like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\ + \n\x05\x05\x04\x02\t\x01\x12\x04\xad\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\ + \x02\x12\x04\xad\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xaf\x04\x02\ + \x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\ + \x05\x05\x04\x02\n\x01\x12\x04\xaf\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\ + \x02\x12\x04\xaf\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xb1\x04\ + \x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\ + \x05\x04\x02\x0b\x01\x12\x04\xb1\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\ + \x02\x12\x04\xb1\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xb3\x04\ + \x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20references\n\n\r\n\ + \x05\x05\x04\x02\x0c\x01\x12\x04\xb3\x04\x02\x15\n\r\n\x05\x05\x04\x02\ + \x0c\x02\x12\x04\xb3\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb5\x04\ + \x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20definitions\x20and\ + \x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\ + \r\x01\x12\x04\xb5\x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb5\ + \x04\x14\x16\nK\n\x04\x05\x04\x02\x0e\x12\x04\xb7\x04\x02\x1a\x1a=\x20Id\ + entifiers\x20that\x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\ + \x20scope\n\n\r\n\x05\x05\x04\x02\x0e\x01\x12\x04\xb7\x04\x02\x14\n\r\n\ + \x05\x05\x04\x02\x0e\x02\x12\x04\xb7\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\ + \x02\x0f\x12\x04\xbc\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representi\ + ng\x20a\x20unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\ + \n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20\ + and\x20JVM\x20languages,\n\x20and\x20a\x20module\x20in\x20languages\x20l\ + ike\x20Python\x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\ + \x04\xbc\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xbc\x04\x18\ + \x1a\n\x0c\n\x04\x05\x04\x02\x10\x12\x04\xbd\x04\x02*\n\r\n\x05\x05\x04\ + \x02\x10\x01\x12\x04\xbd\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\ + \x04\xbd\x04\x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xbd\x04\x18)\ + \n\x0e\n\x06\x05\x04\x02\x10\x03\x01\x12\x04\xbd\x04\x19(\n4\n\x04\x05\ + \x04\x02\x11\x12\x04\xc0\x04\x02\x1a\x1a&\x20Function\x20references,\x20\ + including\x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xc0\x04\x02\ + \x14\n\r\n\x05\x05\x04\x02\x11\x02\x12\x04\xc0\x04\x17\x19\n(\n\x04\x05\ + \x04\x02\x12\x12\x04\xc2\x04\x02$\x1a\x1a\x20Function\x20definition\x20o\ + nly\n\n\r\n\x05\x05\x04\x02\x12\x01\x12\x04\xc2\x04\x02\x1e\n\r\n\x05\ + \x05\x04\x02\x12\x02\x12\x04\xc2\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\ + \xc5\x04\x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocation\ + s\n\n\r\n\x05\x05\x04\x02\x13\x01\x12\x04\xc5\x04\x02\x11\n\r\n\x05\x05\ + \x04\x02\x13\x02\x12\x04\xc5\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\ + \x04\xc7\x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\ + \x04\x02\x14\x01\x12\x04\xc7\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\ + \x12\x04\xc7\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xca\x04\x02\ + \x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\ + \x04\xca\x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xca\x04\x13\ + \x15\nK\n\x04\x05\x04\x02\x16\x12\x04\xcc\x04\x02\x1d\x1a=\x20builtin\ + \x20types\x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int\ + `\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xcc\x04\x02\x17\n\ + \r\n\x05\x05\x04\x02\x16\x02\x12\x04\xcc\x04\x1a\x1c\n7\n\x04\x05\x04\ + \x02\x17\x12\x04\xcf\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\ + \x20__attribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcf\x04\x02\ + \x15\n\r\n\x05\x05\x04\x02\x17\x02\x12\x04\xcf\x04\x18\x1a\n\x14\n\x04\ + \x05\x04\x02\x18\x12\x04\xd2\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\ + \x05\x04\x02\x18\x01\x12\x04\xd2\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\ + \x12\x04\xd2\x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd4\x04\x02\ + \x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd4\ + \x04\x02\x0f\n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd4\x04\x12\x14\n\x13\ + \n\x04\x05\x04\x02\x1a\x12\x04\xd6\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\ + \x05\x05\x04\x02\x1a\x01\x12\x04\xd6\x04\x02\x0f\n\r\n\x05\x05\x04\x02\ + \x1a\x02\x12\x04\xd6\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd8\ + \x04\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\ + \x02\x1b\x01\x12\x04\xd8\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\ + \x04\xd8\x04\x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xda\x04\x02\x11\ + \x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xda\x04\ + \x02\x0b\n\r\n\x05\x05\x04\x02\x1c\x02\x12\x04\xda\x04\x0e\x10\n0\n\x04\ + \x05\x04\x02\x1d\x12\x04\xdd\x04\x02\x15\x1a\"\x20Literal\x20strings:\ + \x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xdd\x04\ + \x02\x0f\n\r\n\x05\x05\x04\x02\x1d\x02\x12\x04\xdd\x04\x12\x14\n-\n\x04\ + \x05\x04\x02\x1e\x12\x04\xdf\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes\ + :\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdf\x04\ + \x02\x15\n\r\n\x05\x05\x04\x02\x1e\x02\x12\x04\xdf\x04\x18\x1a\n_\n\x04\ + \x05\x04\x02\x1f\x12\x04\xe1\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20\ + strings,\x20special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20\ + format\x20strings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xe1\x04\x02\ + \x16\n\r\n\x05\x05\x04\x02\x1f\x02\x12\x04\xe1\x04\x19\x1b\nG\n\x04\x05\ + \x04\x02\x20\x12\x04\xe3\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\ + \":\x20\"value\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\ + \x05\x05\x04\x02\x20\x01\x12\x04\xe3\x04\x02\x12\n\r\n\x05\x05\x04\x02\ + \x20\x02\x12\x04\xe3\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe5\x04\ + \x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20dif\ + ferentiate\x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\ + \x12\x04\xe5\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe5\x04\x15\ + \x17\n9\n\x04\x05\x04\x02\"\x12\x04\xe7\x04\x02\x16\x1a+\x20Literal\x20n\ + umbers,\x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\ + \x01\x12\x04\xe7\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe7\x04\ + \x13\x15\n\x1f\n\x04\x05\x04\x02#\x12\x04\xe9\x04\x02\x16\x1a\x11\x20`tr\ + ue`,\x20`false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe9\x04\x02\x10\n\r\ + \n\x05\x05\x04\x02#\x02\x12\x04\xe9\x04\x13\x15\n&\n\x04\x05\x04\x02$\ + \x12\x04\xec\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\ + \r\n\x05\x05\x04\x02$\x01\x12\x04\xec\x04\x02\x05\n\r\n\x05\x05\x04\x02$\ + \x02\x12\x04\xec\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xee\x04\x02\x14\ + \x1a!\x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\ + \x02%\x01\x12\x04\xee\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xee\ + \x04\x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xf0\x04\x02\x14\x1a\x1e\x20De\ + limiters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\ + \xf0\x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xf0\x04\x11\x13\n\ + \xf9\x01\n\x02\x04\t\x12\x06\xf8\x04\0\xd9\x05\x01\x1a\xea\x01\x20Occurr\ + ence\x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20\ + and/or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20index\ + ers\x20should\x20try\x20to\x20bundle\x20logically\x20related\x20informat\ + ion\n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20t\ + o\x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf8\x04\ + \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x90\x05\x02\x1b\x1a\xd9\x08\ \x20Half-open\x20[start,\x20end)\x20range\x20of\x20this\x20occurrence.\ \x20Must\x20be\x20exactly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\ \x20Four\x20elements:\x20`[startLine,\x20startCharacter,\x20endLine,\x20\ @@ -5594,21 +5603,21 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ncoding\x20is\x20admittedly\x20more\x20embarrassing\x20to\n\x20work\x20w\ ith\x20in\x20some\x20programming\x20languages\x20but\x20we\x20hope\x20th\ e\x20performance\n\x20improvements\x20make\x20up\x20for\x20it.\n\n\r\n\ - \x05\x04\t\x02\0\x04\x12\x04\x8e\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ - \x04\x8e\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8e\x05\x11\x16\n\ - \r\n\x05\x04\t\x02\0\x03\x12\x04\x8e\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ - \x02\x01\x12\x04\x91\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ + \x05\x04\t\x02\0\x04\x12\x04\x90\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ + \x04\x90\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x90\x05\x11\x16\n\ + \r\n\x05\x04\t\x02\0\x03\x12\x04\x90\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ + \x02\x01\x12\x04\x93\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ that\x20appears\x20at\x20this\x20position.\x20See\n\x20`SymbolInformatio\ n.symbol`\x20for\x20how\x20to\x20format\x20symbols\x20as\x20strings.\n\n\ - \r\n\x05\x04\t\x02\x01\x05\x12\x04\x91\x05\x02\x08\n\r\n\x05\x04\t\x02\ - \x01\x01\x12\x04\x91\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x91\ - \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x94\x05\x02\x19\x1a\ + \r\n\x05\x04\t\x02\x01\x05\x12\x04\x93\x05\x02\x08\n\r\n\x05\x04\t\x02\ + \x01\x01\x12\x04\x93\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x93\ + \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x96\x05\x02\x19\x1a\ \x88\x01\x20(optional)\x20Bitset\x20containing\x20`SymbolRole`s\x20in\ \x20this\x20occurrence.\n\x20See\x20`SymbolRole`'s\x20documentation\x20f\ or\x20how\x20to\x20read\x20and\x20write\x20this\x20field.\n\n\r\n\x05\ - \x04\t\x02\x02\x05\x12\x04\x94\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ - \x12\x04\x94\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x94\x05\x17\ - \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9d\x05\x02-\x1a\xe2\x03\x20(\ + \x04\t\x02\x02\x05\x12\x04\x96\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ + \x12\x04\x96\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x96\x05\x17\ + \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9f\x05\x02-\x1a\xe2\x03\x20(\ optional)\x20CommonMark-formatted\x20documentation\x20for\x20this\x20spe\ cific\x20range.\x20If\n\x20empty,\x20the\x20`Symbol.documentation`\x20fi\ eld\x20is\x20used\x20instead.\x20One\x20example\n\x20where\x20this\x20fi\ @@ -5619,19 +5628,19 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x20This\x20field\x20can\x20also\x20be\x20used\x20for\x20dynamically\ \x20or\x20gradually\x20typed\x20languages,\n\x20which\x20commonly\x20all\ ow\x20for\x20type-changing\x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\ - \x12\x04\x9d\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9d\x05\x0b\ - \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9d\x05\x12(\n\r\n\x05\x04\t\ - \x02\x03\x03\x12\x04\x9d\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\x9f\x05\ + \x12\x04\x9f\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9f\x05\x0b\ + \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9f\x05\x12(\n\r\n\x05\x04\t\ + \x02\x03\x03\x12\x04\x9f\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\xa1\x05\ \x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\x20highlighting\x20class\ \x20should\x20be\x20used\x20for\x20this\x20range?\n\n\r\n\x05\x04\t\x02\ - \x04\x06\x12\x04\x9f\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\x9f\ - \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\x9f\x05\x1b\x1c\nW\n\x04\ - \x04\t\x02\x05\x12\x04\xa1\x05\x02&\x1aI\x20(optional)\x20Diagnostics\ + \x04\x06\x12\x04\xa1\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\xa1\ + \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\xa1\x05\x1b\x1c\nW\n\x04\ + \x04\t\x02\x05\x12\x04\xa3\x05\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\xa1\x05\x02\n\n\r\n\x05\x04\t\ - \x02\x05\x06\x12\x04\xa1\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ - \xa1\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\xa1\x05$%\n\xb7\x0e\n\ - \x04\x04\t\x02\x06\x12\x04\xd6\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ + .\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\xa3\x05\x02\n\n\r\n\x05\x04\t\ + \x02\x05\x06\x12\x04\xa3\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ + \xa3\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\xa3\x05$%\n\xb7\x0e\n\ + \x04\x04\t\x02\x06\x12\x04\xd8\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ ng\x20the\x20same\x20encoding\x20as\x20the\x20sibling\x20`range`\x20fiel\ d,\x20half-open\n\x20source\x20range\x20of\x20the\x20nearest\x20non-triv\ ial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\n\x20enclose\ @@ -5678,55 +5687,55 @@ static file_descriptor_proto_data: &'static [u8] = b"\ nclosing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20ran\ ge\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosi\ - ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd6\x05\x02\n\n\ - \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd6\x05\x0b\x10\n\r\n\x05\x04\t\x02\ - \x06\x01\x12\x04\xd6\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd6\ - \x05#$\nw\n\x02\x04\n\x12\x06\xdb\x05\0\xe6\x05\x01\x1ai\x20Represents\ + ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd8\x05\x02\n\n\ + \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd8\x05\x0b\x10\n\r\n\x05\x04\t\x02\ + \x06\x01\x12\x04\xd8\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd8\ + \x05#$\nw\n\x02\x04\n\x12\x06\xdd\x05\0\xe8\x05\x01\x1ai\x20Represents\ \x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20wa\ rning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\n\ - \n\x0b\n\x03\x04\n\x01\x12\x04\xdb\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ - \x04\xdd\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ + \n\x0b\n\x03\x04\n\x01\x12\x04\xdd\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ + \x04\xdf\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ ted\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20hint?\n\n\r\n\ - \x05\x04\n\x02\0\x06\x12\x04\xdd\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ - \x04\xdd\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdd\x05\x16\x17\n\ - ]\n\x04\x04\n\x02\x01\x12\x04\xdf\x05\x02\x12\x1aO\x20(optional)\x20Code\ + \x05\x04\n\x02\0\x06\x12\x04\xdf\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ + \x04\xdf\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdf\x05\x16\x17\n\ + ]\n\x04\x04\n\x02\x01\x12\x04\xe1\x05\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\xdf\x05\x02\ - \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xdf\x05\t\r\n\r\n\x05\x04\n\x02\ - \x01\x03\x12\x04\xdf\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xe1\x05\ + \x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\xe1\x05\x02\ + \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xe1\x05\t\r\n\r\n\x05\x04\n\x02\ + \x01\x03\x12\x04\xe1\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xe3\x05\ \x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\n\n\r\n\x05\x04\ - \n\x02\x02\x05\x12\x04\xe1\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ - \x04\xe1\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xe1\x05\x13\x14\n\ - ~\n\x04\x04\n\x02\x03\x12\x04\xe4\x05\x02\x14\x1ap\x20(optional)\x20Huma\ + \n\x02\x02\x05\x12\x04\xe3\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ + \x04\xe3\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xe3\x05\x13\x14\n\ + ~\n\x04\x04\n\x02\x03\x12\x04\xe6\x05\x02\x14\x1ap\x20(optional)\x20Huma\ n-readable\x20string\x20describing\x20the\x20source\x20of\x20this\x20dia\ gnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\x20lint'.\n\n\r\n\x05\ - \x04\n\x02\x03\x05\x12\x04\xe4\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ - \x12\x04\xe4\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe4\x05\x12\ - \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe5\x05\x02\"\n\r\n\x05\x04\n\x02\ - \x04\x04\x12\x04\xe5\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe5\ - \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe5\x05\x19\x1d\n\r\n\ - \x05\x04\n\x02\x04\x03\x12\x04\xe5\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ - \xe8\x05\0\xee\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xe8\x05\x05\r\n\ - \x0c\n\x04\x05\x05\x02\0\x12\x04\xe9\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ - \x01\x12\x04\xe9\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xe9\x05\ - \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xea\x05\x02\x0c\n\r\n\x05\ - \x05\x05\x02\x01\x01\x12\x04\xea\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ - \x02\x12\x04\xea\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xeb\x05\ - \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xeb\x05\x02\t\n\r\n\x05\ - \x05\x05\x02\x02\x02\x12\x04\xeb\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ - \x12\x04\xec\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xec\x05\ - \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xec\x05\x10\x11\n\x0c\n\x04\ - \x05\x05\x02\x04\x12\x04\xed\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ - \x12\x04\xed\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xed\x05\t\ - \n\n\x0c\n\x02\x05\x06\x12\x06\xf0\x05\0\xf4\x05\x01\n\x0b\n\x03\x05\x06\ - \x01\x12\x04\xf0\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xf1\x05\ - \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xf1\x05\x02\x1a\n\r\n\x05\ - \x05\x06\x02\0\x02\x12\x04\xf1\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ - \x12\x04\xf2\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf2\x05\ - \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf2\x05\x10\x11\n\x0c\n\x04\ - \x05\x06\x02\x02\x12\x04\xf3\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ - \x12\x04\xf3\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf3\x05\ - \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfc\x05\0\xf2\x06\x01\x1a\xc1\ + \x04\n\x02\x03\x05\x12\x04\xe6\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ + \x12\x04\xe6\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe6\x05\x12\ + \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe7\x05\x02\"\n\r\n\x05\x04\n\x02\ + \x04\x04\x12\x04\xe7\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe7\ + \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe7\x05\x19\x1d\n\r\n\ + \x05\x04\n\x02\x04\x03\x12\x04\xe7\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ + \xea\x05\0\xf0\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xea\x05\x05\r\n\ + \x0c\n\x04\x05\x05\x02\0\x12\x04\xeb\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ + \x01\x12\x04\xeb\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xeb\x05\ + \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xec\x05\x02\x0c\n\r\n\x05\ + \x05\x05\x02\x01\x01\x12\x04\xec\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ + \x02\x12\x04\xec\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xed\x05\ + \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xed\x05\x02\t\n\r\n\x05\ + \x05\x05\x02\x02\x02\x12\x04\xed\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ + \x12\x04\xee\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xee\x05\ + \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xee\x05\x10\x11\n\x0c\n\x04\ + \x05\x05\x02\x04\x12\x04\xef\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ + \x12\x04\xef\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xef\x05\t\ + \n\n\x0c\n\x02\x05\x06\x12\x06\xf2\x05\0\xf6\x05\x01\n\x0b\n\x03\x05\x06\ + \x01\x12\x04\xf2\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xf3\x05\ + \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xf3\x05\x02\x1a\n\r\n\x05\ + \x05\x06\x02\0\x02\x12\x04\xf3\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ + \x12\x04\xf4\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf4\x05\ + \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf4\x05\x10\x11\n\x0c\n\x04\ + \x05\x06\x02\x02\x12\x04\xf5\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ + \x12\x04\xf5\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf5\x05\ + \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfe\x05\0\xf4\x06\x01\x1a\xc1\ \x03\x20Language\x20standardises\x20names\x20of\x20common\x20programming\ \x20languages\x20that\x20can\x20be\x20used\n\x20for\x20the\x20`Document.\ language`\x20field.\x20The\x20primary\x20purpose\x20of\x20this\x20enum\ @@ -5736,245 +5745,245 @@ static file_descriptor_proto_data: &'static [u8] = b"\ uage\x20uses\x20the\x20name\n\x20\"CPP\"\x20in\x20this\x20enum\x20and\ \x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20incompatible.\n\ \x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\x20add\x20miss\ - ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfc\ - \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xfd\x05\x02\x1a\n\r\n\x05\ - \x05\x07\x02\0\x01\x12\x04\xfd\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ - \x12\x04\xfd\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\xfe\x05\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\xfe\x05\x02\x06\n\r\n\x05\x05\ - \x07\x02\x01\x02\x12\x04\xfe\x05\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ - \x04\xff\x05\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\xff\x05\x02\ - \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\xff\x05\t\x0b\n\x0c\n\x04\x05\ - \x07\x02\x03\x12\x04\x80\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ - \x04\x80\x06\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\x80\x06\x08\n\ - \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\x81\x06\x02\x0b\n\r\n\x05\x05\x07\ - \x02\x04\x01\x12\x04\x81\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ - \x04\x81\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x82\x06\x02\x0c\n\ - \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x82\x06\x02\x06\n\r\n\x05\x05\x07\ - \x02\x05\x02\x12\x04\x82\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ - \x83\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x83\x06\x02\n\n\r\ - \n\x05\x05\x07\x02\x06\x02\x12\x04\x83\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ - \x07\x12\x04\x84\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x84\ - \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x84\x06\r\x0f\n\x0c\n\ - \x04\x05\x07\x02\x08\x12\x04\x85\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ - \x01\x12\x04\x85\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x85\ - \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x86\x06\x02\x0b\n\r\n\x05\ - \x05\x07\x02\t\x01\x12\x04\x86\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ - \x12\x04\x86\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x87\x06\x02\x0e\ - \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x87\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02\n\x02\x12\x04\x87\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x88\ - \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x88\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02\x0b\x02\x12\x04\x88\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ - \x0c\x12\x04\x89\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x89\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x89\x06\n\x0c\nH\n\x04\ - \x05\x07\x02\r\x12\x04\x8a\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ + ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfe\ + \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xff\x05\x02\x1a\n\r\n\x05\ + \x05\x07\x02\0\x01\x12\x04\xff\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ + \x12\x04\xff\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\x80\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\x80\x06\x02\x06\n\r\n\x05\x05\ + \x07\x02\x01\x02\x12\x04\x80\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ + \x04\x81\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\x81\x06\x02\ + \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\x81\x06\t\x0b\n\x0c\n\x04\x05\ + \x07\x02\x03\x12\x04\x82\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ + \x04\x82\x06\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\x82\x06\x08\n\ + \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\x83\x06\x02\x0b\n\r\n\x05\x05\x07\ + \x02\x04\x01\x12\x04\x83\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ + \x04\x83\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x84\x06\x02\x0c\n\ + \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x84\x06\x02\x06\n\r\n\x05\x05\x07\ + \x02\x05\x02\x12\x04\x84\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ + \x85\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x85\x06\x02\n\n\r\ + \n\x05\x05\x07\x02\x06\x02\x12\x04\x85\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ + \x07\x12\x04\x86\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x86\ + \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x86\x06\r\x0f\n\x0c\n\ + \x04\x05\x07\x02\x08\x12\x04\x87\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ + \x01\x12\x04\x87\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x87\ + \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x88\x06\x02\x0b\n\r\n\x05\ + \x05\x07\x02\t\x01\x12\x04\x88\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ + \x12\x04\x88\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x89\x06\x02\x0e\ + \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x89\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02\n\x02\x12\x04\x89\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x8a\ + \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x8a\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02\x0b\x02\x12\x04\x8a\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ + \x0c\x12\x04\x8b\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x8b\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x8b\x06\n\x0c\nH\n\x04\ + \x05\x07\x02\r\x12\x04\x8c\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ P\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ - \x05\x07\x02\r\x01\x12\x04\x8a\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ - \x12\x04\x8a\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x8b\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x8b\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02\x0e\x02\x12\x04\x8b\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ - \x04\x8c\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8c\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8c\x06\x0b\x0c\n\x0c\n\x04\x05\ - \x07\x02\x10\x12\x04\x8d\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ - \x04\x8d\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8d\x06\x0c\r\n\ - \x0c\n\x04\x05\x07\x02\x11\x12\x04\x8e\x06\x02\x14\n\r\n\x05\x05\x07\x02\ - \x11\x01\x12\x04\x8e\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ - \x8e\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x8f\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02\x12\x01\x12\x04\x8f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ - \x12\x02\x12\x04\x8f\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x90\ - \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x90\x06\x02\x05\n\r\n\ - \x05\x05\x07\x02\x13\x02\x12\x04\x90\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ - \x14\x12\x04\x91\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x91\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x91\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02\x15\x12\x04\x92\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ - \x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x92\ - \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x93\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x16\x01\x12\x04\x93\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ - \x02\x12\x04\x93\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x94\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x94\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02\x17\x02\x12\x04\x94\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ - \x12\x04\x95\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x95\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x95\x06\x0f\x11\n\x0c\n\ - \x04\x05\x07\x02\x19\x12\x04\x96\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ - \x01\x12\x04\x96\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x96\ - \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x97\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x1a\x01\x12\x04\x97\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ - \x02\x12\x04\x97\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x98\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x98\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02\x1b\x02\x12\x04\x98\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ - \x12\x04\x99\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x99\x06\ - \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x99\x06\x0b\r\n\x0c\n\x04\ - \x05\x07\x02\x1d\x12\x04\x9a\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ - \x12\x04\x9a\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x9a\x06\t\ - \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x9b\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02\x1e\x01\x12\x04\x9b\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ - \x12\x04\x9b\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9c\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9c\x06\x02\t\n\r\n\x05\x05\ - \x07\x02\x1f\x02\x12\x04\x9c\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ - \x04\x9d\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9d\x06\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9d\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02!\x12\x04\x9e\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ - \x9e\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\x9e\x06\x0f\x11\n\ - \x0c\n\x04\x05\x07\x02\"\x12\x04\x9f\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ - \x01\x12\x04\x9f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\x9f\x06\ - \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\xa0\x06\x02\n\n\r\n\x05\x05\ - \x07\x02#\x01\x12\x04\xa0\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ - \xa0\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\xa1\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02$\x01\x12\x04\xa1\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ - \x12\x04\xa1\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa2\x06\x02\r\ - \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa2\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02%\x02\x12\x04\xa2\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa3\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa3\x06\x02\x06\n\r\n\ - \x05\x05\x07\x02&\x02\x12\x04\xa3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ - \x04\xa4\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa4\x06\x02\x06\ - \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa4\x06\t\x0b\n\x0c\n\x04\x05\x07\ - \x02(\x12\x04\xa5\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa5\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa5\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02)\x12\x04\xa6\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ - \xa6\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa6\x06\x0c\x0e\n\x0c\ - \n\x04\x05\x07\x02*\x12\x04\xa7\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ - \x04\xa7\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa7\x06\n\x0c\n\ - \x0c\n\x04\x05\x07\x02+\x12\x04\xa8\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ - \x01\x12\x04\xa8\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xa8\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xa9\x06\x02\t\n\r\n\x05\x05\x07\ - \x02,\x01\x12\x04\xa9\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xa9\ - \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xaa\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02-\x01\x12\x04\xaa\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ - \x04\xaa\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xab\x06\x02\x0b\n\r\ - \n\x05\x05\x07\x02.\x01\x12\x04\xab\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ - \x02\x12\x04\xab\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xac\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xac\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02/\x02\x12\x04\xac\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ - \xad\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xad\x06\x02\x11\n\r\ - \n\x05\x05\x07\x020\x02\x12\x04\xad\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ - \x12\x04\xae\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xae\x06\x02\ - \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xae\x06\x0c\x0e\n\x0c\n\x04\x05\ - \x07\x022\x12\x04\xaf\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xaf\ - \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xaf\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x023\x12\x04\xb0\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ - \x04\xb0\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xb0\x06\r\x10\n\ - \x0c\n\x04\x05\x07\x024\x12\x04\xb1\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ - \x12\x04\xb1\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xb1\x06\x0b\ - \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb2\x06\x02\r\n\r\n\x05\x05\x07\ - \x025\x01\x12\x04\xb2\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb2\ - \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb3\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x026\x01\x12\x04\xb3\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ - \x04\xb3\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb4\x06\x02\x0c\n\r\ - \n\x05\x05\x07\x027\x01\x12\x04\xb4\x06\x02\x06\n\r\n\x05\x05\x07\x027\ - \x02\x12\x04\xb4\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb5\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb5\x06\x02\x05\n\r\n\x05\x05\ - \x07\x028\x02\x12\x04\xb5\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb6\ - \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb6\x06\x02\x06\n\r\n\x05\ - \x05\x07\x029\x02\x12\x04\xb6\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ - \xb7\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb7\x06\x02\n\n\r\n\ - \x05\x05\x07\x02:\x02\x12\x04\xb7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ - \x04\xb8\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xb8\x06\x02\n\n\ - \r\n\x05\x05\x07\x02;\x02\x12\x04\xb8\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ - \x12\x04\xb9\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xb9\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xb9\x06\x0b\r\n(\n\x04\x05\x07\ - \x02=\x12\x04\xba\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ - \x05\x05\x07\x02=\x01\x12\x04\xba\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ - \x12\x04\xba\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xbb\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xbb\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02>\x02\x12\x04\xbb\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xbc\ - \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xbc\x06\x02\x07\n\r\n\x05\ - \x05\x07\x02?\x02\x12\x04\xbc\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ - \xbd\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbd\x06\x02\r\n\r\n\ - \x05\x05\x07\x02@\x02\x12\x04\xbd\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ - \x12\x04\xbe\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xbe\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xbe\x06\x12\x14\n\x0c\n\x04\x05\ - \x07\x02B\x12\x04\xbf\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xbf\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xbf\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x02C\x12\x04\xc0\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ - \x04\xc0\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xc0\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02D\x12\x04\xc1\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ - \x12\x04\xc1\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xc1\x06\n\ - \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc2\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02E\x01\x12\x04\xc2\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc2\ - \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc3\x06\x02\x12\n\r\n\x05\ - \x05\x07\x02F\x01\x12\x04\xc3\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ - \x04\xc3\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc4\x06\x02\x0e\n\ - \r\n\x05\x05\x07\x02G\x01\x12\x04\xc4\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ - \x02\x12\x04\xc4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc5\x06\x02\ - \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc5\x06\x02\n\n\r\n\x05\x05\x07\ - \x02H\x02\x12\x04\xc5\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc6\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc6\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02I\x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ - \xc7\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc7\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02J\x02\x12\x04\xc7\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ - \x12\x04\xc8\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xc8\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xc8\x06\x0b\r\n\x0c\n\x04\x05\ - \x07\x02L\x12\x04\xc9\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xc9\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xc9\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02M\x12\x04\xca\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ - \x04\xca\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xca\x06\n\x0c\n2\ - \n\x04\x05\x07\x02N\x12\x04\xcb\x06\x02\x0e\"$\x20Internal\x20language\ - \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xcb\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xcb\x06\n\r\n\x0c\n\x04\x05\ - \x07\x02O\x12\x04\xcc\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xcc\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xcc\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02P\x12\x04\xcd\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ - \x04\xcd\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcd\x06\t\x0b\n\ - \x0c\n\x04\x05\x07\x02Q\x12\x04\xce\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ - \x01\x12\x04\xce\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xce\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xcf\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02R\x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ - \xcf\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xd0\x06\x02\x0c\n\r\n\ - \x05\x05\x07\x02S\x01\x12\x04\xd0\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ - \x12\x04\xd0\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xd1\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xd1\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02T\x02\x12\x04\xd1\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd2\x06\ - \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd2\x06\x02\x05\n\r\n\x05\ - \x05\x07\x02U\x02\x12\x04\xd2\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ - \xd3\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd3\x06\x02\x06\n\r\ - \n\x05\x05\x07\x02V\x02\x12\x04\xd3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ - \x12\x04\xd4\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd4\x06\x02\ - \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd4\x06\n\x0b\n\x0c\n\x04\x05\ - \x07\x02X\x12\x04\xd5\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd5\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd5\x06\x0b\r\n\x14\n\ - \x04\x05\x07\x02Y\x12\x04\xd6\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ - \x07\x02Y\x01\x12\x04\xd6\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ - \xd6\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd7\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02Z\x01\x12\x04\xd7\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ - \x12\x04\xd7\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xd8\x06\x02\ - \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xd8\x06\x02\x07\n\r\n\x05\x05\ - \x07\x02[\x02\x12\x04\xd8\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xd9\ - \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xd9\x06\x02\n\n\r\n\x05\ - \x05\x07\x02\\\x02\x12\x04\xd9\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ - \x04\xda\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xda\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xda\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ - \x02^\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xdb\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xdb\x06\n\x0b\n\x0c\n\x04\ - \x05\x07\x02_\x12\x04\xdc\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ - \xdc\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xdc\x06\x08\x0b\n\ - \x0c\n\x04\x05\x07\x02`\x12\x04\xdd\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ - \x01\x12\x04\xdd\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdd\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xde\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02a\x01\x12\x04\xde\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ - \xde\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xdf\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02b\x01\x12\x04\xdf\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ - \x12\x04\xdf\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xe0\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xe0\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02c\x02\x12\x04\xe0\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ - \xe1\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xe1\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02d\x02\x12\x04\xe1\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ - \x12\x04\xe2\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe2\x06\x02\ - \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe2\x06\x0c\x0f\n\x0c\n\x04\x05\ - \x07\x02f\x12\x04\xe3\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe3\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe3\x06\t\x0c\n\x0c\n\ - \x04\x05\x07\x02g\x12\x04\xe4\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ - \x04\xe4\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe4\x06\x10\x12\n\ - \x0c\n\x04\x05\x07\x02h\x12\x04\xe5\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ - \x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe5\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe6\x06\x02\x0f\n\r\n\x05\x05\ - \x07\x02i\x01\x12\x04\xe6\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ - \xe6\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe7\x06\x02\x0b\n\r\n\ - \x05\x05\x07\x02j\x01\x12\x04\xe7\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ - \x12\x04\xe7\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xe8\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xe8\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02k\x02\x12\x04\xe8\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xe9\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xe9\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02l\x02\x12\x04\xe9\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ - \x04\xea\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ + \x05\x07\x02\r\x01\x12\x04\x8c\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ + \x12\x04\x8c\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x8d\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x8d\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02\x0e\x02\x12\x04\x8d\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ + \x04\x8e\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8e\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8e\x06\x0b\x0c\n\x0c\n\x04\x05\ + \x07\x02\x10\x12\x04\x8f\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ + \x04\x8f\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8f\x06\x0c\r\n\ + \x0c\n\x04\x05\x07\x02\x11\x12\x04\x90\x06\x02\x14\n\r\n\x05\x05\x07\x02\ + \x11\x01\x12\x04\x90\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ + \x90\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x91\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02\x12\x01\x12\x04\x91\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ + \x12\x02\x12\x04\x91\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x92\ + \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x92\x06\x02\x05\n\r\n\ + \x05\x05\x07\x02\x13\x02\x12\x04\x92\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ + \x14\x12\x04\x93\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x93\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x93\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02\x15\x12\x04\x94\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ + \x01\x12\x04\x94\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x94\ + \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x95\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x16\x01\x12\x04\x95\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ + \x02\x12\x04\x95\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x96\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x96\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02\x17\x02\x12\x04\x96\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ + \x12\x04\x97\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x97\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x97\x06\x0f\x11\n\x0c\n\ + \x04\x05\x07\x02\x19\x12\x04\x98\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ + \x01\x12\x04\x98\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x98\ + \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x99\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x1a\x01\x12\x04\x99\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ + \x02\x12\x04\x99\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x9a\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x9a\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02\x1b\x02\x12\x04\x9a\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ + \x12\x04\x9b\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x9b\x06\ + \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x9b\x06\x0b\r\n\x0c\n\x04\ + \x05\x07\x02\x1d\x12\x04\x9c\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ + \x12\x04\x9c\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x9c\x06\t\ + \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x9d\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02\x1e\x01\x12\x04\x9d\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ + \x12\x04\x9d\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9e\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9e\x06\x02\t\n\r\n\x05\x05\ + \x07\x02\x1f\x02\x12\x04\x9e\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ + \x04\x9f\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9f\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9f\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02!\x12\x04\xa0\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ + \xa0\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\xa0\x06\x0f\x11\n\ + \x0c\n\x04\x05\x07\x02\"\x12\x04\xa1\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ + \x01\x12\x04\xa1\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\xa1\x06\ + \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\xa2\x06\x02\n\n\r\n\x05\x05\ + \x07\x02#\x01\x12\x04\xa2\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ + \xa2\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\xa3\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02$\x01\x12\x04\xa3\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ + \x12\x04\xa3\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa4\x06\x02\r\ + \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa4\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02%\x02\x12\x04\xa4\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa5\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa5\x06\x02\x06\n\r\n\ + \x05\x05\x07\x02&\x02\x12\x04\xa5\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ + \x04\xa6\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa6\x06\x02\x06\ + \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa6\x06\t\x0b\n\x0c\n\x04\x05\x07\ + \x02(\x12\x04\xa7\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa7\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa7\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02)\x12\x04\xa8\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ + \xa8\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa8\x06\x0c\x0e\n\x0c\ + \n\x04\x05\x07\x02*\x12\x04\xa9\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ + \x04\xa9\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa9\x06\n\x0c\n\ + \x0c\n\x04\x05\x07\x02+\x12\x04\xaa\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ + \x01\x12\x04\xaa\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xaa\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xab\x06\x02\t\n\r\n\x05\x05\x07\ + \x02,\x01\x12\x04\xab\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xab\ + \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xac\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02-\x01\x12\x04\xac\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ + \x04\xac\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xad\x06\x02\x0b\n\r\ + \n\x05\x05\x07\x02.\x01\x12\x04\xad\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ + \x02\x12\x04\xad\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xae\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xae\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02/\x02\x12\x04\xae\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ + \xaf\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xaf\x06\x02\x11\n\r\ + \n\x05\x05\x07\x020\x02\x12\x04\xaf\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ + \x12\x04\xb0\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xb0\x06\x02\ + \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xb0\x06\x0c\x0e\n\x0c\n\x04\x05\ + \x07\x022\x12\x04\xb1\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xb1\ + \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xb1\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x023\x12\x04\xb2\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ + \x04\xb2\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xb2\x06\r\x10\n\ + \x0c\n\x04\x05\x07\x024\x12\x04\xb3\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ + \x12\x04\xb3\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xb3\x06\x0b\ + \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb4\x06\x02\r\n\r\n\x05\x05\x07\ + \x025\x01\x12\x04\xb4\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb4\ + \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb5\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x026\x01\x12\x04\xb5\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ + \x04\xb5\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb6\x06\x02\x0c\n\r\ + \n\x05\x05\x07\x027\x01\x12\x04\xb6\x06\x02\x06\n\r\n\x05\x05\x07\x027\ + \x02\x12\x04\xb6\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb7\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb7\x06\x02\x05\n\r\n\x05\x05\ + \x07\x028\x02\x12\x04\xb7\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb8\ + \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb8\x06\x02\x06\n\r\n\x05\ + \x05\x07\x029\x02\x12\x04\xb8\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ + \xb9\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb9\x06\x02\n\n\r\n\ + \x05\x05\x07\x02:\x02\x12\x04\xb9\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ + \x04\xba\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xba\x06\x02\n\n\ + \r\n\x05\x05\x07\x02;\x02\x12\x04\xba\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ + \x12\x04\xbb\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xbb\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xbb\x06\x0b\r\n(\n\x04\x05\x07\ + \x02=\x12\x04\xbc\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ + \x05\x05\x07\x02=\x01\x12\x04\xbc\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ + \x12\x04\xbc\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xbd\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xbd\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02>\x02\x12\x04\xbd\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xbe\ + \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xbe\x06\x02\x07\n\r\n\x05\ + \x05\x07\x02?\x02\x12\x04\xbe\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ + \xbf\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbf\x06\x02\r\n\r\n\ + \x05\x05\x07\x02@\x02\x12\x04\xbf\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ + \x12\x04\xc0\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xc0\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xc0\x06\x12\x14\n\x0c\n\x04\x05\ + \x07\x02B\x12\x04\xc1\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xc1\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xc1\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x02C\x12\x04\xc2\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ + \x04\xc2\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xc2\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02D\x12\x04\xc3\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ + \x12\x04\xc3\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xc3\x06\n\ + \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc4\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02E\x01\x12\x04\xc4\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc4\ + \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc5\x06\x02\x12\n\r\n\x05\ + \x05\x07\x02F\x01\x12\x04\xc5\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ + \x04\xc5\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc6\x06\x02\x0e\n\ + \r\n\x05\x05\x07\x02G\x01\x12\x04\xc6\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ + \x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc7\x06\x02\ + \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc7\x06\x02\n\n\r\n\x05\x05\x07\ + \x02H\x02\x12\x04\xc7\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc8\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc8\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02I\x02\x12\x04\xc8\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ + \xc9\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc9\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02J\x02\x12\x04\xc9\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ + \x12\x04\xca\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xca\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xca\x06\x0b\r\n\x0c\n\x04\x05\ + \x07\x02L\x12\x04\xcb\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xcb\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xcb\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02M\x12\x04\xcc\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ + \x04\xcc\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xcc\x06\n\x0c\n2\ + \n\x04\x05\x07\x02N\x12\x04\xcd\x06\x02\x0e\"$\x20Internal\x20language\ + \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xcd\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xcd\x06\n\r\n\x0c\n\x04\x05\ + \x07\x02O\x12\x04\xce\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xce\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xce\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02P\x12\x04\xcf\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ + \x04\xcf\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcf\x06\t\x0b\n\ + \x0c\n\x04\x05\x07\x02Q\x12\x04\xd0\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ + \x01\x12\x04\xd0\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xd0\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xd1\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02R\x01\x12\x04\xd1\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ + \xd1\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xd2\x06\x02\x0c\n\r\n\ + \x05\x05\x07\x02S\x01\x12\x04\xd2\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ + \x12\x04\xd2\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xd3\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xd3\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02T\x02\x12\x04\xd3\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd4\x06\ + \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd4\x06\x02\x05\n\r\n\x05\ + \x05\x07\x02U\x02\x12\x04\xd4\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ + \xd5\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd5\x06\x02\x06\n\r\ + \n\x05\x05\x07\x02V\x02\x12\x04\xd5\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ + \x12\x04\xd6\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd6\x06\x02\ + \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd6\x06\n\x0b\n\x0c\n\x04\x05\ + \x07\x02X\x12\x04\xd7\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd7\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd7\x06\x0b\r\n\x14\n\ + \x04\x05\x07\x02Y\x12\x04\xd8\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ + \x07\x02Y\x01\x12\x04\xd8\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ + \xd8\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd9\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02Z\x01\x12\x04\xd9\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ + \x12\x04\xd9\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xda\x06\x02\ + \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xda\x06\x02\x07\n\r\n\x05\x05\ + \x07\x02[\x02\x12\x04\xda\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xdb\ + \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xdb\x06\x02\n\n\r\n\x05\ + \x05\x07\x02\\\x02\x12\x04\xdb\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ + \x04\xdc\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xdc\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xdc\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ + \x02^\x12\x04\xdd\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xdd\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xdd\x06\n\x0b\n\x0c\n\x04\ + \x05\x07\x02_\x12\x04\xde\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ + \xde\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xde\x06\x08\x0b\n\ + \x0c\n\x04\x05\x07\x02`\x12\x04\xdf\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ + \x01\x12\x04\xdf\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdf\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xe0\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02a\x01\x12\x04\xe0\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ + \xe0\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xe1\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02b\x01\x12\x04\xe1\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ + \x12\x04\xe1\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xe2\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xe2\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02c\x02\x12\x04\xe2\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ + \xe3\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xe3\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02d\x02\x12\x04\xe3\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ + \x12\x04\xe4\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe4\x06\x02\ + \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe4\x06\x0c\x0f\n\x0c\n\x04\x05\ + \x07\x02f\x12\x04\xe5\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe5\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe5\x06\t\x0c\n\x0c\n\ + \x04\x05\x07\x02g\x12\x04\xe6\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ + \x04\xe6\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe6\x06\x10\x12\n\ + \x0c\n\x04\x05\x07\x02h\x12\x04\xe7\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ + \x01\x12\x04\xe7\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe7\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe8\x06\x02\x0f\n\r\n\x05\x05\ + \x07\x02i\x01\x12\x04\xe8\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ + \xe8\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe9\x06\x02\x0b\n\r\n\ + \x05\x05\x07\x02j\x01\x12\x04\xe9\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ + \x12\x04\xe9\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xea\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xea\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02k\x02\x12\x04\xea\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xeb\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xeb\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02l\x02\x12\x04\xeb\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ + \x04\xec\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ \x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20the\x20\"NextL\ anguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\x20\"NextLangu\ age\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\x203.\x20Replace\ @@ -5983,8 +5992,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20correct\x20line\x20above\x20using\x20alphabetical\x20order\n\x205.\ \x20(optional)\x20Add\x20a\x20brief\x20comment\x20behind\x20the\x20langu\ age\x20if\x20the\x20name\x20is\x20not\x20self-explanatory\n\n\r\n\x05\ - \x05\x07\x02m\x01\x12\x04\xea\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ - \x04\xea\x06\x08\nb\x06proto3\ + \x05\x07\x02m\x01\x12\x04\xec\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ + \x04\xec\x06\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 67bb7fc7..c3ef6afe 100644 --- a/bindings/typescript/scip.ts +++ b/bindings/typescript/scip.ts @@ -1324,6 +1324,7 @@ export namespace scip { Axiom = 5, Boolean = 6, Class = 7, + Concept = 86, Constant = 8, Constructor = 9, Contract = 62, diff --git a/docs/scip.md b/docs/scip.md index f2913b7c..a7be6dd8 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -451,6 +451,7 @@ Since Kind is more fine-grained than Suffix: | 5 | Axiom | For Lean | 6 | Boolean | | 7 | Class | +| 86 | Concept | For C++ | 8 | Constant | | 9 | Constructor | | 62 | Contract | For Solidity @@ -525,7 +526,7 @@ Since Kind is more fine-grained than Suffix: | 58 | TypeParameter | | 59 | Union | For C, C++, Capn Proto | 60 | Value | -| 61 | Variable | Next = 86; Feel free to open a PR proposing new language-specific kinds. +| 61 | Variable | Next = 87; Feel free to open a PR proposing new language-specific kinds. ### ToolInfo diff --git a/scip.proto b/scip.proto index 59a05b7c..d21d0b23 100644 --- a/scip.proto +++ b/scip.proto @@ -277,6 +277,8 @@ message SymbolInformation { Axiom = 5; Boolean = 6; Class = 7; + // For C++ + Concept = 86; Constant = 8; Constructor = 9; // For Solidity @@ -400,7 +402,7 @@ message SymbolInformation { Union = 59; Value = 60; Variable = 61; - // Next = 86; + // Next = 87; // Feel free to open a PR proposing new language-specific kinds. } // (optional) The name of this symbol as it should be displayed to the user. From 0ed193309e43b6c467e5cf7e75eebd8d1aa1459a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Wickstr=C3=B6m?= Date: Fri, 28 Feb 2025 09:51:02 +0100 Subject: [PATCH 19/25] Prepare release 0.5.2 (#306) * Update release instructions to include Cargo lock * Prepare release 0.5.2 --- CHANGELOG.md | 6 ++++++ Development.md | 3 ++- bindings/rust/Cargo.lock | 2 +- bindings/rust/Cargo.toml | 2 +- cmd/scip/version.txt | 2 +- docs/CLI.md | 4 ++-- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 973cfb7a..866fd73e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## Unreleased +## v0.5.2 + +SCIP schema: + +- Added kind `SymbolInformation.Kind.Concept` for C++ (https://github.com/sourcegraph/scip/pull/305) + ## v0.5.1 CLI: diff --git a/Development.md b/Development.md index 81262a19..7cd14191 100644 --- a/Development.md +++ b/Development.md @@ -112,7 +112,8 @@ PACKAGE=MY_PACKAGE_NAME SRC_ACCESS_TOKEN=MY_TOKEN SRC_ENDPOINT=https://sourcegra ## Release a new version First, add release notes to the [CHANGELOG](CHANGELOG.md). Next, update the -version in `cmd/scip/version.txt`, `bindings/rust/Cargo.toml` and `docs/CLI.md` +version in `cmd/scip/version.txt`, `bindings/rust/Cargo.toml`, +`bindings/rust/Cargo.lock`, and `docs/CLI.md` After landing a commit with those two changes, run the release script: (requires the [GitHub CLI](https://cli.github.com/)) diff --git a/bindings/rust/Cargo.lock b/bindings/rust/Cargo.lock index 6882fc94..182fb031 100644 --- a/bindings/rust/Cargo.lock +++ b/bindings/rust/Cargo.lock @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "scip" -version = "0.5.1" +version = "0.5.2" dependencies = [ "pretty_assertions", "protobuf", diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index b6bee5c5..3e0e0003 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scip" -version = "0.5.1" +version = "0.5.2" edition = "2021" license = "Apache-2.0" description = """ diff --git a/cmd/scip/version.txt b/cmd/scip/version.txt index 4b9fcbec..cb0c939a 100644 --- a/cmd/scip/version.txt +++ b/cmd/scip/version.txt @@ -1 +1 @@ -0.5.1 +0.5.2 diff --git a/docs/CLI.md b/docs/CLI.md index a3476e05..779c8c3e 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -17,7 +17,7 @@ USAGE: scip [global options] command [command options] [arguments...] VERSION: - v0.5.1 + v0.5.2 DESCRIPTION: For more details, see the project README at: @@ -115,7 +115,7 @@ DESCRIPTION: in a given SCIP index matches that specified in human-readable test files, using syntax similar to the 'snapshot subcommand'. Test file syntax reference: - https://github.com/sourcegraph/scip/blob/v0.5.1/docs/test_file_format.md + https://github.com/sourcegraph/scip/blob/v0.5.2/docs/test_file_format.md The test files are located based on the relative_path field in the SCIP document, interpreted relative to the the directory From 79a5e52111ea7b94f016c91c62461066dc7b5bf5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 00:08:04 +0000 Subject: [PATCH 20/25] chore(deps): update dependency prettier to ^3.5.2 (#308) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 99c9cae0..4f482f62 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,6 @@ ] }, "devDependencies": { - "prettier": "^3.4.2" + "prettier": "^3.5.2" } } diff --git a/yarn.lock b/yarn.lock index 39f92ec5..9cb1dc77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,10 +17,10 @@ nan@^2.22.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== -prettier@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" - integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== +prettier@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.2.tgz#d066c6053200da0234bf8fa1ef45168abed8b914" + integrity sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg== protoc-gen-ts@0.8.6: version "0.8.6" From ee53469fe432427a918b4fd57146dde81b1d6c09 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 08:25:55 +0000 Subject: [PATCH 21/25] chore(deps): update dependency prettier to ^3.5.3 (#310) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4f482f62..a377c90e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,6 @@ ] }, "devDependencies": { - "prettier": "^3.5.2" + "prettier": "^3.5.3" } } diff --git a/yarn.lock b/yarn.lock index 9cb1dc77..0a7deea8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,10 +17,10 @@ nan@^2.22.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== -prettier@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.2.tgz#d066c6053200da0234bf8fa1ef45168abed8b914" - integrity sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg== +prettier@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" + integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== protoc-gen-ts@0.8.6: version "0.8.6" From d3568f8877d139fdcf587bf11dbedf91ab1ffba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Wickstr=C3=B6m?= Date: Mon, 3 Mar 2025 09:43:04 +0100 Subject: [PATCH 22/25] Refer to README with relative path instead of symlink in Rust crate (#307) --- bindings/rust/Cargo.toml | 2 +- bindings/rust/Readme.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 120000 bindings/rust/Readme.md diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index 3e0e0003..886331be 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -7,7 +7,7 @@ description = """ SCIP (pronunciation: "skip") is a language-agnostic protocol for indexing source code, which can be used to power code navigation functionality such as Go to definition, Find references, and Find implementations. """ repository = "https://github.com/sourcegraph/scip" -readme = "Readme.md" +readme = "../../README.md" # We need >= 1.60.0 because the generated code uses # https://doc.rust-lang.org/std/vec/struct.Vec.html#method.spare_capacity_mut diff --git a/bindings/rust/Readme.md b/bindings/rust/Readme.md deleted file mode 120000 index 47b704be..00000000 --- a/bindings/rust/Readme.md +++ /dev/null @@ -1 +0,0 @@ -../../Readme.md \ No newline at end of file From c6bfed5ec61dd3122d8eaee9821ad88df52a69a8 Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Mon, 31 Mar 2025 11:37:35 +0800 Subject: [PATCH 23/25] chore: Bump MSRV (#316) --- .tool-versions | 2 +- CHANGELOG.md | 2 ++ bindings/rust/Cargo.toml | 8 +++++--- cmd/scip/tests/reprolang/Cargo.toml | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.tool-versions b/.tool-versions index 04a11206..f67f7712 100644 --- a/.tool-versions +++ b/.tool-versions @@ -2,5 +2,5 @@ golang 1.22.0 nodejs 16.20.2 shellcheck 0.7.1 yarn 1.22.22 -rust 1.74.0 +rust 1.78.0 python 3.11.9 diff --git a/CHANGELOG.md b/CHANGELOG.md index 866fd73e..4b157545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- Bumped MSRV to Rust 1.78.0. + ## v0.5.2 SCIP schema: diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index 886331be..81a61d55 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -9,9 +9,11 @@ SCIP (pronunciation: "skip") is a language-agnostic protocol for indexing source repository = "https://github.com/sourcegraph/scip" readme = "../../README.md" -# We need >= 1.60.0 because the generated code uses -# https://doc.rust-lang.org/std/vec/struct.Vec.html#method.spare_capacity_mut -rust-version = "1.60.0" +# We need >= 1.78.0 because: we only test against that +# in the CI (we use protobuf-codegen in CI, and that +# has Cargo.lock version 4, which requires Rust >= 1.78.0). +# https://github.com/solana-foundation/anchor/issues/3392#issuecomment-2508412018 +rust-version = "1.78.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/cmd/scip/tests/reprolang/Cargo.toml b/cmd/scip/tests/reprolang/Cargo.toml index 5b1df93c..324c8b95 100644 --- a/cmd/scip/tests/reprolang/Cargo.toml +++ b/cmd/scip/tests/reprolang/Cargo.toml @@ -14,6 +14,8 @@ include = [ "src/*", ] +rust-version = "1.78.0" + [lib] path = "bindings/rust/lib.rs" From 1077d0dad5e258647989b6df2153c70fd9ee791e Mon Sep 17 00:00:00 2001 From: Benjamin Brienen Date: Mon, 31 Mar 2025 06:47:21 +0200 Subject: [PATCH 24/25] Bump protobuf-codegen to 3.7.2 in Cargo.toml (#313) Also bumps the MSRV for simplicity, because we won't be testing things with older versions of Rust in CI. --- .tool-versions | 2 +- CHANGELOG.md | 7 +- bindings/rust/Cargo.lock | 104 ++++++++-------------------- bindings/rust/Cargo.toml | 9 ++- bindings/rust/src/generated/scip.rs | 4 +- cmd/scip/tests/reprolang/Cargo.toml | 2 +- dev/proto-generate.sh | 3 +- 7 files changed, 44 insertions(+), 87 deletions(-) diff --git a/.tool-versions b/.tool-versions index f67f7712..c7026118 100644 --- a/.tool-versions +++ b/.tool-versions @@ -2,5 +2,5 @@ golang 1.22.0 nodejs 16.20.2 shellcheck 0.7.1 yarn 1.22.22 -rust 1.78.0 +rust 1.81.0 python 3.11.9 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b157545..02517eb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,12 @@ ## Unreleased -- Bumped MSRV to Rust 1.78.0. +Rust SCIP bindings: + +- Bumped MSRV to Rust 1.81.0 (https://github.com/sourcegraph/scip/pull/316, https://github.com/sourcegraph/scip/pull/313). +- Bumped the pinned version of the `protobuf` crate to + the latest release v3.7.2. + (https://github.com/sourcegraph/scip/pull/313) ## v0.5.2 diff --git a/bindings/rust/Cargo.lock b/bindings/rust/Cargo.lock index 182fb031..de5b58a4 100644 --- a/bindings/rust/Cargo.lock +++ b/bindings/rust/Cargo.lock @@ -2,72 +2,42 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "ctor" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "diff" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "once_cell" -version = "1.10.0" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "pretty_assertions" -version = "1.2.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89f989ac94207d048d92db058e4f6ec7342b0971fc58d1271ca148b799b3563" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ - "ansi_term", - "ctor", "diff", - "output_vt100", + "yansi", ] [[package]] name = "proc-macro2" -version = "1.0.38" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "protobuf" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a7c64d9bf75b1b8d981124c14c179074e8caa7dfe7b6a12e6222ddcd0c8f72" +checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4" dependencies = [ "once_cell", "protobuf-support", @@ -76,18 +46,18 @@ dependencies = [ [[package]] name = "protobuf-support" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b088fd20b938a875ea00843b6faf48579462630015c3788d397ad6a786663252" +checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6" dependencies = [ "thiserror", ] [[package]] name = "quote" -version = "1.0.18" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" dependencies = [ "proc-macro2", ] @@ -102,29 +72,29 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.93" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04066589568b72ec65f42d65a1a52436e954b168773148893c020269563decf2" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -132,29 +102,13 @@ dependencies = [ ] [[package]] -name = "unicode-xid" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "unicode-ident" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "yansi" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" diff --git a/bindings/rust/Cargo.toml b/bindings/rust/Cargo.toml index 81a61d55..3d6c42cc 100644 --- a/bindings/rust/Cargo.toml +++ b/bindings/rust/Cargo.toml @@ -9,17 +9,16 @@ SCIP (pronunciation: "skip") is a language-agnostic protocol for indexing source repository = "https://github.com/sourcegraph/scip" readme = "../../README.md" -# We need >= 1.78.0 because: we only test against that +# We need >= 1.81.0 because: we only test against that # in the CI (we use protobuf-codegen in CI, and that -# has Cargo.lock version 4, which requires Rust >= 1.78.0). -# https://github.com/solana-foundation/anchor/issues/3392#issuecomment-2508412018 -rust-version = "1.78.0" +# has home@0.5.11 as a dependency, which requires Rust >= 1.81.0). +rust-version = "1.81.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] # Keep in sync with dev/proto-generate.sh -protobuf = "=3.7.1" +protobuf = "=3.7.2" [dev-dependencies] pretty_assertions = "1.2.1" diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 287a551a..c99be806 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 3.7.1. Do not edit +// This file is generated by rust-protobuf 3.7.2. Do not edit // .proto file is parsed by protoc --rs_out=... // @generated @@ -22,7 +22,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_1; +const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2; /// Index represents a complete SCIP index for a workspace this is rooted at a /// single directory. An Index message payload can have a large memory footprint diff --git a/cmd/scip/tests/reprolang/Cargo.toml b/cmd/scip/tests/reprolang/Cargo.toml index 324c8b95..8c7156e6 100644 --- a/cmd/scip/tests/reprolang/Cargo.toml +++ b/cmd/scip/tests/reprolang/Cargo.toml @@ -14,7 +14,7 @@ include = [ "src/*", ] -rust-version = "1.78.0" +rust-version = "1.81.0" [lib] path = "bindings/rust/lib.rs" diff --git a/dev/proto-generate.sh b/dev/proto-generate.sh index 3791a4dd..1d3f6c18 100755 --- a/dev/proto-generate.sh +++ b/dev/proto-generate.sh @@ -12,7 +12,7 @@ PROTOC_GEN_RUST_VERSION="$(cat bindings/rust/Cargo.toml | grep 'protobuf =' | se if ! grep -q "$PROTOC_GEN_RUST_VERSION" "./.bin/PROTOC_GEN_RUST_VERSION" \ || ! test -f "./.bin/bin/protoc-gen-rs"; then rm -rf .bin - cargo install --root .bin protobuf-codegen --version 3.7.1 --locked + cargo install --root .bin protobuf-codegen --version 3.7.2 --locked echo "$PROTOC_GEN_RUST_VERSION" > "./.bin/PROTOC_GEN_RUST_VERSION" fi @@ -36,4 +36,3 @@ GOBIN="$PWD/.bin" go install google.golang.org/protobuf/cmd/protoc-gen-go GOBIN="$PWD/.bin" ./.bin/buf generate ./.bin/goimports -w ./bindings/go/scip/scip.pb.go yarn run prettier - From f2a145614dc75c50088e88eac08bc5f2097dd000 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Tue, 1 Apr 2025 01:13:50 -0500 Subject: [PATCH 25/25] Allow IndexVisitor to return errors (#315) --- CHANGELOG.md | 5 ++++ bindings/go/scip/memtest/low_mem_test.go | 12 +++++--- bindings/go/scip/parse.go | 21 +++++++++----- bindings/go/scip/parse_test.go | 35 ++++++++++++++++-------- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02517eb9..29217236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ Rust SCIP bindings: the latest release v3.7.2. (https://github.com/sourcegraph/scip/pull/313) +Go bindings: + +- BREAKING CHANGE: IndexVisitor now accepts a context object and returns an error. + When an error is returned, the visitor short-circuits. + ## v0.5.2 SCIP schema: diff --git a/bindings/go/scip/memtest/low_mem_test.go b/bindings/go/scip/memtest/low_mem_test.go index a0ae8e75..a5632280 100644 --- a/bindings/go/scip/memtest/low_mem_test.go +++ b/bindings/go/scip/memtest/low_mem_test.go @@ -1,6 +1,7 @@ package memtest import ( + "context" "fmt" "io" "os" @@ -52,12 +53,15 @@ func TestLowMemoryParsing(t *testing.T) { debug.SetMemoryLimit(textSize * maxDocsInMemory) curDoc := &scip.Document{} - indexVisitor := scip.IndexVisitor{VisitDocument: func(d *scip.Document) { - curDoc = d - }} + indexVisitor := scip.IndexVisitor{ + VisitDocument: func(_ context.Context, d *scip.Document) error { + curDoc = d + return nil + }, + } // No OOM - err = indexVisitor.ParseStreaming(tmpFile) + err = indexVisitor.ParseStreaming(context.Background(), tmpFile) _ = curDoc require.NoError(t, err) } diff --git a/bindings/go/scip/parse.go b/bindings/go/scip/parse.go index dbed05b0..023d9a36 100644 --- a/bindings/go/scip/parse.go +++ b/bindings/go/scip/parse.go @@ -1,6 +1,7 @@ package scip import ( + "context" "io" "github.com/cockroachdb/errors" @@ -13,9 +14,9 @@ import ( // implementations, so adding new functions here for new fields in // the SCIP schema would break clients. Individual functions may be nil. type IndexVisitor struct { - VisitMetadata func(*Metadata) - VisitDocument func(*Document) - VisitExternalSymbol func(*SymbolInformation) + VisitMetadata func(ctx context.Context, m *Metadata) error + VisitDocument func(ctx context.Context, d *Document) error + VisitExternalSymbol func(ctx context.Context, si *SymbolInformation) error } // See https://protobuf.dev/programming-guides/encoding/#varints @@ -24,7 +25,7 @@ const maxVarintBytes = 10 // ParseStreaming processes an index by incrementally reading input from the io.Reader. // // Parsing takes place at Document granularity for ease of use. -func (pi *IndexVisitor) ParseStreaming(r io.Reader) error { +func (pi *IndexVisitor) ParseStreaming(ctx context.Context, r io.Reader) error { // The tag is encoded as a varint with value: (field_number << 3) | wire_type // Varints < 128 fit in 1 byte, which means 4 bits are available for field // numbers. The Index type has less than 15 fields, so the tag will fit in 1 byte. @@ -84,7 +85,9 @@ func (pi *IndexVisitor) ParseStreaming(r io.Reader) error { if err := proto.Unmarshal(dataBuf, &m); err != nil { return errors.Wrapf(err, "failed to read %s", indexFieldName(fieldNumber)) } - pi.VisitMetadata(&m) + if err := pi.VisitMetadata(ctx, &m); err != nil { + return err + } } } else if fieldNumber == documentsFieldNumber { if pi.VisitDocument != nil { @@ -92,7 +95,9 @@ func (pi *IndexVisitor) ParseStreaming(r io.Reader) error { if err := proto.Unmarshal(dataBuf, &d); err != nil { return errors.Wrapf(err, "failed to read %s", indexFieldName(fieldNumber)) } - pi.VisitDocument(&d) + if err := pi.VisitDocument(ctx, &d); err != nil { + return err + } } } else if fieldNumber == externalSymbolsFieldNumber { if pi.VisitExternalSymbol != nil { @@ -100,7 +105,9 @@ func (pi *IndexVisitor) ParseStreaming(r io.Reader) error { if err := proto.Unmarshal(dataBuf, &s); err != nil { return errors.Wrapf(err, "failed to read %s", indexFieldName(fieldNumber)) } - pi.VisitExternalSymbol(&s) + if err := pi.VisitExternalSymbol(ctx, &s); err != nil { + return err + } } } else { return errors.Newf( diff --git a/bindings/go/scip/parse_test.go b/bindings/go/scip/parse_test.go index f576cf28..b3d75b33 100644 --- a/bindings/go/scip/parse_test.go +++ b/bindings/go/scip/parse_test.go @@ -3,6 +3,7 @@ package scip import ( "bytes" "compress/gzip" + "context" "io" "os" "regexp" @@ -60,15 +61,18 @@ func TestDocumentsOnly(t *testing.T) { parsedIndex := Index{} - indexVisitor := IndexVisitor{VisitDocument: func(document *Document) { - parsedIndex.Documents = append(parsedIndex.Documents, document) - }} + indexVisitor := IndexVisitor{ + VisitDocument: func(_ context.Context, document *Document) error { + parsedIndex.Documents = append(parsedIndex.Documents, document) + return nil + }, + } indexBytes, err := proto.Marshal(&index) require.NoError(t, err) bytesReader := bytes.NewReader(indexBytes) - if err := indexVisitor.ParseStreaming(bytesReader); err != nil { + if err := indexVisitor.ParseStreaming(context.Background(), bytesReader); err != nil { t.Fatalf("got error parsing index %v", err) } @@ -102,15 +106,22 @@ func checkRoundtrip(t *testing.T, index *Index) { func parseStreaming(t *testing.T, reader io.Reader) *Index { parsedIndex := Index{} - indexVisitor := IndexVisitor{func(metadata *Metadata) { - parsedIndex.Metadata = metadata - }, func(document *Document) { - parsedIndex.Documents = append(parsedIndex.Documents, document) - }, func(extSym *SymbolInformation) { - parsedIndex.ExternalSymbols = append(parsedIndex.ExternalSymbols, extSym) - }} + indexVisitor := IndexVisitor{ + VisitMetadata: func(_ context.Context, metadata *Metadata) error { + parsedIndex.Metadata = metadata + return nil + }, + VisitDocument: func(_ context.Context, document *Document) error { + parsedIndex.Documents = append(parsedIndex.Documents, document) + return nil + }, + VisitExternalSymbol: func(_ context.Context, extSym *SymbolInformation) error { + parsedIndex.ExternalSymbols = append(parsedIndex.ExternalSymbols, extSym) + return nil + }, + } - if err := indexVisitor.ParseStreaming(reader); err != nil { + if err := indexVisitor.ParseStreaming(context.Background(), reader); err != nil { t.Fatalf("got error parsing index %v", err) } return &parsedIndex