From b281d6781c5058b389f58057a3fdd22adbbb8213 Mon Sep 17 00:00:00 2001 From: Sam Calder-Mason Date: Thu, 16 Jul 2026 13:07:09 +1000 Subject: [PATCH 1/3] feat: support glamsterdam (gloas) networks Switch go-eth2-client to the ethpandaops fork and bump ethpandaops/beacon to its release/gloas branch so gloas SSE events, blocks and states are understood. Gloas (ePBS) blocks no longer embed the execution payload; they commit to it via a signed execution payload bid, which carries the payload's block hash but not its number. Teach the execution block trace path to fall back to the bid's block hash and resolve the block number from the execution node, retrying briefly to give the builder time to reveal the payload. Release plumbing, mirroring xatu: derive the goreleaser RELEASE_SUFFIX by anchoring on the semver core so multi-word suffixes like 'glamsterdam-devnet-7' survive intact, and tag suffixed images as ethpandaops/tracoor: instead of -latest. Claude-Session: https://claude.ai/code/session_012CnMNMdPisWGmvKhKzj1ii --- .github/workflows/golang-test.yaml | 2 +- .github/workflows/golangci-lint.yaml | 2 +- .github/workflows/goreleaser.yaml | 14 +- .goreleaser.yaml | 20 +- go.mod | 91 +++---- go.sum | 235 ++++++++---------- pkg/agent/agent.go | 134 ++++++---- pkg/agent/consensus.go | 2 +- pkg/agent/ethereum/beacon/block.go | 9 + .../ethereum/beacon/services/metadata.go | 2 +- pkg/agent/ethereum/config.go | 2 +- pkg/agent/ethereum/execution/execution.go | 44 ++++ pkg/agent/ethereum/node.go | 2 +- pkg/agent/path.go | 2 +- pkg/agent/queue.go | 2 +- pkg/server/service/indexer/indexer.go | 2 +- pkg/server/service/indexer/permanent_store.go | 2 +- pkg/server/service/indexer/retention.go | 2 +- 18 files changed, 311 insertions(+), 258 deletions(-) diff --git a/.github/workflows/golang-test.yaml b/.github/workflows/golang-test.yaml index b03017e..a537e3c 100644 --- a/.github/workflows/golang-test.yaml +++ b/.github/workflows/golang-test.yaml @@ -10,7 +10,7 @@ jobs: full_ci: strategy: matrix: - go_version: [ 1.24.x ] + go_version: [ 1.26.x ] runs-on: ubuntu-24.04 diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 99f6ea9..321864b 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.24' + go-version: '1.26' - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: golangci-lint uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 diff --git a/.github/workflows/goreleaser.yaml b/.github/workflows/goreleaser.yaml index 2ca4502..a413ade 100644 --- a/.github/workflows/goreleaser.yaml +++ b/.github/workflows/goreleaser.yaml @@ -23,11 +23,13 @@ jobs: # Strip the 'refs/tags/' prefix TAG_NAME=${GITHUB_REF#refs/tags/} - # Extract suffix from tag name after the last '-' (e.g., 'dencun' from 'v1.0.0-dencun') - RELEASE_SUFFIX=${TAG_NAME##*-} - - # Check if the suffix is still a version pattern (e.g., 'v0.0.44'), in which case there's no suffix - if [[ $RELEASE_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + # A release-branch tag is a semver core followed by everything after the + # FIRST '-' (e.g. 'glamsterdam-devnet-7' from '0.0.1-glamsterdam-devnet-7', + # 'dencun' from 'v1.0.0-dencun'). Anchoring on the semver core keeps + # multi-word suffixes intact and leaves plain 'vX.Y.Z' tags unsuffixed. + if [[ $TAG_NAME =~ ^v?[0-9]+\.[0-9]+\.[0-9]+-(.+)$ ]]; then + RELEASE_SUFFIX="${BASH_REMATCH[1]}" + else RELEASE_SUFFIX="" fi @@ -38,7 +40,7 @@ jobs: - name: Set up Go uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.24.x' + go-version-file: 'go.mod' - uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 name: Set up Node with: diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 272177e..71dff77 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -43,7 +43,7 @@ dockers: dockerfile: goreleaser-scratch.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-amd64" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-amd64" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" @@ -56,7 +56,7 @@ dockers: dockerfile: goreleaser-scratch.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-arm64v8" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" @@ -70,7 +70,7 @@ dockers: dockerfile: goreleaser-debian.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-amd64" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-amd64" build_flag_templates: - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" @@ -83,7 +83,7 @@ dockers: dockerfile: goreleaser-debian.Dockerfile image_templates: - "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8" - - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8" + - "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-arm64v8" build_flag_templates: - "--platform=linux/arm64/v8" - "--label=org.opencontainers.image.created={{.Date}}" @@ -99,10 +99,10 @@ docker_manifests: - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64 image_templates: - ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8 - - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest + - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }} image_templates: - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64 - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-amd64 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}{{ else }}latest{{ end }}-arm64v8 ## Debian - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian @@ -112,7 +112,7 @@ docker_manifests: - name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64 image_templates: - ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8 - - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest + - name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }} image_templates: - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64 - - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-amd64 + - ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-debian{{ else }}debian-latest{{ end }}-arm64v8 diff --git a/go.mod b/go.mod index 3aa6ba7..b91dadb 100644 --- a/go.mod +++ b/go.mod @@ -1,36 +1,34 @@ module github.com/ethpandaops/tracoor -go 1.24.6 - -replace github.com/attestantio/go-eth2-client => github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc +go 1.26.1 require ( github.com/0xsequence/ethkit v1.38.1 - github.com/attestantio/go-eth2-client v0.26.0 github.com/aws/aws-sdk-go-v2 v1.25.0 github.com/aws/aws-sdk-go-v2/credentials v1.17.1 github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1 github.com/aws/smithy-go v1.20.0 github.com/cenkalti/backoff/v4 v4.2.1 github.com/creasty/defaults v1.7.0 - github.com/ethpandaops/beacon v0.64.0 + github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a github.com/ethpandaops/ethwallclock v0.3.0 + github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 github.com/glebarez/sqlite v1.10.0 github.com/go-co-op/gocron v1.27.1 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/lib/pq v1.10.9 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_golang v1.23.2 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.35.0 - golang.org/x/sync v0.14.0 - google.golang.org/grpc v1.64.1 - google.golang.org/protobuf v1.34.2 + golang.org/x/sync v0.19.0 + google.golang.org/grpc v1.78.0 + google.golang.org/protobuf v1.36.11 gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/postgres v1.5.4 @@ -43,6 +41,8 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 // indirect + github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.0 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.0 // indirect @@ -53,16 +53,15 @@ require ( github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.10 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.22.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect + github.com/casbin/govaluate v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 // indirect - github.com/consensys/bavard v0.1.30 // indirect - github.com/consensys/gnark-crypto v0.17.0 // indirect + github.com/consensys/gnark-crypto v0.18.1 // indirect github.com/containerd/containerd v1.7.18 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect - github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.8.0 // indirect @@ -72,22 +71,18 @@ require ( github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/emicklei/dot v1.6.4 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.1 // indirect - github.com/ethereum/go-ethereum v1.14.10 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.6 // indirect + github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect - github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/ferranbt/fastssz v0.1.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/glebarez/go-sqlite v1.21.2 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-playground/validator/v10 v10.11.1 // indirect - github.com/goccy/go-yaml v1.9.8 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/golang/snappy v1.0.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/goware/breaker v0.2.0 // indirect github.com/goware/superr v0.0.2 // indirect @@ -99,64 +94,58 @@ require ( github.com/jackc/pgx/v5 v5.4.3 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/klauspost/compress v1.17.5 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect - github.com/pk910/dynamic-ssz v0.0.4 // indirect + github.com/pk910/dynamic-ssz v1.3.2 // indirect + github.com/pk910/hashtree-bindings v0.2.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/r3labs/sse/v2 v2.10.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rs/zerolog v1.32.0 // indirect github.com/shirou/gopsutil/v3 v3.23.12 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.6 // indirect - github.com/supranational/blst v0.3.14 // indirect + github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect - golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect modernc.org/libc v1.22.5 // indirect modernc.org/mathutil v1.5.0 // indirect modernc.org/memory v1.5.0 // indirect modernc.org/sqlite v1.23.1 // indirect - rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index d1170c0..8a8b506 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,10 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 h1:d/SJkN8/9Ca+1YmuDiUJxAiV4w/a9S8NcsG7GMQSrVI= +github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506/go.mod h1:6TZI4FU6zT8x6ZfWa1J8YQ2NgW0wLV/W3fHRca8ISBo= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -52,8 +56,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc h1:rLrx/o7WeRqmE9iXvhyBMDrugOPZRhNBLQD/4XbG6hU= -github.com/attestantio/go-eth2-client v0.26.1-0.20250721122214-dc2928832acc/go.mod h1:fvULSL9WtNskkOB4i+Yyr6BKpNHXvmpGZj9969fCrfY= github.com/aws/aws-sdk-go-v2 v1.25.0 h1:sv7+1JVJxOu/dD/sz/csHX7jFqmP001TIY7aytBWDSQ= github.com/aws/aws-sdk-go-v2 v1.25.0/go.mod h1:G104G1Aho5WqF+SR3mDIobTABQzpYV0WxMsKxlMggOA= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs= @@ -92,8 +94,12 @@ github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/ github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/casbin/govaluate v1.10.0 h1:ffGw51/hYH3w3rZcxO/KcaUIDOLP84w7nsidMVgaDG0= +github.com/casbin/govaluate v1.10.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -109,10 +115,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P 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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/consensys/bavard v0.1.30 h1:wwAj9lSnMLFXjEclKwyhf7Oslg8EoaFz9u1QGgt0bsk= -github.com/consensys/bavard v0.1.30/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.17.0 h1:vKDhZMOrySbpZDCvGMOELrHFv/A9mJ7+9I8HEfRZSkI= -github.com/consensys/gnark-crypto v0.17.0/go.mod h1:A2URlMHUT81ifJ0UlLzSlm7TmnE3t7VxEThApdMukJw= +github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= +github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -123,8 +127,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI= -github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc= +github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= @@ -153,31 +157,26 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c= -github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844/v2 v2.1.1 h1:KhzBVjmURsfr1+S3k/VE35T02+AW2qU9t9gr4R6YpSo= -github.com/ethereum/c-kzg-4844/v2 v2.1.1/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E= -github.com/ethereum/go-ethereum v1.14.10 h1:kC24WjYeRjDy86LVo6MfF5Xs7nnUu+XG4AjaYIaZYko= -github.com/ethereum/go-ethereum v1.14.10/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= +github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn27fRjSls= +github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 h1:d0kQnVKgCER1xIEYB0ucuNLfq4PtBZw+abMceZKUO8g= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/ethpandaops/beacon v0.64.0 h1:sNYEhd86aC6XEL8rYus1NJB8/lzd6bcW4Xo8NtNUB8o= -github.com/ethpandaops/beacon v0.64.0/go.mod h1:WopgtcqWZR+FNQCjFlLqHAdzNCYQyxXOnB6YD+/MS6I= +github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a h1:Et3cXyi55Qw9x7pCebNQQih6bdksHDZ+BXpU5qXkuJY= +github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a/go.mod h1:Bg1gTi65Y34ImJPAl9v3KFvQLPFQrn0D1A7ANs8uORY= github.com/ethpandaops/ethwallclock v0.3.0 h1:xF5fwtBf+bHFHZKBnwiPFEuelW3sMM7SD3ZNFq1lJY4= github.com/ethpandaops/ethwallclock v0.3.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 h1:hN4nugJUYn/O1Or4cW8jBYJBgCCrIGeMU2bXbpKWInU= +github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= -github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= @@ -201,26 +200,16 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/goccy/go-yaml v1.9.8 h1:5gMyLUeU1/6zl+WFfR1hN7D2kf+1/eRGa7DFtToiBvQ= -github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE= +github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -256,8 +245,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -272,8 +261,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -289,7 +279,6 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -302,8 +291,8 @@ github.com/goware/superr v0.0.2 h1:71xI6ojd+YXyq2RamI8lMpkYTNoErI5Uyrv8vFAPr1U= github.com/goware/superr v0.0.2/go.mod h1:EcKklaJ9ql9J+gKfwThuYsQ1IpUlOdUabO3qkAJrv60= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -341,10 +330,10 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E= -github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -361,20 +350,15 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -383,15 +367,6 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= @@ -409,6 +384,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= @@ -424,8 +401,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/pk910/dynamic-ssz v0.0.4 h1:DT29+1055tCEPCaR4V/ez+MOKW7BzBsmjyFvBRqx0ME= -github.com/pk910/dynamic-ssz v0.0.4/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c= +github.com/pk910/dynamic-ssz v1.3.2 h1:65UR/O+ss+U2Dn86Rdl7LwehHo3u2ElutduS/pcuUXE= +github.com/pk910/dynamic-ssz v1.3.2/go.mod h1:lqmnou2bjr2UWQ3C/L3082TGW0SFl/SwT7ionwM0+FU= +github.com/pk910/hashtree-bindings v0.2.2 h1:gkczxxekBW2NeMK9N3OLj7Jepe7zPmJGVwr8LyofGsA= +github.com/pk910/hashtree-bindings v0.2.2/go.mod h1:zrWt88783JmhBfcgni6kkIMYRdXTZi/FL//OyI5T/l4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -443,8 +422,8 @@ github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrb github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -452,8 +431,8 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= @@ -461,8 +440,8 @@ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -471,12 +450,8 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 h1:lC8kiphgdOBTcbTvo8MwkvpKjO0SlAgjv4xIK5FGJ94= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15/go.mod h1:8svFBIKKu31YriBG/pNizo9N0Jr9i5PQ+dFkxWg3x5k= -github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4= -github.com/prysmaticlabs/gohashtree v0.0.4-beta/go.mod h1:BFdtALS+Ffhg3lGQIHv9HDWuHS8cTvHZzrHWxwOtGOs= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -486,12 +461,11 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= 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/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -507,8 +481,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= @@ -522,17 +496,16 @@ github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= -github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= +github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= @@ -557,25 +530,33 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= -go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= +go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 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.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -583,9 +564,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -655,15 +635,14 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -687,8 +666,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -711,7 +690,6 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -736,10 +714,8 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -753,14 +729,14 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= +golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -770,13 +746,13 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -827,6 +803,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -879,10 +857,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -895,8 +873,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -913,12 +891,10 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY= gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw= -gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= -gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= @@ -939,7 +915,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= @@ -971,5 +946,3 @@ modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index 6bcbe5e..d963e4b 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -15,9 +15,10 @@ import ( //nolint:gosec // only exposed if pprofAddr config is set _ "net/http/pprof" - eth2v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec/phase0" + eth2v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum" + "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" "github.com/ethpandaops/tracoor/pkg/agent/indexer" "github.com/ethpandaops/tracoor/pkg/compression" "github.com/ethpandaops/tracoor/pkg/networks" @@ -96,7 +97,6 @@ func New(ctx context.Context, log logrus.FieldLogger, config *Config) (*agent, e }, nil } -//nolint:gocyclo // this is a complex function but most of it is event callbacks func (s *agent) Start(ctx context.Context) error { if s.Config.MetricsAddr != "" { observability.StartMetricsServer(ctx, s.Config.MetricsAddr) @@ -146,34 +146,12 @@ func (s *agent) Start(ctx context.Context) error { return nil } - // Fetch the beacon block from the beacon node. - block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, fmt.Sprintf("%#x", event.Block)) - if err != nil { - logCtx.WithError(err).Error("Failed to fetch beacon block") + if err := s.enqueueExecutionBlockTraceForBeaconBlock(ctx, fmt.Sprintf("%#x", event.Block)); err != nil { + logCtx.WithError(err).Error("Failed to queue execution block trace from beacon block event") return err } - if block == nil { - logCtx.Error("Failed to fetch beacon block - the beacon node returned a nil block.") - - return errors.New("failed to fetch beacon block") - } - - // Rip out the execution block number from the block - executionBlockNumber := block.Data.Message.Body.ExecutionPayload.BlockNumber - - executionBlockHash := block.Data.Message.Body.ExecutionPayload.BlockHash - - executionBlockNumberUint, err := strconv.ParseUint(executionBlockNumber, 10, 64) - if err != nil { - logCtx.WithError(err).Error("Failed to parse execution block number when processing beacon block event") - - return err - } - - s.enqueueExecutionBlockTrace(ctx, executionBlockHash, executionBlockNumberUint) - return nil }) @@ -257,32 +235,13 @@ func (s *agent) Start(ctx context.Context) error { logCtx := logrus.WithField("target_slot", slot) - // Fetch a version immune beacon block from the beacon node. - block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, fmt.Sprintf("%d", slot)) - if err != nil { - logCtx.WithError(err).Error("Failed to fetch beacon block") - - return err - } - - // Rip out the execution block number from the block - executionBlockNumber := block.Data.Message.Body.ExecutionPayload.BlockNumber - - executionBlockHash := block.Data.Message.Body.ExecutionPayload.BlockHash + logCtx.Info("Queueing up a fresh execution block trace index after a beacon chain reorg") - executionBlockNumberUint, err := strconv.ParseUint(executionBlockNumber, 10, 64) - if err != nil { - logCtx.WithError(err).Error("Failed to parse execution block number when processing beacon block event") + if err := s.enqueueExecutionBlockTraceForBeaconBlock(ctx, fmt.Sprintf("%d", slot)); err != nil { + logCtx.WithError(err).Error("Failed to queue execution block trace after a beacon chain reorg") return err } - - logCtx.WithFields(logrus.Fields{ - "execution_block_number": executionBlockNumber, - "execution_block_hash": executionBlockHash, - }).Info("Queueing up a fresh execution block trace index after a beacon chain reorg") - - s.enqueueExecutionBlockTrace(ctx, executionBlockHash, executionBlockNumberUint) } return nil @@ -411,6 +370,83 @@ func (s *agent) ServePProf(ctx context.Context) error { return nil } +const ( + executionBlockNumberResolveAttempts = 5 + executionBlockNumberResolveDelay = 3 * time.Second +) + +// enqueueExecutionBlockTraceForBeaconBlock resolves the execution block a +// beacon block commits to and queues a trace fetch for it. Pre-gloas blocks +// embed the execution payload, so the block number is read straight off the +// block. Gloas (ePBS) blocks only commit to the payload's block hash via the +// bid, so the number is resolved from the execution node with a bounded +// retry to give the builder time to reveal the payload. +func (s *agent) enqueueExecutionBlockTraceForBeaconBlock(ctx context.Context, blockID string) error { + block, err := s.node.Beacon().GetVersionImmuneBlock(ctx, blockID) + if err != nil { + return fmt.Errorf("failed to fetch beacon block: %w", err) + } + + if block == nil { + return errors.New("beacon node returned a nil block") + } + + payload := block.Data.Message.Body.ExecutionPayload + if payload.BlockHash != "" { + blockNumber, perr := strconv.ParseUint(payload.BlockNumber, 10, 64) + if perr != nil { + return fmt.Errorf("failed to parse execution block number: %w", perr) + } + + s.enqueueExecutionBlockTrace(ctx, payload.BlockHash, blockNumber) + + return nil + } + + bidBlockHash := block.Data.Message.Body.SignedExecutionPayloadBid.Message.BlockHash + if bidBlockHash == "" { + return errors.New("beacon block contains no execution payload or execution payload bid") + } + + blockNumber, err := s.resolveExecutionBlockNumber(ctx, bidBlockHash) + if err != nil { + return fmt.Errorf("failed to resolve execution block number for bid block hash %s: %w", bidBlockHash, err) + } + + s.enqueueExecutionBlockTrace(ctx, bidBlockHash, blockNumber) + + return nil +} + +// resolveExecutionBlockNumber looks up an execution block number by hash, +// retrying while the execution node reports the block as unknown. +func (s *agent) resolveExecutionBlockNumber(ctx context.Context, blockHash string) (uint64, error) { + var lastErr error + + for attempt := 0; attempt < executionBlockNumberResolveAttempts; attempt++ { + if attempt > 0 { + select { + case <-ctx.Done(): + return 0, ctx.Err() + case <-time.After(executionBlockNumberResolveDelay): + } + } + + number, err := s.node.Execution().GetBlockNumberByHash(ctx, blockHash) + if err == nil { + return number, nil + } + + if !errors.Is(err, execution.ErrBlockNotFound) { + return 0, err + } + + lastErr = err + } + + return 0, lastErr +} + func rootAsString(r phase0.Root) string { return fmt.Sprintf("%#x", r) } diff --git a/pkg/agent/consensus.go b/pkg/agent/consensus.go index d706246..c16037b 100644 --- a/pkg/agent/consensus.go +++ b/pkg/agent/consensus.go @@ -9,7 +9,7 @@ import ( "strconv" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon/services" "github.com/ethpandaops/tracoor/pkg/compression" "github.com/ethpandaops/tracoor/pkg/mime" diff --git a/pkg/agent/ethereum/beacon/block.go b/pkg/agent/ethereum/beacon/block.go index 151c367..b47e3ab 100644 --- a/pkg/agent/ethereum/beacon/block.go +++ b/pkg/agent/ethereum/beacon/block.go @@ -3,6 +3,10 @@ package beacon // VersionImmuneBlock is a block that is immune to version changes. // If this structure changes, good luck with your upgrade. // +// Pre-gloas blocks embed the execution payload in the body. Gloas (ePBS) +// blocks instead carry a signed execution payload bid, which commits to the +// payload's block hash but not its block number. +// //nolint:tagliatelle // requires snake. type VersionImmuneBlock struct { Data struct { @@ -12,6 +16,11 @@ type VersionImmuneBlock struct { BlockNumber string `json:"block_number"` BlockHash string `json:"block_hash"` } `json:"execution_payload"` + SignedExecutionPayloadBid struct { + Message struct { + BlockHash string `json:"block_hash"` + } `json:"message"` + } `json:"signed_execution_payload_bid"` } `json:"body"` } `json:"message"` } `json:"data"` diff --git a/pkg/agent/ethereum/beacon/services/metadata.go b/pkg/agent/ethereum/beacon/services/metadata.go index 45027e0..e7308bf 100644 --- a/pkg/agent/ethereum/beacon/services/metadata.go +++ b/pkg/agent/ethereum/beacon/services/metadata.go @@ -7,11 +7,11 @@ import ( "sync" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" "github.com/cenkalti/backoff/v4" "github.com/ethpandaops/beacon/pkg/beacon" "github.com/ethpandaops/beacon/pkg/beacon/state" "github.com/ethpandaops/ethwallclock" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" "github.com/ethpandaops/tracoor/pkg/networks" "github.com/go-co-op/gocron" "github.com/sirupsen/logrus" diff --git a/pkg/agent/ethereum/config.go b/pkg/agent/ethereum/config.go index 2aa99a4..3b7caba 100644 --- a/pkg/agent/ethereum/config.go +++ b/pkg/agent/ethereum/config.go @@ -3,7 +3,7 @@ package ethereum import ( "fmt" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" ) diff --git a/pkg/agent/ethereum/execution/execution.go b/pkg/agent/ethereum/execution/execution.go index 3086b6f..3d020bf 100644 --- a/pkg/agent/ethereum/execution/execution.go +++ b/pkg/agent/ethereum/execution/execution.go @@ -5,6 +5,8 @@ import ( "encoding/json" "errors" "fmt" + "strconv" + "strings" "sync" "github.com/0xsequence/ethkit/ethrpc" @@ -13,6 +15,10 @@ import ( "github.com/sirupsen/logrus" ) +// ErrBlockNotFound is returned when the execution node does not know about +// the requested block, e.g. a gloas payload that has not been revealed yet. +var ErrBlockNotFound = errors.New("execution block not found") + type Node struct { config *Config log logrus.FieldLogger @@ -150,6 +156,44 @@ func (n *Node) GetRawDebugBlockTrace(ctx context.Context, hash, client string) ( return &s, nil } +// GetBlockNumberByHash resolves an execution block number from its hash. +// Returns ErrBlockNotFound if the node does not (yet) have the block. +func (n *Node) GetBlockNumberByHash(ctx context.Context, hash string) (uint64, error) { + data := jsonrpc.Message{} + + rsp, err := n.rpc.Do(ctx, ethrpc.NewCall( + "eth_getBlockByHash", + hash, + false, + )) + if err != nil { + return 0, err + } + + if err = json.Unmarshal(rsp, &data); err != nil { + return 0, err + } + + if len(data.Result) == 0 || string(data.Result) == "null" { + return 0, ErrBlockNotFound + } + + block := struct { + Number string `json:"number"` + }{} + + if err = json.Unmarshal([]byte(data.Result), &block); err != nil { + return 0, err + } + + number, err := strconv.ParseUint(strings.TrimPrefix(block.Number, "0x"), 16, 64) + if err != nil { + return 0, fmt.Errorf("failed to parse block number %q: %w", block.Number, err) + } + + return number, nil +} + func (n *Node) GetBadBlocks(ctx context.Context) (*BadBlocksResponse, error) { data := jsonrpc.Message{} diff --git a/pkg/agent/ethereum/node.go b/pkg/agent/ethereum/node.go index 817e321..86f3797 100644 --- a/pkg/agent/ethereum/node.go +++ b/pkg/agent/ethereum/node.go @@ -4,7 +4,7 @@ import ( "context" "errors" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/execution" "github.com/sirupsen/logrus" diff --git a/pkg/agent/path.go b/pkg/agent/path.go index dda0f3a..b0edcab 100644 --- a/pkg/agent/path.go +++ b/pkg/agent/path.go @@ -4,7 +4,7 @@ import ( "fmt" "path" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) func CreateBeaconStateFileName( diff --git a/pkg/agent/queue.go b/pkg/agent/queue.go index 48cb6c6..3c59d2e 100644 --- a/pkg/agent/queue.go +++ b/pkg/agent/queue.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) type BeaconStateRequest struct { diff --git a/pkg/server/service/indexer/indexer.go b/pkg/server/service/indexer/indexer.go index 108e876..c07c8df 100644 --- a/pkg/server/service/indexer/indexer.go +++ b/pkg/server/service/indexer/indexer.go @@ -3,7 +3,7 @@ package indexer import ( "context" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexer" "github.com/ethpandaops/tracoor/pkg/server/ethereum" "github.com/ethpandaops/tracoor/pkg/server/persistence" diff --git a/pkg/server/service/indexer/permanent_store.go b/pkg/server/service/indexer/permanent_store.go index e6d9814..72e898e 100644 --- a/pkg/server/service/indexer/permanent_store.go +++ b/pkg/server/service/indexer/permanent_store.go @@ -6,7 +6,7 @@ import ( "path/filepath" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" lru "github.com/hashicorp/golang-lru/v2" "github.com/sirupsen/logrus" diff --git a/pkg/server/service/indexer/retention.go b/pkg/server/service/indexer/retention.go index a2ac489..7c0610a 100644 --- a/pkg/server/service/indexer/retention.go +++ b/pkg/server/service/indexer/retention.go @@ -5,7 +5,7 @@ import ( "errors" "time" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/server/persistence" "github.com/ethpandaops/tracoor/pkg/store" "github.com/sirupsen/logrus" From 8ecaaaadf291a2c7b01bdf9eeb3f1d258e24dc97 Mon Sep 17 00:00:00 2001 From: Sam Calder-Mason Date: Thu, 16 Jul 2026 13:42:18 +1000 Subject: [PATCH 2/3] ci: repair lint and smoke-test for the go 1.26 toolchain Pin golangci-lint to v2.12.2 (matching xatu) instead of 'latest', read the Go version from go.mod, and exclude goconst for test files and the logging-vocabulary heavy agent/server/store packages. Bump the smoke-test Dockerfile builder to golang:1.26 to match the go.mod requirement. Claude-Session: https://claude.ai/code/session_012CnMNMdPisWGmvKhKzj1ii --- .github/workflows/golangci-lint.yaml | 6 +++--- .golangci.yml | 8 ++++++++ Dockerfile | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 321864b..f190afb 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -15,12 +15,12 @@ jobs: name: lint runs-on: ubuntu-latest steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 with: - go-version: '1.26' - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + go-version-file: 'go.mod' - name: golangci-lint uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 with: - version: latest + version: v2.12.2 args: --timeout=10m diff --git a/.golangci.yml b/.golangci.yml index 6135bdb..5d9f2c2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -76,7 +76,15 @@ linters: - gocritic - gosec - wsl + - goconst path: _test\.go + # The agent, server and store packages repeat logrus field keys and + # prometheus label names (a fixed logging vocabulary) across many files; + # goconst flags the shared keys but turning them into Go constants adds + # no real value. + - linters: + - goconst + path: pkg/(agent|server|store)/ paths: - third_party$ - builtin$ diff --git a/Dockerfile b/Dockerfile index 5104994..9513a29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.24.6 AS builder +FROM golang:1.26 AS builder WORKDIR /src COPY go.sum go.mod ./ RUN go mod download From 8ae1495224b42658829547f2b740269eb15de2a0 Mon Sep 17 00:00:00 2001 From: Sam Calder-Mason Date: Thu, 16 Jul 2026 14:59:34 +1000 Subject: [PATCH 3/3] feat: archive signed execution payload envelopes (gloas) Gloas (ePBS) blocks only commit to the execution payload; the payload contents ship separately as a SignedExecutionPayloadEnvelope, making the envelope effectively the other half of the block. Archive it as a new object type, cloned end-to-end from the beacon block flow: agent fetch on block events (gated on the gloas fork epoch, with a short retry while the builder reveals the payload; a never-revealed payload is skipped), gzip'd raw SSZ in the store, indexer table and gRPC/API surface, download route, retention, and a web UI listing. Envelope fetching rides on ethpandaops/beacon#80, which exposes GET /eth/v1/beacon/execution_payload_envelopes/{block_id}. Claude-Session: https://claude.ai/code/session_012CnMNMdPisWGmvKhKzj1ii --- deploy/docker-compose/tracoor-server.yaml | 1 + deploy/docker-compose/tracoor-single.yaml | 2 + example_agent_config.yaml | 1 + example_server_config.yaml | 1 + example_single_config.yaml | 2 + go.mod | 2 +- go.sum | 4 +- pkg/agent/agent.go | 45 +- pkg/agent/consensus.go | 153 + pkg/agent/ethereum/beacon/beacon.go | 6 + pkg/agent/ethereum/config.go | 25 +- pkg/agent/indexer/client.go | 14 + pkg/agent/metrics.go | 13 +- pkg/agent/path.go | 16 + pkg/agent/queue.go | 41 + pkg/api/api.pb.gw.go | 275 +- pkg/api/openapiv2/api.swagger.json | 120 +- pkg/proto/tracoor/api/api.pb.go | 4525 ++++++------- pkg/proto/tracoor/api/api.proto | 82 + pkg/proto/tracoor/api/api_grpc.pb.go | 276 +- pkg/proto/tracoor/api/config.yaml | 8 + pkg/proto/tracoor/api/validate.go | 22 + pkg/proto/tracoor/indexer/indexer.pb.go | 6015 +++++++---------- pkg/proto/tracoor/indexer/indexer.proto | 105 + pkg/proto/tracoor/indexer/indexer_grpc.pb.go | 365 +- pkg/proto/tracoor/indexer/validate.go | 68 + pkg/server/download.go | 92 + pkg/server/persistence/db.go | 5 + .../persistence/execution_payload_envelope.go | 383 ++ .../execution_payload_envelope_test.go | 318 + pkg/server/persistence/operation.go | 6 + pkg/server/service/api/api.go | 133 + pkg/server/service/indexer/config.go | 13 +- pkg/server/service/indexer/convert.go | 36 + .../execution_payload_envelope_test.go | 405 ++ pkg/server/service/indexer/indexer.go | 258 + pkg/server/service/indexer/retention.go | 63 +- pkg/store/fs.go | 28 + pkg/store/fs_test.go | 36 +- pkg/store/s3.go | 86 + pkg/store/s3_test.go | 59 + pkg/store/store.go | 8 + pkg/store/type.go | 15 +- web/src/api/executionPayloadEnvelope.ts | 74 + .../ExecutionPayloadEnvelopeFilter.tsx | 128 + .../components/ExecutionPayloadEnvelopeId.tsx | 239 + .../ExecutionPayloadEnvelopeInfo.tsx | 18 + .../ExecutionPayloadEnvelopeTable.tsx | 562 ++ web/src/contexts/selection.tsx | 1 + web/src/hooks/useQuery.ts | 56 + web/src/parts/Filters.tsx | 63 + web/src/parts/Info.tsx | 4 + web/src/parts/Listing.tsx | 4 + web/src/parts/Selector.tsx | 21 + web/src/types/api.ts | 71 + 55 files changed, 9232 insertions(+), 6140 deletions(-) create mode 100644 pkg/server/persistence/execution_payload_envelope.go create mode 100644 pkg/server/persistence/execution_payload_envelope_test.go create mode 100644 pkg/server/service/indexer/execution_payload_envelope_test.go create mode 100644 web/src/api/executionPayloadEnvelope.ts create mode 100644 web/src/components/ExecutionPayloadEnvelopeFilter.tsx create mode 100644 web/src/components/ExecutionPayloadEnvelopeId.tsx create mode 100644 web/src/components/ExecutionPayloadEnvelopeInfo.tsx create mode 100644 web/src/components/ExecutionPayloadEnvelopeTable.tsx diff --git a/deploy/docker-compose/tracoor-server.yaml b/deploy/docker-compose/tracoor-server.yaml index 28abc21..3291f49 100644 --- a/deploy/docker-compose/tracoor-server.yaml +++ b/deploy/docker-compose/tracoor-server.yaml @@ -14,6 +14,7 @@ services: retention: beaconStates: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m executionBlockTrace: 30m store: diff --git a/deploy/docker-compose/tracoor-single.yaml b/deploy/docker-compose/tracoor-single.yaml index 27da923..7f873a2 100644 --- a/deploy/docker-compose/tracoor-single.yaml +++ b/deploy/docker-compose/tracoor-single.yaml @@ -16,6 +16,7 @@ server: beaconStates: 1m executionBlockTraces: 15m beaconBlocks: 1m + executionPayloadEnvelopes: 1m # ethereum: # network: devnet-name # config: @@ -38,6 +39,7 @@ agents: features: fetchBeaconState: true fetchBeaconBlock: true + fetchExecutionPayloadEnvelope: true fetchBeaconBadBlock: true fetchBeaconBadBlob: true fetchExecutionBlockTrace: true diff --git a/example_agent_config.yaml b/example_agent_config.yaml index 5cc6a1f..2a3e81c 100644 --- a/example_agent_config.yaml +++ b/example_agent_config.yaml @@ -8,6 +8,7 @@ ethereum: # features: # fetchBeaconState: true # fetchBeaconBlock: true + # fetchExecutionPayloadEnvelope: true # fetchBeaconBadBlock: true # fetchBeaconBadBlob: true # fetchExecutionBlockTrace: true diff --git a/example_server_config.yaml b/example_server_config.yaml index e0a2445..7105274 100644 --- a/example_server_config.yaml +++ b/example_server_config.yaml @@ -14,6 +14,7 @@ services: retention: beaconStates: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m beaconBadBlocks: 30m beaconBadBlobs: 30m executionBlockTrace: 30m diff --git a/example_single_config.yaml b/example_single_config.yaml index b96703b..fa595df 100644 --- a/example_single_config.yaml +++ b/example_single_config.yaml @@ -15,6 +15,7 @@ server: beaconStates: 30m executionBlockTraces: 30m beaconBlocks: 30m + executionPayloadEnvelopes: 30m # Use the following to configure Tracoor for a custom network # ethereum: # config: @@ -38,6 +39,7 @@ agents: # features: # fetchBeaconState: true # fetchBeaconBlock: true + # fetchExecutionPayloadEnvelope: true # fetchBeaconBadBlock: true # fetchBeaconBadBlob: true # fetchExecutionBlockTrace: true diff --git a/go.mod b/go.mod index b91dadb..5a5ef9b 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/aws/smithy-go v1.20.0 github.com/cenkalti/backoff/v4 v4.2.1 github.com/creasty/defaults v1.7.0 - github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a + github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9 github.com/ethpandaops/ethwallclock v0.3.0 github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 github.com/glebarez/sqlite v1.10.0 diff --git a/go.sum b/go.sum index 8a8b506..9125415 100644 --- a/go.sum +++ b/go.sum @@ -167,8 +167,8 @@ github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 h1:d0kQnVK github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= -github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a h1:Et3cXyi55Qw9x7pCebNQQih6bdksHDZ+BXpU5qXkuJY= -github.com/ethpandaops/beacon v0.69.1-0.20260712083459-fcdf5654666a/go.mod h1:Bg1gTi65Y34ImJPAl9v3KFvQLPFQrn0D1A7ANs8uORY= +github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9 h1:I0bfsRbH2y4VhOMIcgtzbsemCIePH7QTiulxR7inHgc= +github.com/ethpandaops/beacon v0.69.1-0.20260716043407-1de3961bc7c9/go.mod h1:Bg1gTi65Y34ImJPAl9v3KFvQLPFQrn0D1A7ANs8uORY= github.com/ethpandaops/ethwallclock v0.3.0 h1:xF5fwtBf+bHFHZKBnwiPFEuelW3sMM7SD3ZNFq1lJY4= github.com/ethpandaops/ethwallclock v0.3.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= github.com/ethpandaops/go-eth2-client v0.1.7-0.20260712074542-bca0dce49005 h1:hN4nugJUYn/O1Or4cW8jBYJBgCCrIGeMU2bXbpKWInU= diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index d963e4b..0d11a43 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -46,12 +46,13 @@ type agent struct { store store.Store - beaconStateQueue chan *BeaconStateRequest - beaconBlockQueue chan *BeaconBlockRequest - beaconBadBlockQueue chan *BeaconBadBlockRequest - beaconBadBlobQueue chan *BeaconBadBlobRequest - executionBlockTraceQueue chan *ExecutionBlockTraceRequest - executionBadBlockQueue chan *ExecutionBadBlockRequest + beaconStateQueue chan *BeaconStateRequest + beaconBlockQueue chan *BeaconBlockRequest + executionPayloadEnvelopeQueue chan *ExecutionPayloadEnvelopeRequest + beaconBadBlockQueue chan *BeaconBadBlockRequest + beaconBadBlobQueue chan *BeaconBadBlobRequest + executionBlockTraceQueue chan *ExecutionBlockTraceRequest + executionBadBlockQueue chan *ExecutionBadBlockRequest compressor *compression.Compressor } @@ -80,20 +81,21 @@ func New(ctx context.Context, log logrus.FieldLogger, config *Config) (*agent, e } return &agent{ - Config: config, - node: node, - log: log, - metrics: GetMetricsInstance(namespace), - scheduler: gocron.NewScheduler(time.Local), - indexer: indexerClient, - store: st, - beaconStateQueue: make(chan *BeaconStateRequest, 1000), - beaconBlockQueue: make(chan *BeaconBlockRequest, 1000), - beaconBadBlockQueue: make(chan *BeaconBadBlockRequest, 1000), - beaconBadBlobQueue: make(chan *BeaconBadBlobRequest, 1000), - executionBlockTraceQueue: make(chan *ExecutionBlockTraceRequest, 1000), - executionBadBlockQueue: make(chan *ExecutionBadBlockRequest, 1000), - compressor: compression.NewCompressor(), + Config: config, + node: node, + log: log, + metrics: GetMetricsInstance(namespace), + scheduler: gocron.NewScheduler(time.Local), + indexer: indexerClient, + store: st, + beaconStateQueue: make(chan *BeaconStateRequest, 1000), + beaconBlockQueue: make(chan *BeaconBlockRequest, 1000), + executionPayloadEnvelopeQueue: make(chan *ExecutionPayloadEnvelopeRequest, 1000), + beaconBadBlockQueue: make(chan *BeaconBadBlockRequest, 1000), + beaconBadBlobQueue: make(chan *BeaconBadBlobRequest, 1000), + executionBlockTraceQueue: make(chan *ExecutionBlockTraceRequest, 1000), + executionBadBlockQueue: make(chan *ExecutionBadBlockRequest, 1000), + compressor: compression.NewCompressor(), }, nil } @@ -163,6 +165,7 @@ func (s *agent) Start(ctx context.Context) error { go s.processBeaconStateQueue(ctx) go s.processBeaconBlockQueue(ctx) + go s.processExecutionPayloadEnvelopeQueue(ctx) go s.processBeaconBadBlockQueue(ctx) go s.processBeaconBadBlobQueue(ctx) @@ -192,6 +195,7 @@ func (s *agent) Start(ctx context.Context) error { s.enqueueBeaconState(ctx, event.Slot) s.enqueueBeaconBlock(ctx, event.Slot) + s.enqueueExecutionPayloadEnvelope(ctx, event.Slot) return nil }) @@ -225,6 +229,7 @@ func (s *agent) Start(ctx context.Context) error { s.enqueueBeaconState(ctx, slot) s.enqueueBeaconBlock(ctx, slot) + s.enqueueExecutionPayloadEnvelope(ctx, slot) } // Go back and fetch all the new execution block traces diff --git a/pkg/agent/consensus.go b/pkg/agent/consensus.go index c16037b..e8567d9 100644 --- a/pkg/agent/consensus.go +++ b/pkg/agent/consensus.go @@ -2,6 +2,7 @@ package agent import ( "context" + goerrors "errors" "fmt" "os" "path/filepath" @@ -9,6 +10,7 @@ import ( "strconv" "time" + "github.com/ethpandaops/beacon/pkg/beacon/api" "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/ethpandaops/tracoor/pkg/agent/ethereum/beacon/services" "github.com/ethpandaops/tracoor/pkg/compression" @@ -266,6 +268,157 @@ func getBadBlocksFilePattern(client string) (*string, error) { return &pattern, nil } +const ( + executionPayloadEnvelopeFetchAttempts = 5 + executionPayloadEnvelopeFetchDelay = 3 * time.Second +) + +// fetchAndIndexExecutionPayloadEnvelope archives the signed execution payload +// envelope for the block at the given slot. Envelopes exist from the gloas +// fork onwards and are revealed by the builder after the block arrives, so +// the fetch retries briefly while the beacon node reports it as not found. A +// payload that is never revealed leaves the slot without an envelope, which +// is not an error. +func (s *agent) fetchAndIndexExecutionPayloadEnvelope(ctx context.Context, slot phase0.Slot) error { + ctx, cancel := context.WithTimeout(ctx, 60*time.Second) + defer cancel() + + spec, err := s.node.Beacon().Node().Spec() + if err != nil { + return err + } + + epoch := uint64(slot) / uint64(spec.SlotsPerEpoch) + + gloas, err := spec.ForkEpochs.GetByName("gloas") + if err != nil || uint64(gloas.Epoch) > epoch { + // The network has no gloas fork scheduled, or the slot pre-dates it. + return nil + } + + blockRoot, err := s.node.Beacon().Node().FetchBlockRoot(ctx, fmt.Sprintf("%d", slot)) + if err != nil { + return errors.Wrap(err, "failed to fetch beacon block root") + } + + blockRootAsString := blockRoot.String() + + location := CreateExecutionPayloadEnvelopeFileName( + s.Config.Name, + string(s.node.Beacon().Metadata().Network.Name), + slot, + blockRootAsString, + ) + + location = fmt.Sprintf("%s.ssz", location) + + // Check if we've somehow already indexed this envelope + rsp, err := s.indexer.ListExecutionPayloadEnvelope(ctx, &indexer.ListExecutionPayloadEnvelopeRequest{ + Node: s.Config.Name, + BlockRoot: blockRootAsString, + Slot: uint64(slot), + Network: string(s.node.Beacon().Metadata().Network.Name), + }) + if err != nil { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + WithError(err). + Error("Failed to check if execution payload envelope is already indexed") + } + + if rsp != nil && len(rsp.ExecutionPayloadEnvelopes) > 0 { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Execution payload envelope already indexed") + + return nil + } + + now := time.Now() + + var envelopeRaw []byte + + for attempt := 0; attempt < executionPayloadEnvelopeFetchAttempts; attempt++ { + if attempt > 0 { + select { + case <-ctx.Done(): + return ctx.Err() + case <-time.After(executionPayloadEnvelopeFetchDelay): + } + } + + envelopeRaw, err = s.node.Beacon().FetchRawExecutionPayloadEnvelope(ctx, blockRootAsString, string(mime.ContentTypeOctet)) + if err == nil { + break + } + + if !goerrors.Is(err, api.ErrNotFound) { + return errors.Wrap(err, "failed to fetch execution payload envelope") + } + } + + if err != nil { + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Execution payload envelope not available, payload was likely never revealed") + + return nil + } + + // Compress it + compressedEnvelope, err := s.compressor.Compress(&envelopeRaw, compression.Gzip) + if err != nil { + return errors.Wrap(err, "failed to compress execution payload envelope") + } + + s.log.WithField("location", location).Debug("Saving execution payload envelope") + + // Upload the envelope to the store + location, err = s.store.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &compressedEnvelope, + Location: location, + ContentEncoding: compression.Gzip.ContentEncoding, + }) + if err != nil { + return err + } + + // Sleep for 1s to give the store time to update + time.Sleep(1 * time.Second) + + req := &indexer.CreateExecutionPayloadEnvelopeRequest{ + Node: wrapperspb.String(s.Config.Name), + Network: wrapperspb.String(string(s.node.Beacon().Metadata().Network.Name)), + Slot: wrapperspb.UInt64(uint64(slot)), + Epoch: wrapperspb.UInt64(epoch), + BlockRoot: wrapperspb.String(blockRootAsString), + Location: wrapperspb.String(location), + ContentEncoding: wrapperspb.String(compression.Gzip.ContentEncoding), + NodeVersion: wrapperspb.String(s.node.Beacon().Metadata().NodeVersion(ctx)), + BeaconImplementation: wrapperspb.String( + s.node.Beacon().Metadata().Client(ctx), + ), + FetchedAt: timestamppb.New(now), + } + + // Index the envelope + if _, err := s.indexer.CreateExecutionPayloadEnvelope(ctx, req); err != nil { + return err + } + + s.metrics.IncrementItemExported(ExecutionPayloadEnvelopeQueue, s.Config.Name) + + s.log. + WithField("block_root", blockRootAsString). + WithField("slot", slot). + Debug("Indexed execution payload envelope") + + return nil +} + func (s *agent) fetchAndIndexBeaconBadBlocks(ctx context.Context, path string) error { client := s.node.Beacon().Metadata().Client(ctx) diff --git a/pkg/agent/ethereum/beacon/beacon.go b/pkg/agent/ethereum/beacon/beacon.go index 67f2cf4..23bc61d 100644 --- a/pkg/agent/ethereum/beacon/beacon.go +++ b/pkg/agent/ethereum/beacon/beacon.go @@ -81,6 +81,12 @@ func (b *Node) GetVersionImmuneBlock(ctx context.Context, blockID string) (*Vers return block, nil } +// FetchRawExecutionPayloadEnvelope fetches the raw signed execution payload +// envelope for the given block id (gloas onwards). +func (b *Node) FetchRawExecutionPayloadEnvelope(ctx context.Context, blockID, contentType string) ([]byte, error) { + return b.beacon.FetchRawExecutionPayloadEnvelope(ctx, blockID, contentType) +} + func (b *Node) Start(ctx context.Context) error { s := gocron.NewScheduler(time.Local) diff --git a/pkg/agent/ethereum/config.go b/pkg/agent/ethereum/config.go index 3b7caba..20cba30 100644 --- a/pkg/agent/ethereum/config.go +++ b/pkg/agent/ethereum/config.go @@ -47,12 +47,13 @@ func (c *Config) Validate() error { // Features contains feature flags for the agent. type Features struct { - FetchBeaconState *bool `yaml:"fetchBeaconState" default:"true"` - FetchBeaconBlock *bool `yaml:"fetchBeaconBlock" default:"true"` - FetchBeaconBadBlock *bool `yaml:"fetchBeaconBadBlock" default:"true"` - FetchBeaconBadBlob *bool `yaml:"fetchBeaconBadBlob" default:"true"` - FetchExecutionBlockTrace *bool `yaml:"fetchExecutionBlockTrace" default:"true"` - FetchExecutionBadBlock *bool `yaml:"fetchExecutionBadBlock" default:"true"` + FetchBeaconState *bool `yaml:"fetchBeaconState" default:"true"` + FetchBeaconBlock *bool `yaml:"fetchBeaconBlock" default:"true"` + FetchExecutionPayloadEnvelope *bool `yaml:"fetchExecutionPayloadEnvelope" default:"true"` + FetchBeaconBadBlock *bool `yaml:"fetchBeaconBadBlock" default:"true"` + FetchBeaconBadBlob *bool `yaml:"fetchBeaconBadBlob" default:"true"` + FetchExecutionBlockTrace *bool `yaml:"fetchExecutionBlockTrace" default:"true"` + FetchExecutionBadBlock *bool `yaml:"fetchExecutionBadBlock" default:"true"` } func (f Features) Validate() error { @@ -75,6 +76,14 @@ func (f Features) GetFetchBeaconBlock() bool { return *f.FetchBeaconBlock } +func (f Features) GetFetchExecutionPayloadEnvelope() bool { + if f.FetchExecutionPayloadEnvelope == nil { + return true // default value + } + + return *f.FetchExecutionPayloadEnvelope +} + func (f Features) GetFetchBeaconBadBlock() bool { if f.FetchBeaconBadBlock == nil { return true // default value @@ -118,6 +127,10 @@ func (f Features) EnabledFlags() []string { enabled = append(enabled, "FetchBeaconBlock") } + if f.GetFetchExecutionPayloadEnvelope() { + enabled = append(enabled, "FetchExecutionPayloadEnvelope") + } + if f.GetFetchBeaconBadBlock() { enabled = append(enabled, "FetchBeaconBadBlock") } diff --git a/pkg/agent/indexer/client.go b/pkg/agent/indexer/client.go index 958c9b1..5c7853d 100644 --- a/pkg/agent/indexer/client.go +++ b/pkg/agent/indexer/client.go @@ -100,6 +100,20 @@ func (c *Client) ListBeaconBlock(ctx context.Context, req *indexer.ListBeaconBlo return c.pb.ListBeaconBlock(ctx, req, grpc.UseCompressor(gzip.Name)) } +func (c *Client) CreateExecutionPayloadEnvelope(ctx context.Context, req *indexer.CreateExecutionPayloadEnvelopeRequest) (*indexer.CreateExecutionPayloadEnvelopeResponse, error) { + md := metadata.New(c.config.Headers) + ctx = metadata.NewOutgoingContext(ctx, md) + + return c.pb.CreateExecutionPayloadEnvelope(ctx, req, grpc.UseCompressor(gzip.Name)) +} + +func (c *Client) ListExecutionPayloadEnvelope(ctx context.Context, req *indexer.ListExecutionPayloadEnvelopeRequest) (*indexer.ListExecutionPayloadEnvelopeResponse, error) { + md := metadata.New(c.config.Headers) + ctx = metadata.NewOutgoingContext(ctx, md) + + return c.pb.ListExecutionPayloadEnvelope(ctx, req, grpc.UseCompressor(gzip.Name)) +} + func (c *Client) CreateBeaconBadBlock(ctx context.Context, req *indexer.CreateBeaconBadBlockRequest) (*indexer.CreateBeaconBadBlockResponse, error) { md := metadata.New(c.config.Headers) ctx = metadata.NewOutgoingContext(ctx, md) diff --git a/pkg/agent/metrics.go b/pkg/agent/metrics.go index 541e77d..58aa72a 100644 --- a/pkg/agent/metrics.go +++ b/pkg/agent/metrics.go @@ -19,12 +19,13 @@ type Metrics struct { type Queue string var ( - BeaconStateQueue Queue = "beacon_state" - BeaconBlockQueue Queue = "beacon_block" - BeaconBadBlockQueue Queue = "beacon_bad_block" - BeaconBadBlobQueue Queue = "beacon_bad_blob" - ExecutionBlockTraceQueue Queue = "execution_block_trace" - ExecutionBadBlockQueue Queue = "execution_bad_block" + BeaconStateQueue Queue = "beacon_state" + BeaconBlockQueue Queue = "beacon_block" + ExecutionPayloadEnvelopeQueue Queue = "execution_payload_envelope" + BeaconBadBlockQueue Queue = "beacon_bad_block" + BeaconBadBlobQueue Queue = "beacon_bad_blob" + ExecutionBlockTraceQueue Queue = "execution_block_trace" + ExecutionBadBlockQueue Queue = "execution_bad_block" ) var ( diff --git a/pkg/agent/path.go b/pkg/agent/path.go index b0edcab..f08fc6f 100644 --- a/pkg/agent/path.go +++ b/pkg/agent/path.go @@ -39,6 +39,22 @@ func CreateBeaconBlockFileName( ) } +func CreateExecutionPayloadEnvelopeFileName( + node string, + network string, + slot phase0.Slot, + blockRoot string, +) string { + return path.Join( + "execution_payload_envelopes", + network, + "slots", + fmt.Sprintf("%d", slot), + node, + blockRoot, + ) +} + func CreateBeaconBadBlockFileName( node string, network string, diff --git a/pkg/agent/queue.go b/pkg/agent/queue.go index 3c59d2e..4b3d237 100644 --- a/pkg/agent/queue.go +++ b/pkg/agent/queue.go @@ -15,6 +15,10 @@ type BeaconBlockRequest struct { Slot phase0.Slot } +type ExecutionPayloadEnvelopeRequest struct { + Slot phase0.Slot +} + type BeaconBadBlockRequest struct { Path string } @@ -51,6 +55,16 @@ func (s *agent) enqueueBeaconBlock(ctx context.Context, slot phase0.Slot) { } } +func (s *agent) enqueueExecutionPayloadEnvelope(ctx context.Context, slot phase0.Slot) { + if !s.Config.Ethereum.Features.GetFetchExecutionPayloadEnvelope() { + return + } + + s.executionPayloadEnvelopeQueue <- &ExecutionPayloadEnvelopeRequest{ + Slot: slot, + } +} + func (s *agent) enqueueBeaconBadBlock(ctx context.Context, path string) { if !s.Config.Ethereum.Features.GetFetchBeaconBadBlock() { return @@ -157,6 +171,33 @@ func (s *agent) processBeaconBlockQueue(ctx context.Context) { } } +func (s *agent) processExecutionPayloadEnvelopeQueue(ctx context.Context) { + if !s.Config.Ethereum.Features.GetFetchExecutionPayloadEnvelope() { + return + } + + for envelopeRequest := range s.executionPayloadEnvelopeQueue { + s.metrics.SetQueueSize(ExecutionPayloadEnvelopeQueue, len(s.executionPayloadEnvelopeQueue), s.Config.Name) + + start := time.Now() + + if err := s.fetchAndIndexExecutionPayloadEnvelope(ctx, envelopeRequest.Slot); err != nil { + s.log. + WithError(err). + WithField("slot", envelopeRequest.Slot). + Error("Failed to fetch and index execution payload envelope") + + continue + } + + s.metrics.ObserveQueueItemProcessingTime( + ExecutionPayloadEnvelopeQueue, + time.Since(start), + s.Config.Name, + ) + } +} + func (s *agent) processBeaconBadBlockQueue(ctx context.Context) { if !s.Config.Ethereum.Features.GetFetchBeaconBadBlock() { return diff --git a/pkg/api/api.pb.gw.go b/pkg/api/api.pb.gw.go index 65bf160..f9f52f7 100644 --- a/pkg/api/api.pb.gw.go +++ b/pkg/api/api.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: api.proto +// source: pkg/proto/tracoor/api/api.proto /* Package api is a reverse proxy. @@ -202,15 +202,18 @@ func local_request_API_ListBeaconBlock_0(ctx context.Context, marshaler runtime. } +var ( + filter_API_CountBeaconBlock_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + func request_API_CountBeaconBlock_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extApi.CountBeaconBlockRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_API_CountBeaconBlock_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -223,11 +226,10 @@ func local_request_API_CountBeaconBlock_0(ctx context.Context, marshaler runtime var protoReq extApi.CountBeaconBlockRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_API_CountBeaconBlock_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -270,6 +272,108 @@ func local_request_API_ListUniqueBeaconBlockValues_0(ctx context.Context, marsha } +func request_API_ListExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListExecutionPayloadEnvelope(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_ListExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListExecutionPayloadEnvelope(ctx, &protoReq) + return msg, metadata, err + +} + +func request_API_CountExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.CountExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CountExecutionPayloadEnvelope(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_CountExecutionPayloadEnvelope_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.CountExecutionPayloadEnvelopeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CountExecutionPayloadEnvelope(ctx, &protoReq) + return msg, metadata, err + +} + +func request_API_ListUniqueExecutionPayloadEnvelopeValues_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListUniqueExecutionPayloadEnvelopeValuesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListUniqueExecutionPayloadEnvelopeValues(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_API_ListUniqueExecutionPayloadEnvelopeValues_0(ctx context.Context, marshaler runtime.Marshaler, server extApi.APIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq extApi.ListUniqueExecutionPayloadEnvelopeValuesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListUniqueExecutionPayloadEnvelopeValues(ctx, &protoReq) + return msg, metadata, err + +} + func request_API_ListBeaconBadBlock_0(ctx context.Context, marshaler runtime.Marshaler, client extApi.APIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq extApi.ListBeaconBadBlockRequest var metadata runtime.ServerMetadata @@ -859,6 +963,81 @@ func RegisterAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server }) + mux.Handle("POST", pattern_API_ListExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/ListExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/list-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_ListExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_CountExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/CountExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/count-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_CountExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_CountExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/api.API/ListUniqueExecutionPayloadEnvelopeValues", runtime.WithHTTPPathPattern("/v1/api/list-unique-execution-payload-envelope-values")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_API_ListBeaconBadBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1354,6 +1533,72 @@ func RegisterAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client }) + mux.Handle("POST", pattern_API_ListExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/ListExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/list-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_ListExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_CountExecutionPayloadEnvelope_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/CountExecutionPayloadEnvelope", runtime.WithHTTPPathPattern("/v1/api/count-execution-payload-envelope")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_CountExecutionPayloadEnvelope_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_CountExecutionPayloadEnvelope_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/api.API/ListUniqueExecutionPayloadEnvelopeValues", runtime.WithHTTPPathPattern("/v1/api/list-unique-execution-payload-envelope-values")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_API_ListBeaconBadBlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1636,6 +1881,12 @@ var ( pattern_API_ListUniqueBeaconBlockValues_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-unique-beacon-block-values"}, "")) + pattern_API_ListExecutionPayloadEnvelope_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-execution-payload-envelope"}, "")) + + pattern_API_CountExecutionPayloadEnvelope_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "count-execution-payload-envelope"}, "")) + + pattern_API_ListUniqueExecutionPayloadEnvelopeValues_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-unique-execution-payload-envelope-values"}, "")) + pattern_API_ListBeaconBadBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "list-beacon-bad-block"}, "")) pattern_API_CountBeaconBadBlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "api", "count-beacon-bad-block"}, "")) @@ -1676,6 +1927,12 @@ var ( forward_API_ListUniqueBeaconBlockValues_0 = runtime.ForwardResponseMessage + forward_API_ListExecutionPayloadEnvelope_0 = runtime.ForwardResponseMessage + + forward_API_CountExecutionPayloadEnvelope_0 = runtime.ForwardResponseMessage + + forward_API_ListUniqueExecutionPayloadEnvelopeValues_0 = runtime.ForwardResponseMessage + forward_API_ListBeaconBadBlock_0 = runtime.ForwardResponseMessage forward_API_CountBeaconBadBlock_0 = runtime.ForwardResponseMessage diff --git a/pkg/api/openapiv2/api.swagger.json b/pkg/api/openapiv2/api.swagger.json index df8ed46..29997c6 100644 --- a/pkg/api/openapiv2/api.swagger.json +++ b/pkg/api/openapiv2/api.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "api.proto", + "title": "pkg/proto/tracoor/api/api.proto", "version": "version not set" }, "tags": [ @@ -223,6 +223,15 @@ } } }, + "apiCountExecutionPayloadEnvelopeResponse": { + "type": "object", + "properties": { + "count": { + "type": "string", + "format": "uint64" + } + } + }, "apiEthereumConfig": { "type": "object", "properties": { @@ -313,6 +322,41 @@ } } }, + "apiExecutionPayloadEnvelope": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "node": { + "type": "string" + }, + "fetched_at": { + "type": "string", + "format": "date-time" + }, + "slot": { + "type": "string", + "format": "uint64" + }, + "epoch": { + "type": "string", + "format": "uint64" + }, + "block_root": { + "type": "string" + }, + "node_version": { + "type": "string" + }, + "network": { + "type": "string" + }, + "beacon_implementation": { + "type": "string" + } + } + }, "apiGetConfigResponse": { "type": "object", "properties": { @@ -404,6 +448,18 @@ } } }, + "apiListExecutionPayloadEnvelopeResponse": { + "type": "object", + "properties": { + "execution_payload_envelopes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/apiExecutionPayloadEnvelope" + } + } + } + }, "apiListUniqueBeaconBadBlobValuesRequestField": { "type": "string", "enum": [ @@ -775,6 +831,68 @@ } } }, + "apiListUniqueExecutionPayloadEnvelopeValuesRequestField": { + "type": "string", + "enum": [ + "node", + "slot", + "epoch", + "block_root", + "node_version", + "network", + "beacon_implementation" + ], + "default": "node" + }, + "apiListUniqueExecutionPayloadEnvelopeValuesResponse": { + "type": "object", + "properties": { + "node": { + "type": "array", + "items": { + "type": "string" + } + }, + "slot": { + "type": "array", + "items": { + "type": "string", + "format": "uint64" + } + }, + "epoch": { + "type": "array", + "items": { + "type": "string", + "format": "uint64" + } + }, + "block_root": { + "type": "array", + "items": { + "type": "string" + } + }, + "node_version": { + "type": "array", + "items": { + "type": "string" + } + }, + "network": { + "type": "array", + "items": { + "type": "string" + } + }, + "beacon_implementation": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "apiPaginationCursor": { "type": "object", "properties": { diff --git a/pkg/proto/tracoor/api/api.pb.go b/pkg/proto/tracoor/api/api.pb.go index 9b700bf..f1d2d00 100644 --- a/pkg/proto/tracoor/api/api.pb.go +++ b/pkg/proto/tracoor/api/api.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.36.6 // protoc (unknown) -// source: api/api.proto +// source: pkg/proto/tracoor/api/api.proto package api @@ -13,6 +13,7 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -67,11 +68,11 @@ func (x ListUniqueBeaconStateValuesRequest_Field) String() string { } func (ListUniqueBeaconStateValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[0].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[0].Descriptor() } func (ListUniqueBeaconStateValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[0] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[0] } func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -80,7 +81,7 @@ func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconStateValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconStateValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{20, 0} } type ListUniqueBeaconBlockValuesRequest_Field int32 @@ -128,11 +129,11 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[1].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[1].Descriptor() } func (ListUniqueBeaconBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[1] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[1] } func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -141,7 +142,68 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{26, 0} +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest_Field int32 + +const ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_node ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 0 + ListUniqueExecutionPayloadEnvelopeValuesRequest_slot ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 1 + ListUniqueExecutionPayloadEnvelopeValuesRequest_epoch ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 2 + ListUniqueExecutionPayloadEnvelopeValuesRequest_block_root ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 3 + ListUniqueExecutionPayloadEnvelopeValuesRequest_node_version ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 4 + ListUniqueExecutionPayloadEnvelopeValuesRequest_network ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 5 + ListUniqueExecutionPayloadEnvelopeValuesRequest_beacon_implementation ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 6 +) + +// Enum value maps for ListUniqueExecutionPayloadEnvelopeValuesRequest_Field. +var ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_name = map[int32]string{ + 0: "node", + 1: "slot", + 2: "epoch", + 3: "block_root", + 4: "node_version", + 5: "network", + 6: "beacon_implementation", + } + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_value = map[string]int32{ + "node": 0, + "slot": 1, + "epoch": 2, + "block_root": 3, + "node_version": 4, + "network": 5, + "beacon_implementation": 6, + } +) + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Enum() *ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + p := new(ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) + *p = x + return p +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_proto_tracoor_api_api_proto_enumTypes[2].Descriptor() +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Type() protoreflect.EnumType { + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[2] +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest_Field.Descriptor instead. +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) EnumDescriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{32, 0} } type ListUniqueBeaconBadBlockValuesRequest_Field int32 @@ -189,11 +251,11 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[2].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[3].Descriptor() } func (ListUniqueBeaconBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[2] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[3] } func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -202,7 +264,7 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumN // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{38, 0} } type ListUniqueBeaconBadBlobValuesRequest_Field int32 @@ -253,11 +315,11 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlobValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[3].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[4].Descriptor() } func (ListUniqueBeaconBadBlobValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[3] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[4] } func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -266,7 +328,7 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNu // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlobValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{37, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{44, 0} } type ListUniqueExecutionBlockTraceValuesRequest_Field int32 @@ -311,11 +373,11 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) String() string { } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[4].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[5].Descriptor() } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[4] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[5] } func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -324,7 +386,7 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect. // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBlockTraceValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{43, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{50, 0} } type ListUniqueExecutionBadBlockValuesRequest_Field int32 @@ -372,11 +434,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) String() string { } func (ListUniqueExecutionBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[5].Descriptor() + return file_pkg_proto_tracoor_api_api_proto_enumTypes[6].Descriptor() } func (ListUniqueExecutionBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[5] + return &file_pkg_proto_tracoor_api_api_proto_enumTypes[6] } func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -385,14 +447,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.En // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{49, 0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{56, 0} } type BeaconState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -402,15 +461,15 @@ type BeaconState struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconState) Reset() { *x = BeaconState{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconState) String() string { @@ -420,8 +479,8 @@ func (x *BeaconState) String() string { func (*BeaconState) ProtoMessage() {} func (x *BeaconState) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[0] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -433,7 +492,7 @@ func (x *BeaconState) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconState.ProtoReflect.Descriptor instead. func (*BeaconState) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{0} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{0} } func (x *BeaconState) GetId() *wrapperspb.StringValue { @@ -500,10 +559,7 @@ func (x *BeaconState) GetBeaconImplementation() *wrapperspb.StringValue { } type BeaconBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -513,15 +569,15 @@ type BeaconBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBlock) Reset() { *x = BeaconBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBlock) String() string { @@ -531,8 +587,8 @@ func (x *BeaconBlock) String() string { func (*BeaconBlock) ProtoMessage() {} func (x *BeaconBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -544,7 +600,7 @@ func (x *BeaconBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlock.ProtoReflect.Descriptor instead. func (*BeaconBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{1} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{1} } func (x *BeaconBlock) GetId() *wrapperspb.StringValue { @@ -610,11 +666,116 @@ func (x *BeaconBlock) GetBeaconImplementation() *wrapperspb.StringValue { return nil } -type BeaconBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{2} +} + +func (x *ExecutionPayloadEnvelope) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} +type BeaconBadBlock struct { + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -624,15 +785,15 @@ type BeaconBadBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,proto3" json:"node_version,omitempty"` Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlock) Reset() { *x = BeaconBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlock) String() string { @@ -642,8 +803,8 @@ func (x *BeaconBadBlock) String() string { func (*BeaconBadBlock) ProtoMessage() {} func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -655,7 +816,7 @@ func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlock.ProtoReflect.Descriptor instead. func (*BeaconBadBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{2} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{3} } func (x *BeaconBadBlock) GetId() *wrapperspb.StringValue { @@ -722,10 +883,7 @@ func (x *BeaconBadBlock) GetBeaconImplementation() *wrapperspb.StringValue { } type BeaconBadBlob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -736,15 +894,15 @@ type BeaconBadBlob struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlob) Reset() { *x = BeaconBadBlob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlob) String() string { @@ -754,8 +912,8 @@ func (x *BeaconBadBlob) String() string { func (*BeaconBadBlob) ProtoMessage() {} func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -767,7 +925,7 @@ func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlob.ProtoReflect.Descriptor instead. func (*BeaconBadBlob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{3} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{4} } func (x *BeaconBadBlob) GetId() *wrapperspb.StringValue { @@ -841,10 +999,7 @@ func (x *BeaconBadBlob) GetIndex() *wrapperspb.UInt64Value { } type ExecutionBlockTrace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -853,15 +1008,15 @@ type ExecutionBlockTrace struct { Network *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBlockTrace) Reset() { *x = ExecutionBlockTrace{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBlockTrace) String() string { @@ -871,8 +1026,8 @@ func (x *ExecutionBlockTrace) String() string { func (*ExecutionBlockTrace) ProtoMessage() {} func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -884,7 +1039,7 @@ func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBlockTrace.ProtoReflect.Descriptor instead. func (*ExecutionBlockTrace) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{4} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{5} } func (x *ExecutionBlockTrace) GetId() *wrapperspb.StringValue { @@ -944,10 +1099,7 @@ func (x *ExecutionBlockTrace) GetNodeVersion() *wrapperspb.StringValue { } type ExecutionBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,proto3" json:"fetched_at,omitempty"` @@ -957,15 +1109,15 @@ type ExecutionBadBlock struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBadBlock) Reset() { *x = ExecutionBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBadBlock) String() string { @@ -975,8 +1127,8 @@ func (x *ExecutionBadBlock) String() string { func (*ExecutionBadBlock) ProtoMessage() {} func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -988,7 +1140,7 @@ func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBadBlock.ProtoReflect.Descriptor instead. func (*ExecutionBadBlock) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{5} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{6} } func (x *ExecutionBadBlock) GetId() *wrapperspb.StringValue { @@ -1055,22 +1207,19 @@ func (x *ExecutionBadBlock) GetBlockExtraData() *wrapperspb.StringValue { } type PaginationCursor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PaginationCursor) Reset() { *x = PaginationCursor{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PaginationCursor) String() string { @@ -1080,8 +1229,8 @@ func (x *PaginationCursor) String() string { func (*PaginationCursor) ProtoMessage() {} func (x *PaginationCursor) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1093,7 +1242,7 @@ func (x *PaginationCursor) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationCursor.ProtoReflect.Descriptor instead. func (*PaginationCursor) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{6} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{7} } func (x *PaginationCursor) GetLimit() int32 { @@ -1118,18 +1267,16 @@ func (x *PaginationCursor) GetOrderBy() string { } type GetConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigRequest) String() string { @@ -1139,8 +1286,8 @@ func (x *GetConfigRequest) String() string { func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1152,24 +1299,21 @@ func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{7} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{8} } type GetConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigResponse) String() string { @@ -1179,8 +1323,8 @@ func (x *GetConfigResponse) String() string { func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1192,7 +1336,7 @@ func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{8} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{9} } func (x *GetConfigResponse) GetConfig() *Config { @@ -1203,20 +1347,17 @@ func (x *GetConfigResponse) GetConfig() *Config { } type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` unknownFields protoimpl.UnknownFields - - Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -1226,8 +1367,8 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1239,7 +1380,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{10} } func (x *Config) GetEthereum() *EthereumConfig { @@ -1250,21 +1391,18 @@ func (x *Config) GetEthereum() *EthereumConfig { } type EthereumConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *EthereumNetworkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Tools *ToolsConfig `protobuf:"bytes,2,opt,name=tools,proto3" json:"tools,omitempty"` unknownFields protoimpl.UnknownFields - - Config *EthereumNetworkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - Tools *ToolsConfig `protobuf:"bytes,2,opt,name=tools,proto3" json:"tools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumConfig) Reset() { *x = EthereumConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumConfig) String() string { @@ -1274,8 +1412,8 @@ func (x *EthereumConfig) String() string { func (*EthereumConfig) ProtoMessage() {} func (x *EthereumConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1287,7 +1425,7 @@ func (x *EthereumConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumConfig.ProtoReflect.Descriptor instead. func (*EthereumConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{11} } func (x *EthereumConfig) GetConfig() *EthereumNetworkConfig { @@ -1305,22 +1443,19 @@ func (x *EthereumConfig) GetTools() *ToolsConfig { } type EthereumNetworkConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumNetworkConfig) Reset() { *x = EthereumNetworkConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumNetworkConfig) String() string { @@ -1330,8 +1465,8 @@ func (x *EthereumNetworkConfig) String() string { func (*EthereumNetworkConfig) ProtoMessage() {} func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1343,7 +1478,7 @@ func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumNetworkConfig.ProtoReflect.Descriptor instead. func (*EthereumNetworkConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{12} } func (x *EthereumNetworkConfig) GetRepository() string { @@ -1368,22 +1503,19 @@ func (x *EthereumNetworkConfig) GetPath() string { } type ToolsConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` + Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` + Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` unknownFields protoimpl.UnknownFields - - Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` - Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` - Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToolsConfig) Reset() { *x = ToolsConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToolsConfig) String() string { @@ -1393,8 +1525,8 @@ func (x *ToolsConfig) String() string { func (*ToolsConfig) ProtoMessage() {} func (x *ToolsConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1406,7 +1538,7 @@ func (x *ToolsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ToolsConfig.ProtoReflect.Descriptor instead. func (*ToolsConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{13} } func (x *ToolsConfig) GetNcli() *GitRepositoryConfig { @@ -1431,21 +1563,18 @@ func (x *ToolsConfig) GetZcli() *ZcliConfig { } type GitRepositoryConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` unknownFields protoimpl.UnknownFields - - Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GitRepositoryConfig) Reset() { *x = GitRepositoryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GitRepositoryConfig) String() string { @@ -1455,8 +1584,8 @@ func (x *GitRepositoryConfig) String() string { func (*GitRepositoryConfig) ProtoMessage() {} func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1468,7 +1597,7 @@ func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRepositoryConfig.ProtoReflect.Descriptor instead. func (*GitRepositoryConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{14} } func (x *GitRepositoryConfig) GetRepository() string { @@ -1486,20 +1615,17 @@ func (x *GitRepositoryConfig) GetBranch() string { } type ZcliConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fork string `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` unknownFields protoimpl.UnknownFields - - Fork string `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ZcliConfig) Reset() { *x = ZcliConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ZcliConfig) String() string { @@ -1509,8 +1635,8 @@ func (x *ZcliConfig) String() string { func (*ZcliConfig) ProtoMessage() {} func (x *ZcliConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1522,7 +1648,7 @@ func (x *ZcliConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ZcliConfig.ProtoReflect.Descriptor instead. func (*ZcliConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{14} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{15} } func (x *ZcliConfig) GetFork() string { @@ -1533,10 +1659,7 @@ func (x *ZcliConfig) GetFork() string { } type ListBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -1548,15 +1671,15 @@ type ListBeaconStateRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateRequest) Reset() { *x = ListBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateRequest) String() string { @@ -1566,8 +1689,8 @@ func (x *ListBeaconStateRequest) String() string { func (*ListBeaconStateRequest) ProtoMessage() {} func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1579,7 +1702,7 @@ func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateRequest.ProtoReflect.Descriptor instead. func (*ListBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{15} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{16} } func (x *ListBeaconStateRequest) GetNode() string { @@ -1660,20 +1783,17 @@ func (x *ListBeaconStateRequest) GetId() string { } type ListBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,proto3" json:"beacon_states,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,proto3" json:"beacon_states,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateResponse) Reset() { *x = ListBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateResponse) String() string { @@ -1683,8 +1803,8 @@ func (x *ListBeaconStateResponse) String() string { func (*ListBeaconStateResponse) ProtoMessage() {} func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1696,7 +1816,7 @@ func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateResponse.ProtoReflect.Descriptor instead. func (*ListBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{16} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{17} } func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { @@ -1707,10 +1827,7 @@ func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { } type CountBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -1720,15 +1837,15 @@ type CountBeaconStateRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateRequest) Reset() { *x = CountBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateRequest) String() string { @@ -1738,8 +1855,8 @@ func (x *CountBeaconStateRequest) String() string { func (*CountBeaconStateRequest) ProtoMessage() {} func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1751,7 +1868,7 @@ func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CountBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{17} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{18} } func (x *CountBeaconStateRequest) GetNode() string { @@ -1818,20 +1935,17 @@ func (x *CountBeaconStateRequest) GetAfter() *timestamppb.Timestamp { } type CountBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateResponse) Reset() { *x = CountBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateResponse) String() string { @@ -1841,8 +1955,8 @@ func (x *CountBeaconStateResponse) String() string { func (*CountBeaconStateResponse) ProtoMessage() {} func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1854,7 +1968,7 @@ func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CountBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{18} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{19} } func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { @@ -1865,20 +1979,17 @@ func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconStateValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesRequest) Reset() { *x = ListUniqueBeaconStateValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesRequest) String() string { @@ -1888,8 +1999,8 @@ func (x *ListUniqueBeaconStateValuesRequest) String() string { func (*ListUniqueBeaconStateValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1901,7 +2012,7 @@ func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconStateValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{20} } func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconStateValuesRequest_Field { @@ -1912,26 +2023,23 @@ func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconState } type ListUniqueBeaconStateValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - StateRoot []string `protobuf:"bytes,4,rep,name=state_root,proto3" json:"state_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + StateRoot []string `protobuf:"bytes,4,rep,name=state_root,proto3" json:"state_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesResponse) Reset() { *x = ListUniqueBeaconStateValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesResponse) String() string { @@ -1941,8 +2049,8 @@ func (x *ListUniqueBeaconStateValuesResponse) String() string { func (*ListUniqueBeaconStateValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1954,7 +2062,7 @@ func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconStateValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{20} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{21} } func (x *ListUniqueBeaconStateValuesResponse) GetNode() []string { @@ -2007,10 +2115,7 @@ func (x *ListUniqueBeaconStateValuesResponse) GetBeaconImplementation() []string } type ListBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2022,15 +2127,15 @@ type ListBeaconBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockRequest) Reset() { *x = ListBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockRequest) String() string { @@ -2040,8 +2145,8 @@ func (x *ListBeaconBlockRequest) String() string { func (*ListBeaconBlockRequest) ProtoMessage() {} func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2053,7 +2158,7 @@ func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{21} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{22} } func (x *ListBeaconBlockRequest) GetNode() string { @@ -2134,20 +2239,17 @@ func (x *ListBeaconBlockRequest) GetId() string { } type ListBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,proto3" json:"beacon_blocks,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,proto3" json:"beacon_blocks,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockResponse) Reset() { *x = ListBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockResponse) String() string { @@ -2157,8 +2259,8 @@ func (x *ListBeaconBlockResponse) String() string { func (*ListBeaconBlockResponse) ProtoMessage() {} func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2170,7 +2272,7 @@ func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{22} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{23} } func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { @@ -2181,10 +2283,7 @@ func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { } type CountBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2194,15 +2293,15 @@ type CountBeaconBlockRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockRequest) Reset() { *x = CountBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockRequest) String() string { @@ -2212,8 +2311,8 @@ func (x *CountBeaconBlockRequest) String() string { func (*CountBeaconBlockRequest) ProtoMessage() {} func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2225,7 +2324,7 @@ func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{23} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{24} } func (x *CountBeaconBlockRequest) GetNode() string { @@ -2235,88 +2334,541 @@ func (x *CountBeaconBlockRequest) GetNode() string { return "" } -func (x *CountBeaconBlockRequest) GetSlot() uint64 { +func (x *CountBeaconBlockRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *CountBeaconBlockRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *CountBeaconBlockRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *CountBeaconBlockRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *CountBeaconBlockRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *CountBeaconBlockRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *CountBeaconBlockRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *CountBeaconBlockRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +type CountBeaconBlockResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountBeaconBlockResponse) Reset() { + *x = CountBeaconBlockResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountBeaconBlockResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountBeaconBlockResponse) ProtoMessage() {} + +func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CountBeaconBlockResponse.ProtoReflect.Descriptor instead. +func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{25} +} + +func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { + if x != nil { + return x.Count + } + return nil +} + +type ListUniqueBeaconBlockValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueBeaconBlockValuesRequest) Reset() { + *x = ListUniqueBeaconBlockValuesRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBlockValuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} + +func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{26} +} + +func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { + if x != nil { + return x.Fields + } + return nil +} + +type ListUniqueBeaconBlockValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueBeaconBlockValuesResponse) Reset() { + *x = ListUniqueBeaconBlockValuesResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBlockValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} + +func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{27} +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network string `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` + Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` + BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeRequest) Reset() { + *x = ListExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{28} +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetPagination() *PaginationCursor { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type ListExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope `protobuf:"bytes,1,rep,name=execution_payload_envelopes,proto3" json:"execution_payload_envelopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeResponse) Reset() { + *x = ListExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{29} +} + +func (x *ListExecutionPayloadEnvelopeResponse) GetExecutionPayloadEnvelopes() []*ExecutionPayloadEnvelope { + if x != nil { + return x.ExecutionPayloadEnvelopes + } + return nil +} + +type CountExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,proto3" json:"node_version,omitempty"` + Network string `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountExecutionPayloadEnvelopeRequest) Reset() { + *x = CountExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *CountExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CountExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{30} +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetSlot() uint64 { if x != nil { return x.Slot } return 0 } -func (x *CountBeaconBlockRequest) GetEpoch() uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { if x != nil { return x.Epoch } return 0 } -func (x *CountBeaconBlockRequest) GetBlockRoot() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBlockRoot() string { if x != nil { return x.BlockRoot } return "" } -func (x *CountBeaconBlockRequest) GetNodeVersion() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNodeVersion() string { if x != nil { return x.NodeVersion } return "" } -func (x *CountBeaconBlockRequest) GetNetwork() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNetwork() string { if x != nil { return x.Network } return "" } -func (x *CountBeaconBlockRequest) GetBeaconImplementation() string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { if x != nil { return x.BeaconImplementation } return "" } -func (x *CountBeaconBlockRequest) GetBefore() *timestamppb.Timestamp { +func (x *CountExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { if x != nil { return x.Before } return nil } -func (x *CountBeaconBlockRequest) GetAfter() *timestamppb.Timestamp { +func (x *CountExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { if x != nil { return x.After } return nil } -type CountBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type CountExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *CountBeaconBlockResponse) Reset() { - *x = CountBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *CountExecutionPayloadEnvelopeResponse) Reset() { + *x = CountExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *CountBeaconBlockResponse) String() string { +func (x *CountExecutionPayloadEnvelopeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CountBeaconBlockResponse) ProtoMessage() {} +func (*CountExecutionPayloadEnvelopeResponse) ProtoMessage() {} -func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CountExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2326,44 +2878,41 @@ func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CountBeaconBlockResponse.ProtoReflect.Descriptor instead. -func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24} +// Deprecated: Use CountExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{31} } -func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { +func (x *CountExecutionPayloadEnvelopeResponse) GetCount() *wrapperspb.UInt64Value { if x != nil { return x.Count } return nil } -type ListUniqueBeaconBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type ListUniqueExecutionPayloadEnvelopeValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBlockValuesRequest) Reset() { - *x = ListUniqueBeaconBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesRequest{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListUniqueBeaconBlockValuesRequest) String() string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoMessage() {} -func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2373,50 +2922,47 @@ func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25} +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{32} } -func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) GetFields() []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { if x != nil { return x.Fields } return nil } -type ListUniqueBeaconBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` +type ListUniqueExecutionPayloadEnvelopeValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBlockValuesResponse) Reset() { - *x = ListUniqueBeaconBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesResponse{} + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListUniqueBeaconBlockValuesResponse) String() string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoMessage() {} -func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2426,54 +2972,54 @@ func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{26} +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{33} } -func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNode() []string { if x != nil { return x.Node } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetSlot() []uint64 { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetSlot() []uint64 { if x != nil { return x.Slot } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetEpoch() []uint64 { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetEpoch() []uint64 { if x != nil { return x.Epoch } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetBlockRoot() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBlockRoot() []string { if x != nil { return x.BlockRoot } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetNodeVersion() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNodeVersion() []string { if x != nil { return x.NodeVersion } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetNetwork() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNetwork() []string { if x != nil { return x.Network } return nil } -func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string { +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBeaconImplementation() []string { if x != nil { return x.BeaconImplementation } @@ -2481,10 +3027,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string } type ListBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2496,15 +3039,15 @@ type ListBeaconBadBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockRequest) Reset() { *x = ListBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockRequest) String() string { @@ -2514,8 +3057,8 @@ func (x *ListBeaconBadBlockRequest) String() string { func (*ListBeaconBadBlockRequest) ProtoMessage() {} func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2527,7 +3070,7 @@ func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{27} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{34} } func (x *ListBeaconBadBlockRequest) GetNode() string { @@ -2608,20 +3151,17 @@ func (x *ListBeaconBadBlockRequest) GetId() string { } type ListBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,proto3" json:"beacon_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,proto3" json:"beacon_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockResponse) Reset() { *x = ListBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockResponse) String() string { @@ -2631,8 +3171,8 @@ func (x *ListBeaconBadBlockResponse) String() string { func (*ListBeaconBadBlockResponse) ProtoMessage() {} func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2644,7 +3184,7 @@ func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{28} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{35} } func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { @@ -2655,10 +3195,7 @@ func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { } type CountBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2668,15 +3205,15 @@ type CountBeaconBadBlockRequest struct { BeaconImplementation string `protobuf:"bytes,7,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockRequest) Reset() { *x = CountBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockRequest) String() string { @@ -2686,8 +3223,8 @@ func (x *CountBeaconBadBlockRequest) String() string { func (*CountBeaconBadBlockRequest) ProtoMessage() {} func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2699,7 +3236,7 @@ func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{29} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{36} } func (x *CountBeaconBadBlockRequest) GetNode() string { @@ -2766,20 +3303,17 @@ func (x *CountBeaconBadBlockRequest) GetAfter() *timestamppb.Timestamp { } type CountBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockResponse) Reset() { *x = CountBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockResponse) String() string { @@ -2789,8 +3323,8 @@ func (x *CountBeaconBadBlockResponse) String() string { func (*CountBeaconBadBlockResponse) ProtoMessage() {} func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2802,7 +3336,7 @@ func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{30} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{37} } func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -2813,20 +3347,17 @@ func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesRequest) Reset() { *x = ListUniqueBeaconBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { @@ -2836,8 +3367,8 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { func (*ListUniqueBeaconBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2849,7 +3380,7 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{38} } func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBadBlockValuesRequest_Field { @@ -2860,26 +3391,23 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBa } type ListUniqueBeaconBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesResponse) Reset() { *x = ListUniqueBeaconBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { @@ -2889,8 +3417,8 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2902,7 +3430,7 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{32} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{39} } func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { @@ -2955,10 +3483,7 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []str } type ListBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -2971,15 +3496,15 @@ type ListBeaconBadBlobRequest struct { BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,12,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobRequest) Reset() { *x = ListBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobRequest) String() string { @@ -2989,8 +3514,8 @@ func (x *ListBeaconBadBlobRequest) String() string { func (*ListBeaconBadBlobRequest) ProtoMessage() {} func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3002,7 +3527,7 @@ func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{33} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{40} } func (x *ListBeaconBadBlobRequest) GetNode() string { @@ -3090,20 +3615,17 @@ func (x *ListBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type ListBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,proto3" json:"beacon_bad_blobs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,proto3" json:"beacon_bad_blobs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobResponse) Reset() { *x = ListBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobResponse) String() string { @@ -3113,8 +3635,8 @@ func (x *ListBeaconBadBlobResponse) String() string { func (*ListBeaconBadBlobResponse) ProtoMessage() {} func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3126,7 +3648,7 @@ func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{34} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{41} } func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { @@ -3137,10 +3659,7 @@ func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { } type CountBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3151,15 +3670,15 @@ type CountBeaconBadBlobRequest struct { Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobRequest) Reset() { *x = CountBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobRequest) String() string { @@ -3169,8 +3688,8 @@ func (x *CountBeaconBadBlobRequest) String() string { func (*CountBeaconBadBlobRequest) ProtoMessage() {} func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3182,7 +3701,7 @@ func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{35} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{42} } func (x *CountBeaconBadBlobRequest) GetNode() string { @@ -3256,20 +3775,17 @@ func (x *CountBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type CountBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobResponse) Reset() { *x = CountBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobResponse) String() string { @@ -3279,8 +3795,8 @@ func (x *CountBeaconBadBlobResponse) String() string { func (*CountBeaconBadBlobResponse) ProtoMessage() {} func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3292,7 +3808,7 @@ func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{36} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{43} } func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { @@ -3303,20 +3819,17 @@ func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlobValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesRequest) Reset() { *x = ListUniqueBeaconBadBlobValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { @@ -3326,8 +3839,8 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { func (*ListUniqueBeaconBadBlobValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3339,7 +3852,7 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{37} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{44} } func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBadBlobValuesRequest_Field { @@ -3350,27 +3863,24 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBad } type ListUniqueBeaconBadBlobValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` - Index []uint64 `protobuf:"varint,8,rep,packed,name=index,proto3" json:"index,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + Network []string `protobuf:"bytes,6,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,7,rep,name=beacon_implementation,proto3" json:"beacon_implementation,omitempty"` + Index []uint64 `protobuf:"varint,8,rep,packed,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesResponse) Reset() { *x = ListUniqueBeaconBadBlobValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { @@ -3380,8 +3890,8 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { func (*ListUniqueBeaconBadBlobValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3393,7 +3903,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlobValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{38} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{45} } func (x *ListUniqueBeaconBadBlobValuesResponse) GetNode() []string { @@ -3453,10 +3963,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) GetIndex() []uint64 { } type ListExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` @@ -3467,15 +3974,15 @@ type ListExecutionBlockTraceRequest struct { Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceRequest) Reset() { *x = ListExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceRequest) String() string { @@ -3485,8 +3992,8 @@ func (x *ListExecutionBlockTraceRequest) String() string { func (*ListExecutionBlockTraceRequest) ProtoMessage() {} func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3498,7 +4005,7 @@ func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{39} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{46} } func (x *ListExecutionBlockTraceRequest) GetNode() string { @@ -3572,20 +4079,17 @@ func (x *ListExecutionBlockTraceRequest) GetNodeVersion() string { } type ListExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ExecutionBlockTraces []*ExecutionBlockTrace `protobuf:"bytes,1,rep,name=execution_block_traces,proto3" json:"execution_block_traces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceResponse) Reset() { *x = ListExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceResponse) String() string { @@ -3595,8 +4099,8 @@ func (x *ListExecutionBlockTraceResponse) String() string { func (*ListExecutionBlockTraceResponse) ProtoMessage() {} func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3608,7 +4112,7 @@ func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{40} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{47} } func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*ExecutionBlockTrace { @@ -3619,10 +4123,7 @@ func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*Execution } type CountExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -3631,15 +4132,15 @@ type CountExecutionBlockTraceRequest struct { Before *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=before,proto3" json:"before,omitempty"` After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceRequest) Reset() { *x = CountExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceRequest) String() string { @@ -3649,8 +4150,8 @@ func (x *CountExecutionBlockTraceRequest) String() string { func (*CountExecutionBlockTraceRequest) ProtoMessage() {} func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3662,7 +4163,7 @@ func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{41} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{48} } func (x *CountExecutionBlockTraceRequest) GetNode() string { @@ -3722,20 +4223,17 @@ func (x *CountExecutionBlockTraceRequest) GetNodeVersion() string { } type CountExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceResponse) Reset() { *x = CountExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceResponse) String() string { @@ -3745,8 +4243,8 @@ func (x *CountExecutionBlockTraceResponse) String() string { func (*CountExecutionBlockTraceResponse) ProtoMessage() {} func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3758,7 +4256,7 @@ func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{42} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{49} } func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { @@ -3769,20 +4267,17 @@ func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBlockTraceValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesRequest) Reset() { *x = ListUniqueExecutionBlockTraceValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { @@ -3792,8 +4287,8 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { func (*ListUniqueExecutionBlockTraceValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[50] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3805,7 +4300,7 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{43} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{50} } func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExecutionBlockTraceValuesRequest_Field { @@ -3816,25 +4311,22 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExe } type ListUniqueExecutionBlockTraceValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` - Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` + Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesResponse) Reset() { *x = ListUniqueExecutionBlockTraceValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { @@ -3844,8 +4336,8 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { func (*ListUniqueExecutionBlockTraceValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3857,7 +4349,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflec // Deprecated: Use ListUniqueExecutionBlockTraceValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{44} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{51} } func (x *ListUniqueExecutionBlockTraceValuesResponse) GetNode() []string { @@ -3903,10 +4395,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) GetExecutionImplementation } type ListExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,proto3" json:"block_hash,omitempty"` @@ -3918,15 +4407,15 @@ type ListExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,12,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockRequest) Reset() { *x = ListExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockRequest) String() string { @@ -3936,8 +4425,8 @@ func (x *ListExecutionBadBlockRequest) String() string { func (*ListExecutionBadBlockRequest) ProtoMessage() {} func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3949,7 +4438,7 @@ func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{45} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{52} } func (x *ListExecutionBadBlockRequest) GetNode() string { @@ -4030,20 +4519,17 @@ func (x *ListExecutionBadBlockRequest) GetBlockExtraData() string { } type ListExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,proto3" json:"execution_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,proto3" json:"execution_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockResponse) Reset() { *x = ListExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockResponse) String() string { @@ -4053,8 +4539,8 @@ func (x *ListExecutionBadBlockResponse) String() string { func (*ListExecutionBadBlockResponse) ProtoMessage() {} func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4066,7 +4552,7 @@ func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{46} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{53} } func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadBlock { @@ -4077,10 +4563,7 @@ func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadB } type CountExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -4090,15 +4573,15 @@ type CountExecutionBadBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=after,proto3" json:"after,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,10,opt,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockRequest) Reset() { *x = CountExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockRequest) String() string { @@ -4108,8 +4591,8 @@ func (x *CountExecutionBadBlockRequest) String() string { func (*CountExecutionBadBlockRequest) ProtoMessage() {} func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[54] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4121,7 +4604,7 @@ func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{47} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{54} } func (x *CountExecutionBadBlockRequest) GetNode() string { @@ -4188,20 +4671,17 @@ func (x *CountExecutionBadBlockRequest) GetBlockExtraData() string { } type CountExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockResponse) Reset() { *x = CountExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockResponse) String() string { @@ -4211,8 +4691,8 @@ func (x *CountExecutionBadBlockResponse) String() string { func (*CountExecutionBadBlockResponse) ProtoMessage() {} func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4224,7 +4704,7 @@ func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{48} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{55} } func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4235,20 +4715,17 @@ func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=api.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesRequest) Reset() { *x = ListUniqueExecutionBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { @@ -4258,8 +4735,8 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { func (*ListUniqueExecutionBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4271,7 +4748,7 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.M // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{49} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{56} } func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecutionBadBlockValuesRequest_Field { @@ -4282,26 +4759,23 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecu } type ListUniqueExecutionBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` - Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` - BlockExtraData []string `protobuf:"bytes,7,rep,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,proto3" json:"block_number,omitempty"` + Network []string `protobuf:"bytes,4,rep,name=network,proto3" json:"network,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,proto3" json:"node_version,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,proto3" json:"execution_implementation,omitempty"` + BlockExtraData []string `protobuf:"bytes,7,rep,name=block_extra_data,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesResponse) Reset() { *x = ListUniqueExecutionBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { @@ -4311,8 +4785,8 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { func (*ListUniqueExecutionBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_api_api_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4324,7 +4798,7 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect. // Deprecated: Use ListUniqueExecutionBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{50} + return file_pkg_proto_tracoor_api_api_proto_rawDescGZIP(), []int{57} } func (x *ListUniqueExecutionBadBlockValuesResponse) GetNode() []string { @@ -4376,1813 +4850,828 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) GetBlockExtraData() []string return nil } -var File_api_api_proto protoreflect.FileDescriptor - -var file_api_api_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x03, 0x61, 0x70, 0x69, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x04, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x52, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, - 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, 0x0a, - 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x9e, 0x04, 0x0a, 0x0e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xd1, 0x04, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x52, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x84, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x3a, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3f, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x58, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcc, 0x04, - 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, - 0x3c, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3f, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x58, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5b, 0x0a, 0x10, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x39, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2f, 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x05, 0x74, 0x6f, 0x6f, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x6f, - 0x6f, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, - 0x22, 0x63, 0x0a, 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x8e, 0x01, 0x0a, 0x0b, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x63, 0x6c, 0x69, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, - 0x63, 0x6c, 0x69, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x63, 0x6c, - 0x69, 0x12, 0x23, 0x0a, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x22, 0x4d, 0x0a, 0x13, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, - 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x20, 0x0a, 0x0a, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x22, 0x97, 0x03, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x45, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, - 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, - 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, - 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x22, 0xf7, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x97, 0x03, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, - 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, - 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0xd1, 0x02, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, 0x12, 0x09, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x10, 0x06, 0x22, 0xf7, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x03, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5f, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xd4, 0x02, 0x0a, 0x1a, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x22, 0x51, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe3, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x48, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, - 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x22, 0xfa, 0x01, 0x0a, 0x26, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x03, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, - 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x22, 0x87, 0x03, 0x0a, 0x19, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, - 0x50, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xec, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x22, 0x7b, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x10, 0x01, - 0x12, 0x09, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x0b, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x10, 0x07, - 0x22, 0x8f, 0x02, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x9f, 0x03, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0xd8, 0x02, 0x0a, 0x1f, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3a, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, - 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, - 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x20, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xed, 0x01, 0x0a, - 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x70, 0x0a, 0x05, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x04, 0x12, 0x1c, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x05, 0x22, 0xff, 0x01, 0x0a, - 0x2b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x22, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, - 0x03, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, - 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x0a, 0x1d, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x82, 0x03, 0x0a, 0x1d, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x86, 0x01, 0x0a, - 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x10, 0x00, - 0x12, 0x0e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x10, 0x01, - 0x12, 0x10, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x03, 0x12, - 0x10, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, - 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x05, 0x12, - 0x14, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x10, 0x06, 0x22, 0xa9, 0x02, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x32, 0xfa, 0x0e, 0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x3c, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, - 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x13, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, - 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, - 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x66, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x60, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x63, 0x0a, 0x16, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x36, - 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, - 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, 0x6f, 0x72, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, - 0x6f, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +var File_pkg_proto_tracoor_api_api_proto protoreflect.FileDescriptor + +const file_pkg_proto_tracoor_api_api_proto_rawDesc = "" + + "\n" + + "\x1fpkg/proto/tracoor/api/api.proto\x12\x03api\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9b\x04\n" + + "\vBeaconState\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "state_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "state_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\x9b\x04\n" + + "\vBeaconBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\xa8\x04\n" + + "\x18ExecutionPayloadEnvelope\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\x9e\x04\n" + + "\x0eBeaconBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\"\xd1\x04\n" + + "\rBeaconBadBlob\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12<\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_root\x12@\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12R\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x15beacon_implementation\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"\x84\x04\n" + + "\x13ExecutionBlockTrace\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x12<\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_hash\x12?\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\fblock_number\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12X\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x18execution_implementation\x12@\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\"\xcc\x04\n" + + "\x11ExecutionBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x12:\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "fetched_at\x12<\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "block_hash\x12?\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\fblock_number\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12X\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x18execution_implementation\x12@\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\fnode_version\x12H\n" + + "\x10block_extra_data\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x10block_extra_data\"[\n" + + "\x10PaginationCursor\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x19\n" + + "\border_by\x18\x03 \x01(\tR\aorderBy\"\x12\n" + + "\x10GetConfigRequest\"8\n" + + "\x11GetConfigResponse\x12#\n" + + "\x06config\x18\x01 \x01(\v2\v.api.ConfigR\x06config\"9\n" + + "\x06Config\x12/\n" + + "\bethereum\x18\x01 \x01(\v2\x13.api.EthereumConfigR\bethereum\"l\n" + + "\x0eEthereumConfig\x122\n" + + "\x06config\x18\x01 \x01(\v2\x1a.api.EthereumNetworkConfigR\x06config\x12&\n" + + "\x05tools\x18\x02 \x01(\v2\x10.api.ToolsConfigR\x05tools\"c\n" + + "\x15EthereumNetworkConfig\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x16\n" + + "\x06branch\x18\x02 \x01(\tR\x06branch\x12\x12\n" + + "\x04path\x18\x03 \x01(\tR\x04path\"\x8e\x01\n" + + "\vToolsConfig\x12,\n" + + "\x04ncli\x18\x01 \x01(\v2\x18.api.GitRepositoryConfigR\x04ncli\x12,\n" + + "\x04lcli\x18\x02 \x01(\v2\x18.api.GitRepositoryConfigR\x04lcli\x12#\n" + + "\x04zcli\x18\x03 \x01(\v2\x0f.api.ZcliConfigR\x04zcli\"M\n" + + "\x13GitRepositoryConfig\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x16\n" + + "\x06branch\x18\x02 \x01(\tR\x06branch\" \n" + + "\n" + + "ZcliConfig\x12\x12\n" + + "\x04fork\x18\x01 \x01(\tR\x04fork\"\x97\x03\n" + + "\x16ListBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x17ListBeaconStateResponse\x126\n" + + "\rbeacon_states\x18\x01 \x03(\v2\x10.api.BeaconStateR\rbeacon_states\"\xd1\x02\n" + + "\x17CountBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"N\n" + + "\x18CountBeaconStateResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xdd\x01\n" + + "\"ListUniqueBeaconStateValuesRequest\x12E\n" + + "\x06fields\x18\x01 \x03(\x0e2-.api.ListUniqueBeaconStateValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "state_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xf7\x01\n" + + "#ListUniqueBeaconStateValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "state_root\x18\x04 \x03(\tR\n" + + "state_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\x97\x03\n" + + "\x16ListBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x17ListBeaconBlockResponse\x126\n" + + "\rbeacon_blocks\x18\x01 \x03(\v2\x10.api.BeaconBlockR\rbeacon_blocks\"\xd1\x02\n" + + "\x17CountBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"N\n" + + "\x18CountBeaconBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xdd\x01\n" + + "\"ListUniqueBeaconBlockValuesRequest\x12E\n" + + "\x06fields\x18\x01 \x03(\x0e2-.api.ListUniqueBeaconBlockValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xf7\x01\n" + + "#ListUniqueBeaconBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\xa4\x03\n" + + "#ListExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"\x87\x01\n" + + "$ListExecutionPayloadEnvelopeResponse\x12_\n" + + "\x1bexecution_payload_envelopes\x18\x01 \x03(\v2\x1d.api.ExecutionPayloadEnvelopeR\x1bexecution_payload_envelopes\"\xde\x02\n" + + "$CountExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"[\n" + + "%CountExecutionPayloadEnvelopeResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xf7\x01\n" + + "/ListUniqueExecutionPayloadEnvelopeValuesRequest\x12R\n" + + "\x06fields\x18\x01 \x03(\x0e2:.api.ListUniqueExecutionPayloadEnvelopeValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\x84\x02\n" + + "0ListUniqueExecutionPayloadEnvelopeValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\x9a\x03\n" + + "\x19ListBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"_\n" + + "\x1aListBeaconBadBlockResponse\x12A\n" + + "\x11beacon_bad_blocks\x18\x01 \x03(\v2\x13.api.BeaconBadBlockR\x11beacon_bad_blocks\"\xd4\x02\n" + + "\x1aCountBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\"Q\n" + + "\x1bCountBeaconBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xe3\x01\n" + + "%ListUniqueBeaconBadBlockValuesRequest\x12H\n" + + "\x06fields\x18\x01 \x03(\x0e20.api.ListUniqueBeaconBadBlockValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\"\xfa\x01\n" + + "&ListUniqueBeaconBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\"\xcd\x03\n" + + "\x18ListBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\t \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x124\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x15beacon_implementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x122\n" + + "\x05index\x18\f \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"[\n" + + "\x19ListBeaconBadBlobResponse\x12>\n" + + "\x10beacon_bad_blobs\x18\x01 \x03(\v2\x12.api.BeaconBadBlobR\x10beacon_bad_blobs\"\x87\x03\n" + + "\x19CountBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x01(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x01(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x01(\tR\x15beacon_implementation\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"P\n" + + "\x1aCountBeaconBadBlobResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xec\x01\n" + + "$ListUniqueBeaconBadBlobValuesRequest\x12G\n" + + "\x06fields\x18\x01 \x03(\x0e2/.api.ListUniqueBeaconBadBlobValuesRequest.FieldR\x06fields\"{\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\b\n" + + "\x04slot\x10\x01\x12\t\n" + + "\x05epoch\x10\x02\x12\x0e\n" + + "\n" + + "block_root\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\v\n" + + "\anetwork\x10\x05\x12\x19\n" + + "\x15beacon_implementation\x10\x06\x12\t\n" + + "\x05index\x10\a\"\x8f\x02\n" + + "%ListUniqueBeaconBadBlobValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1e\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\n" + + "block_root\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12\x18\n" + + "\anetwork\x18\x06 \x03(\tR\anetwork\x124\n" + + "\x15beacon_implementation\x18\a \x03(\tR\x15beacon_implementation\x12\x14\n" + + "\x05index\x18\b \x03(\x04R\x05index\"\x9f\x03\n" + + "\x1eListExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1e\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\n" + + "block_hash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\b \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x12:\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x18execution_implementation\x12\"\n" + + "\fnode_version\x18\v \x01(\tR\fnode_version\"s\n" + + "\x1fListExecutionBlockTraceResponse\x12P\n" + + "\x16execution_block_traces\x18\x01 \x03(\v2\x18.api.ExecutionBlockTraceR\x16execution_block_traces\"\xd8\x02\n" + + "\x1fCountExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x12:\n" + + "\x18execution_implementation\x18\x06 \x01(\tR\x18execution_implementation\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x12\"\n" + + "\fnode_version\x18\t \x01(\tR\fnode_version\"V\n" + + " CountExecutionBlockTraceResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xed\x01\n" + + "*ListUniqueExecutionBlockTraceValuesRequest\x12M\n" + + "\x06fields\x18\x01 \x03(\x0e25.api.ListUniqueExecutionBlockTraceValuesRequest.FieldR\x06fields\"p\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\x0e\n" + + "\n" + + "block_hash\x10\x01\x12\x10\n" + + "\fblock_number\x10\x02\x12\v\n" + + "\anetwork\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\x1c\n" + + "\x18execution_implementation\x10\x05\"\xff\x01\n" + + "+ListUniqueExecutionBlockTraceValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1e\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\n" + + "block_hash\x12\"\n" + + "\fblock_number\x18\x03 \x03(\x03R\fblock_number\x12\x18\n" + + "\anetwork\x18\x04 \x03(\tR\anetwork\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12:\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x18execution_implementation\"\xc9\x03\n" + + "\x1cListExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1e\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\n" + + "block_hash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x125\n" + + "\n" + + "pagination\x18\b \x01(\v2\x15.api.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x12:\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x18execution_implementation\x12\"\n" + + "\fnode_version\x18\v \x01(\tR\fnode_version\x12*\n" + + "\x10block_extra_data\x18\f \x01(\tR\x10block_extra_data\"k\n" + + "\x1dListExecutionBadBlockResponse\x12J\n" + + "\x14execution_bad_blocks\x18\x01 \x03(\v2\x16.api.ExecutionBadBlockR\x14execution_bad_blocks\"\x82\x03\n" + + "\x1dCountExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\"\n" + + "\fblock_number\x18\x02 \x01(\x03R\fblock_number\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x12:\n" + + "\x18execution_implementation\x18\x06 \x01(\tR\x18execution_implementation\x122\n" + + "\x06before\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x12\"\n" + + "\fnode_version\x18\t \x01(\tR\fnode_version\x12*\n" + + "\x10block_extra_data\x18\n" + + " \x01(\tR\x10block_extra_data\"T\n" + + "\x1eCountExecutionBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\x80\x02\n" + + "(ListUniqueExecutionBadBlockValuesRequest\x12K\n" + + "\x06fields\x18\x01 \x03(\x0e23.api.ListUniqueExecutionBadBlockValuesRequest.FieldR\x06fields\"\x86\x01\n" + + "\x05Field\x12\b\n" + + "\x04node\x10\x00\x12\x0e\n" + + "\n" + + "block_hash\x10\x01\x12\x10\n" + + "\fblock_number\x10\x02\x12\v\n" + + "\anetwork\x10\x03\x12\x10\n" + + "\fnode_version\x10\x04\x12\x1c\n" + + "\x18execution_implementation\x10\x05\x12\x14\n" + + "\x10block_extra_data\x10\x06\"\xa9\x02\n" + + ")ListUniqueExecutionBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1e\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\n" + + "block_hash\x12\"\n" + + "\fblock_number\x18\x03 \x03(\x03R\fblock_number\x12\x18\n" + + "\anetwork\x18\x04 \x03(\tR\anetwork\x12\"\n" + + "\fnode_version\x18\x05 \x03(\tR\fnode_version\x12:\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x18execution_implementation\x12*\n" + + "\x10block_extra_data\x18\a \x03(\tR\x10block_extra_data2\x87\x12\n" + + "\x03API\x12<\n" + + "\tGetConfig\x12\x15.api.GetConfigRequest\x1a\x16.api.GetConfigResponse\"\x00\x12N\n" + + "\x0fListBeaconState\x12\x1b.api.ListBeaconStateRequest\x1a\x1c.api.ListBeaconStateResponse\"\x00\x12Q\n" + + "\x10CountBeaconState\x12\x1c.api.CountBeaconStateRequest\x1a\x1d.api.CountBeaconStateResponse\"\x00\x12r\n" + + "\x1bListUniqueBeaconStateValues\x12'.api.ListUniqueBeaconStateValuesRequest\x1a(.api.ListUniqueBeaconStateValuesResponse\"\x00\x12N\n" + + "\x0fListBeaconBlock\x12\x1b.api.ListBeaconBlockRequest\x1a\x1c.api.ListBeaconBlockResponse\"\x00\x12Q\n" + + "\x10CountBeaconBlock\x12\x1c.api.CountBeaconBlockRequest\x1a\x1d.api.CountBeaconBlockResponse\"\x00\x12r\n" + + "\x1bListUniqueBeaconBlockValues\x12'.api.ListUniqueBeaconBlockValuesRequest\x1a(.api.ListUniqueBeaconBlockValuesResponse\"\x00\x12u\n" + + "\x1cListExecutionPayloadEnvelope\x12(.api.ListExecutionPayloadEnvelopeRequest\x1a).api.ListExecutionPayloadEnvelopeResponse\"\x00\x12x\n" + + "\x1dCountExecutionPayloadEnvelope\x12).api.CountExecutionPayloadEnvelopeRequest\x1a*.api.CountExecutionPayloadEnvelopeResponse\"\x00\x12\x99\x01\n" + + "(ListUniqueExecutionPayloadEnvelopeValues\x124.api.ListUniqueExecutionPayloadEnvelopeValuesRequest\x1a5.api.ListUniqueExecutionPayloadEnvelopeValuesResponse\"\x00\x12W\n" + + "\x12ListBeaconBadBlock\x12\x1e.api.ListBeaconBadBlockRequest\x1a\x1f.api.ListBeaconBadBlockResponse\"\x00\x12Z\n" + + "\x13CountBeaconBadBlock\x12\x1f.api.CountBeaconBadBlockRequest\x1a .api.CountBeaconBadBlockResponse\"\x00\x12{\n" + + "\x1eListUniqueBeaconBadBlockValues\x12*.api.ListUniqueBeaconBadBlockValuesRequest\x1a+.api.ListUniqueBeaconBadBlockValuesResponse\"\x00\x12T\n" + + "\x11ListBeaconBadBlob\x12\x1d.api.ListBeaconBadBlobRequest\x1a\x1e.api.ListBeaconBadBlobResponse\"\x00\x12W\n" + + "\x12CountBeaconBadBlob\x12\x1e.api.CountBeaconBadBlobRequest\x1a\x1f.api.CountBeaconBadBlobResponse\"\x00\x12x\n" + + "\x1dListUniqueBeaconBadBlobValues\x12).api.ListUniqueBeaconBadBlobValuesRequest\x1a*.api.ListUniqueBeaconBadBlobValuesResponse\"\x00\x12f\n" + + "\x17ListExecutionBlockTrace\x12#.api.ListExecutionBlockTraceRequest\x1a$.api.ListExecutionBlockTraceResponse\"\x00\x12i\n" + + "\x18CountExecutionBlockTrace\x12$.api.CountExecutionBlockTraceRequest\x1a%.api.CountExecutionBlockTraceResponse\"\x00\x12\x8a\x01\n" + + "#ListUniqueExecutionBlockTraceValues\x12/.api.ListUniqueExecutionBlockTraceValuesRequest\x1a0.api.ListUniqueExecutionBlockTraceValuesResponse\"\x00\x12`\n" + + "\x15ListExecutionBadBlock\x12!.api.ListExecutionBadBlockRequest\x1a\".api.ListExecutionBadBlockResponse\"\x00\x12c\n" + + "\x16CountExecutionBadBlock\x12\".api.CountExecutionBadBlockRequest\x1a#.api.CountExecutionBadBlockResponse\"\x00\x12\x84\x01\n" + + "!ListUniqueExecutionBadBlockValues\x12-.api.ListUniqueExecutionBadBlockValuesRequest\x1a..api.ListUniqueExecutionBadBlockValuesResponse\"\x00B6Z4github.com/ethpandaops/tracoor/pkg/proto/tracoor/apib\x06proto3" var ( - file_api_api_proto_rawDescOnce sync.Once - file_api_api_proto_rawDescData = file_api_api_proto_rawDesc + file_pkg_proto_tracoor_api_api_proto_rawDescOnce sync.Once + file_pkg_proto_tracoor_api_api_proto_rawDescData []byte ) -func file_api_api_proto_rawDescGZIP() []byte { - file_api_api_proto_rawDescOnce.Do(func() { - file_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_api_proto_rawDescData) +func file_pkg_proto_tracoor_api_api_proto_rawDescGZIP() []byte { + file_pkg_proto_tracoor_api_api_proto_rawDescOnce.Do(func() { + file_pkg_proto_tracoor_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_api_api_proto_rawDesc), len(file_pkg_proto_tracoor_api_api_proto_rawDesc))) }) - return file_api_api_proto_rawDescData -} - -var file_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 51) -var file_api_api_proto_goTypes = []interface{}{ - (ListUniqueBeaconStateValuesRequest_Field)(0), // 0: api.ListUniqueBeaconStateValuesRequest.Field - (ListUniqueBeaconBlockValuesRequest_Field)(0), // 1: api.ListUniqueBeaconBlockValuesRequest.Field - (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 2: api.ListUniqueBeaconBadBlockValuesRequest.Field - (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 3: api.ListUniqueBeaconBadBlobValuesRequest.Field - (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 4: api.ListUniqueExecutionBlockTraceValuesRequest.Field - (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 5: api.ListUniqueExecutionBadBlockValuesRequest.Field - (*BeaconState)(nil), // 6: api.BeaconState - (*BeaconBlock)(nil), // 7: api.BeaconBlock - (*BeaconBadBlock)(nil), // 8: api.BeaconBadBlock - (*BeaconBadBlob)(nil), // 9: api.BeaconBadBlob - (*ExecutionBlockTrace)(nil), // 10: api.ExecutionBlockTrace - (*ExecutionBadBlock)(nil), // 11: api.ExecutionBadBlock - (*PaginationCursor)(nil), // 12: api.PaginationCursor - (*GetConfigRequest)(nil), // 13: api.GetConfigRequest - (*GetConfigResponse)(nil), // 14: api.GetConfigResponse - (*Config)(nil), // 15: api.Config - (*EthereumConfig)(nil), // 16: api.EthereumConfig - (*EthereumNetworkConfig)(nil), // 17: api.EthereumNetworkConfig - (*ToolsConfig)(nil), // 18: api.ToolsConfig - (*GitRepositoryConfig)(nil), // 19: api.GitRepositoryConfig - (*ZcliConfig)(nil), // 20: api.ZcliConfig - (*ListBeaconStateRequest)(nil), // 21: api.ListBeaconStateRequest - (*ListBeaconStateResponse)(nil), // 22: api.ListBeaconStateResponse - (*CountBeaconStateRequest)(nil), // 23: api.CountBeaconStateRequest - (*CountBeaconStateResponse)(nil), // 24: api.CountBeaconStateResponse - (*ListUniqueBeaconStateValuesRequest)(nil), // 25: api.ListUniqueBeaconStateValuesRequest - (*ListUniqueBeaconStateValuesResponse)(nil), // 26: api.ListUniqueBeaconStateValuesResponse - (*ListBeaconBlockRequest)(nil), // 27: api.ListBeaconBlockRequest - (*ListBeaconBlockResponse)(nil), // 28: api.ListBeaconBlockResponse - (*CountBeaconBlockRequest)(nil), // 29: api.CountBeaconBlockRequest - (*CountBeaconBlockResponse)(nil), // 30: api.CountBeaconBlockResponse - (*ListUniqueBeaconBlockValuesRequest)(nil), // 31: api.ListUniqueBeaconBlockValuesRequest - (*ListUniqueBeaconBlockValuesResponse)(nil), // 32: api.ListUniqueBeaconBlockValuesResponse - (*ListBeaconBadBlockRequest)(nil), // 33: api.ListBeaconBadBlockRequest - (*ListBeaconBadBlockResponse)(nil), // 34: api.ListBeaconBadBlockResponse - (*CountBeaconBadBlockRequest)(nil), // 35: api.CountBeaconBadBlockRequest - (*CountBeaconBadBlockResponse)(nil), // 36: api.CountBeaconBadBlockResponse - (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 37: api.ListUniqueBeaconBadBlockValuesRequest - (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 38: api.ListUniqueBeaconBadBlockValuesResponse - (*ListBeaconBadBlobRequest)(nil), // 39: api.ListBeaconBadBlobRequest - (*ListBeaconBadBlobResponse)(nil), // 40: api.ListBeaconBadBlobResponse - (*CountBeaconBadBlobRequest)(nil), // 41: api.CountBeaconBadBlobRequest - (*CountBeaconBadBlobResponse)(nil), // 42: api.CountBeaconBadBlobResponse - (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 43: api.ListUniqueBeaconBadBlobValuesRequest - (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 44: api.ListUniqueBeaconBadBlobValuesResponse - (*ListExecutionBlockTraceRequest)(nil), // 45: api.ListExecutionBlockTraceRequest - (*ListExecutionBlockTraceResponse)(nil), // 46: api.ListExecutionBlockTraceResponse - (*CountExecutionBlockTraceRequest)(nil), // 47: api.CountExecutionBlockTraceRequest - (*CountExecutionBlockTraceResponse)(nil), // 48: api.CountExecutionBlockTraceResponse - (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 49: api.ListUniqueExecutionBlockTraceValuesRequest - (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 50: api.ListUniqueExecutionBlockTraceValuesResponse - (*ListExecutionBadBlockRequest)(nil), // 51: api.ListExecutionBadBlockRequest - (*ListExecutionBadBlockResponse)(nil), // 52: api.ListExecutionBadBlockResponse - (*CountExecutionBadBlockRequest)(nil), // 53: api.CountExecutionBadBlockRequest - (*CountExecutionBadBlockResponse)(nil), // 54: api.CountExecutionBadBlockResponse - (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 55: api.ListUniqueExecutionBadBlockValuesRequest - (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 56: api.ListUniqueExecutionBadBlockValuesResponse - (*wrapperspb.StringValue)(nil), // 57: google.protobuf.StringValue - (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp - (*wrapperspb.UInt64Value)(nil), // 59: google.protobuf.UInt64Value - (*wrapperspb.Int64Value)(nil), // 60: google.protobuf.Int64Value -} -var file_api_api_proto_depIdxs = []int32{ - 57, // 0: api.BeaconState.id:type_name -> google.protobuf.StringValue - 57, // 1: api.BeaconState.node:type_name -> google.protobuf.StringValue - 58, // 2: api.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 3: api.BeaconState.slot:type_name -> google.protobuf.UInt64Value - 59, // 4: api.BeaconState.epoch:type_name -> google.protobuf.UInt64Value - 57, // 5: api.BeaconState.state_root:type_name -> google.protobuf.StringValue - 57, // 6: api.BeaconState.node_version:type_name -> google.protobuf.StringValue - 57, // 7: api.BeaconState.network:type_name -> google.protobuf.StringValue - 57, // 8: api.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 9: api.BeaconBlock.id:type_name -> google.protobuf.StringValue - 57, // 10: api.BeaconBlock.node:type_name -> google.protobuf.StringValue - 58, // 11: api.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 12: api.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value - 59, // 13: api.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value - 57, // 14: api.BeaconBlock.block_root:type_name -> google.protobuf.StringValue - 57, // 15: api.BeaconBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 16: api.BeaconBlock.network:type_name -> google.protobuf.StringValue - 57, // 17: api.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 18: api.BeaconBadBlock.id:type_name -> google.protobuf.StringValue - 57, // 19: api.BeaconBadBlock.node:type_name -> google.protobuf.StringValue - 58, // 20: api.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 21: api.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value - 59, // 22: api.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value - 57, // 23: api.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue - 57, // 24: api.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 25: api.BeaconBadBlock.network:type_name -> google.protobuf.StringValue - 57, // 26: api.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 57, // 27: api.BeaconBadBlob.id:type_name -> google.protobuf.StringValue - 57, // 28: api.BeaconBadBlob.node:type_name -> google.protobuf.StringValue - 58, // 29: api.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp - 59, // 30: api.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value - 59, // 31: api.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value - 57, // 32: api.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue - 57, // 33: api.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue - 57, // 34: api.BeaconBadBlob.network:type_name -> google.protobuf.StringValue - 57, // 35: api.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue - 59, // 36: api.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value - 57, // 37: api.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue - 57, // 38: api.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue - 58, // 39: api.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp - 57, // 40: api.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue - 60, // 41: api.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value - 57, // 42: api.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue - 57, // 43: api.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue - 57, // 44: api.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue - 57, // 45: api.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue - 57, // 46: api.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue - 58, // 47: api.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 57, // 48: api.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue - 60, // 49: api.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value - 57, // 50: api.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue - 57, // 51: api.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue - 57, // 52: api.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue - 57, // 53: api.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue - 15, // 54: api.GetConfigResponse.config:type_name -> api.Config - 16, // 55: api.Config.ethereum:type_name -> api.EthereumConfig - 17, // 56: api.EthereumConfig.config:type_name -> api.EthereumNetworkConfig - 18, // 57: api.EthereumConfig.tools:type_name -> api.ToolsConfig - 19, // 58: api.ToolsConfig.ncli:type_name -> api.GitRepositoryConfig - 19, // 59: api.ToolsConfig.lcli:type_name -> api.GitRepositoryConfig - 20, // 60: api.ToolsConfig.zcli:type_name -> api.ZcliConfig - 58, // 61: api.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 58, // 62: api.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 12, // 63: api.ListBeaconStateRequest.pagination:type_name -> api.PaginationCursor - 6, // 64: api.ListBeaconStateResponse.beacon_states:type_name -> api.BeaconState - 58, // 65: api.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 58, // 66: api.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 59, // 67: api.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value - 0, // 68: api.ListUniqueBeaconStateValuesRequest.fields:type_name -> api.ListUniqueBeaconStateValuesRequest.Field - 58, // 69: api.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 70: api.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 71: api.ListBeaconBlockRequest.pagination:type_name -> api.PaginationCursor - 7, // 72: api.ListBeaconBlockResponse.beacon_blocks:type_name -> api.BeaconBlock - 58, // 73: api.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 74: api.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 75: api.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value - 1, // 76: api.ListUniqueBeaconBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBlockValuesRequest.Field - 58, // 77: api.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 78: api.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 79: api.ListBeaconBadBlockRequest.pagination:type_name -> api.PaginationCursor - 8, // 80: api.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> api.BeaconBadBlock - 58, // 81: api.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 82: api.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 83: api.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 2, // 84: api.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlockValuesRequest.Field - 58, // 85: api.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 58, // 86: api.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 12, // 87: api.ListBeaconBadBlobRequest.pagination:type_name -> api.PaginationCursor - 59, // 88: api.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 9, // 89: api.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> api.BeaconBadBlob - 58, // 90: api.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 58, // 91: api.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 59, // 92: api.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 59, // 93: api.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value - 3, // 94: api.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlobValuesRequest.Field - 58, // 95: api.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 58, // 96: api.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 12, // 97: api.ListExecutionBlockTraceRequest.pagination:type_name -> api.PaginationCursor - 10, // 98: api.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> api.ExecutionBlockTrace - 58, // 99: api.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 58, // 100: api.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 59, // 101: api.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value - 4, // 102: api.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> api.ListUniqueExecutionBlockTraceValuesRequest.Field - 58, // 103: api.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 104: api.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 12, // 105: api.ListExecutionBadBlockRequest.pagination:type_name -> api.PaginationCursor - 11, // 106: api.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> api.ExecutionBadBlock - 58, // 107: api.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 58, // 108: api.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 59, // 109: api.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 5, // 110: api.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> api.ListUniqueExecutionBadBlockValuesRequest.Field - 13, // 111: api.API.GetConfig:input_type -> api.GetConfigRequest - 21, // 112: api.API.ListBeaconState:input_type -> api.ListBeaconStateRequest - 23, // 113: api.API.CountBeaconState:input_type -> api.CountBeaconStateRequest - 25, // 114: api.API.ListUniqueBeaconStateValues:input_type -> api.ListUniqueBeaconStateValuesRequest - 27, // 115: api.API.ListBeaconBlock:input_type -> api.ListBeaconBlockRequest - 29, // 116: api.API.CountBeaconBlock:input_type -> api.CountBeaconBlockRequest - 31, // 117: api.API.ListUniqueBeaconBlockValues:input_type -> api.ListUniqueBeaconBlockValuesRequest - 33, // 118: api.API.ListBeaconBadBlock:input_type -> api.ListBeaconBadBlockRequest - 35, // 119: api.API.CountBeaconBadBlock:input_type -> api.CountBeaconBadBlockRequest - 37, // 120: api.API.ListUniqueBeaconBadBlockValues:input_type -> api.ListUniqueBeaconBadBlockValuesRequest - 39, // 121: api.API.ListBeaconBadBlob:input_type -> api.ListBeaconBadBlobRequest - 41, // 122: api.API.CountBeaconBadBlob:input_type -> api.CountBeaconBadBlobRequest - 43, // 123: api.API.ListUniqueBeaconBadBlobValues:input_type -> api.ListUniqueBeaconBadBlobValuesRequest - 45, // 124: api.API.ListExecutionBlockTrace:input_type -> api.ListExecutionBlockTraceRequest - 47, // 125: api.API.CountExecutionBlockTrace:input_type -> api.CountExecutionBlockTraceRequest - 49, // 126: api.API.ListUniqueExecutionBlockTraceValues:input_type -> api.ListUniqueExecutionBlockTraceValuesRequest - 51, // 127: api.API.ListExecutionBadBlock:input_type -> api.ListExecutionBadBlockRequest - 53, // 128: api.API.CountExecutionBadBlock:input_type -> api.CountExecutionBadBlockRequest - 55, // 129: api.API.ListUniqueExecutionBadBlockValues:input_type -> api.ListUniqueExecutionBadBlockValuesRequest - 14, // 130: api.API.GetConfig:output_type -> api.GetConfigResponse - 22, // 131: api.API.ListBeaconState:output_type -> api.ListBeaconStateResponse - 24, // 132: api.API.CountBeaconState:output_type -> api.CountBeaconStateResponse - 26, // 133: api.API.ListUniqueBeaconStateValues:output_type -> api.ListUniqueBeaconStateValuesResponse - 28, // 134: api.API.ListBeaconBlock:output_type -> api.ListBeaconBlockResponse - 30, // 135: api.API.CountBeaconBlock:output_type -> api.CountBeaconBlockResponse - 32, // 136: api.API.ListUniqueBeaconBlockValues:output_type -> api.ListUniqueBeaconBlockValuesResponse - 34, // 137: api.API.ListBeaconBadBlock:output_type -> api.ListBeaconBadBlockResponse - 36, // 138: api.API.CountBeaconBadBlock:output_type -> api.CountBeaconBadBlockResponse - 38, // 139: api.API.ListUniqueBeaconBadBlockValues:output_type -> api.ListUniqueBeaconBadBlockValuesResponse - 40, // 140: api.API.ListBeaconBadBlob:output_type -> api.ListBeaconBadBlobResponse - 42, // 141: api.API.CountBeaconBadBlob:output_type -> api.CountBeaconBadBlobResponse - 44, // 142: api.API.ListUniqueBeaconBadBlobValues:output_type -> api.ListUniqueBeaconBadBlobValuesResponse - 46, // 143: api.API.ListExecutionBlockTrace:output_type -> api.ListExecutionBlockTraceResponse - 48, // 144: api.API.CountExecutionBlockTrace:output_type -> api.CountExecutionBlockTraceResponse - 50, // 145: api.API.ListUniqueExecutionBlockTraceValues:output_type -> api.ListUniqueExecutionBlockTraceValuesResponse - 52, // 146: api.API.ListExecutionBadBlock:output_type -> api.ListExecutionBadBlockResponse - 54, // 147: api.API.CountExecutionBadBlock:output_type -> api.CountExecutionBadBlockResponse - 56, // 148: api.API.ListUniqueExecutionBadBlockValues:output_type -> api.ListUniqueExecutionBadBlockValuesResponse - 130, // [130:149] is the sub-list for method output_type - 111, // [111:130] is the sub-list for method input_type - 111, // [111:111] is the sub-list for extension type_name - 111, // [111:111] is the sub-list for extension extendee - 0, // [0:111] is the sub-list for field type_name -} - -func init() { file_api_api_proto_init() } -func file_api_api_proto_init() { - if File_api_api_proto != nil { + return file_pkg_proto_tracoor_api_api_proto_rawDescData +} + +var file_pkg_proto_tracoor_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_pkg_proto_tracoor_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 58) +var file_pkg_proto_tracoor_api_api_proto_goTypes = []any{ + (ListUniqueBeaconStateValuesRequest_Field)(0), // 0: api.ListUniqueBeaconStateValuesRequest.Field + (ListUniqueBeaconBlockValuesRequest_Field)(0), // 1: api.ListUniqueBeaconBlockValuesRequest.Field + (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field)(0), // 2: api.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: api.ListUniqueBeaconBadBlockValuesRequest.Field + (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 4: api.ListUniqueBeaconBadBlobValuesRequest.Field + (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 5: api.ListUniqueExecutionBlockTraceValuesRequest.Field + (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 6: api.ListUniqueExecutionBadBlockValuesRequest.Field + (*BeaconState)(nil), // 7: api.BeaconState + (*BeaconBlock)(nil), // 8: api.BeaconBlock + (*ExecutionPayloadEnvelope)(nil), // 9: api.ExecutionPayloadEnvelope + (*BeaconBadBlock)(nil), // 10: api.BeaconBadBlock + (*BeaconBadBlob)(nil), // 11: api.BeaconBadBlob + (*ExecutionBlockTrace)(nil), // 12: api.ExecutionBlockTrace + (*ExecutionBadBlock)(nil), // 13: api.ExecutionBadBlock + (*PaginationCursor)(nil), // 14: api.PaginationCursor + (*GetConfigRequest)(nil), // 15: api.GetConfigRequest + (*GetConfigResponse)(nil), // 16: api.GetConfigResponse + (*Config)(nil), // 17: api.Config + (*EthereumConfig)(nil), // 18: api.EthereumConfig + (*EthereumNetworkConfig)(nil), // 19: api.EthereumNetworkConfig + (*ToolsConfig)(nil), // 20: api.ToolsConfig + (*GitRepositoryConfig)(nil), // 21: api.GitRepositoryConfig + (*ZcliConfig)(nil), // 22: api.ZcliConfig + (*ListBeaconStateRequest)(nil), // 23: api.ListBeaconStateRequest + (*ListBeaconStateResponse)(nil), // 24: api.ListBeaconStateResponse + (*CountBeaconStateRequest)(nil), // 25: api.CountBeaconStateRequest + (*CountBeaconStateResponse)(nil), // 26: api.CountBeaconStateResponse + (*ListUniqueBeaconStateValuesRequest)(nil), // 27: api.ListUniqueBeaconStateValuesRequest + (*ListUniqueBeaconStateValuesResponse)(nil), // 28: api.ListUniqueBeaconStateValuesResponse + (*ListBeaconBlockRequest)(nil), // 29: api.ListBeaconBlockRequest + (*ListBeaconBlockResponse)(nil), // 30: api.ListBeaconBlockResponse + (*CountBeaconBlockRequest)(nil), // 31: api.CountBeaconBlockRequest + (*CountBeaconBlockResponse)(nil), // 32: api.CountBeaconBlockResponse + (*ListUniqueBeaconBlockValuesRequest)(nil), // 33: api.ListUniqueBeaconBlockValuesRequest + (*ListUniqueBeaconBlockValuesResponse)(nil), // 34: api.ListUniqueBeaconBlockValuesResponse + (*ListExecutionPayloadEnvelopeRequest)(nil), // 35: api.ListExecutionPayloadEnvelopeRequest + (*ListExecutionPayloadEnvelopeResponse)(nil), // 36: api.ListExecutionPayloadEnvelopeResponse + (*CountExecutionPayloadEnvelopeRequest)(nil), // 37: api.CountExecutionPayloadEnvelopeRequest + (*CountExecutionPayloadEnvelopeResponse)(nil), // 38: api.CountExecutionPayloadEnvelopeResponse + (*ListUniqueExecutionPayloadEnvelopeValuesRequest)(nil), // 39: api.ListUniqueExecutionPayloadEnvelopeValuesRequest + (*ListUniqueExecutionPayloadEnvelopeValuesResponse)(nil), // 40: api.ListUniqueExecutionPayloadEnvelopeValuesResponse + (*ListBeaconBadBlockRequest)(nil), // 41: api.ListBeaconBadBlockRequest + (*ListBeaconBadBlockResponse)(nil), // 42: api.ListBeaconBadBlockResponse + (*CountBeaconBadBlockRequest)(nil), // 43: api.CountBeaconBadBlockRequest + (*CountBeaconBadBlockResponse)(nil), // 44: api.CountBeaconBadBlockResponse + (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 45: api.ListUniqueBeaconBadBlockValuesRequest + (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 46: api.ListUniqueBeaconBadBlockValuesResponse + (*ListBeaconBadBlobRequest)(nil), // 47: api.ListBeaconBadBlobRequest + (*ListBeaconBadBlobResponse)(nil), // 48: api.ListBeaconBadBlobResponse + (*CountBeaconBadBlobRequest)(nil), // 49: api.CountBeaconBadBlobRequest + (*CountBeaconBadBlobResponse)(nil), // 50: api.CountBeaconBadBlobResponse + (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 51: api.ListUniqueBeaconBadBlobValuesRequest + (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 52: api.ListUniqueBeaconBadBlobValuesResponse + (*ListExecutionBlockTraceRequest)(nil), // 53: api.ListExecutionBlockTraceRequest + (*ListExecutionBlockTraceResponse)(nil), // 54: api.ListExecutionBlockTraceResponse + (*CountExecutionBlockTraceRequest)(nil), // 55: api.CountExecutionBlockTraceRequest + (*CountExecutionBlockTraceResponse)(nil), // 56: api.CountExecutionBlockTraceResponse + (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 57: api.ListUniqueExecutionBlockTraceValuesRequest + (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 58: api.ListUniqueExecutionBlockTraceValuesResponse + (*ListExecutionBadBlockRequest)(nil), // 59: api.ListExecutionBadBlockRequest + (*ListExecutionBadBlockResponse)(nil), // 60: api.ListExecutionBadBlockResponse + (*CountExecutionBadBlockRequest)(nil), // 61: api.CountExecutionBadBlockRequest + (*CountExecutionBadBlockResponse)(nil), // 62: api.CountExecutionBadBlockResponse + (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 63: api.ListUniqueExecutionBadBlockValuesRequest + (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 64: api.ListUniqueExecutionBadBlockValuesResponse + (*wrapperspb.StringValue)(nil), // 65: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp + (*wrapperspb.UInt64Value)(nil), // 67: google.protobuf.UInt64Value + (*wrapperspb.Int64Value)(nil), // 68: google.protobuf.Int64Value +} +var file_pkg_proto_tracoor_api_api_proto_depIdxs = []int32{ + 65, // 0: api.BeaconState.id:type_name -> google.protobuf.StringValue + 65, // 1: api.BeaconState.node:type_name -> google.protobuf.StringValue + 66, // 2: api.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 3: api.BeaconState.slot:type_name -> google.protobuf.UInt64Value + 67, // 4: api.BeaconState.epoch:type_name -> google.protobuf.UInt64Value + 65, // 5: api.BeaconState.state_root:type_name -> google.protobuf.StringValue + 65, // 6: api.BeaconState.node_version:type_name -> google.protobuf.StringValue + 65, // 7: api.BeaconState.network:type_name -> google.protobuf.StringValue + 65, // 8: api.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 9: api.BeaconBlock.id:type_name -> google.protobuf.StringValue + 65, // 10: api.BeaconBlock.node:type_name -> google.protobuf.StringValue + 66, // 11: api.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 12: api.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value + 67, // 13: api.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value + 65, // 14: api.BeaconBlock.block_root:type_name -> google.protobuf.StringValue + 65, // 15: api.BeaconBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 16: api.BeaconBlock.network:type_name -> google.protobuf.StringValue + 65, // 17: api.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 18: api.ExecutionPayloadEnvelope.id:type_name -> google.protobuf.StringValue + 65, // 19: api.ExecutionPayloadEnvelope.node:type_name -> google.protobuf.StringValue + 66, // 20: api.ExecutionPayloadEnvelope.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 21: api.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 67, // 22: api.ExecutionPayloadEnvelope.epoch:type_name -> google.protobuf.UInt64Value + 65, // 23: api.ExecutionPayloadEnvelope.block_root:type_name -> google.protobuf.StringValue + 65, // 24: api.ExecutionPayloadEnvelope.node_version:type_name -> google.protobuf.StringValue + 65, // 25: api.ExecutionPayloadEnvelope.network:type_name -> google.protobuf.StringValue + 65, // 26: api.ExecutionPayloadEnvelope.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 27: api.BeaconBadBlock.id:type_name -> google.protobuf.StringValue + 65, // 28: api.BeaconBadBlock.node:type_name -> google.protobuf.StringValue + 66, // 29: api.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 30: api.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value + 67, // 31: api.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value + 65, // 32: api.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue + 65, // 33: api.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 34: api.BeaconBadBlock.network:type_name -> google.protobuf.StringValue + 65, // 35: api.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 65, // 36: api.BeaconBadBlob.id:type_name -> google.protobuf.StringValue + 65, // 37: api.BeaconBadBlob.node:type_name -> google.protobuf.StringValue + 66, // 38: api.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp + 67, // 39: api.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value + 67, // 40: api.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value + 65, // 41: api.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue + 65, // 42: api.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue + 65, // 43: api.BeaconBadBlob.network:type_name -> google.protobuf.StringValue + 65, // 44: api.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue + 67, // 45: api.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value + 65, // 46: api.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue + 65, // 47: api.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue + 66, // 48: api.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp + 65, // 49: api.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue + 68, // 50: api.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value + 65, // 51: api.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue + 65, // 52: api.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue + 65, // 53: api.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue + 65, // 54: api.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue + 65, // 55: api.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue + 66, // 56: api.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 65, // 57: api.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue + 68, // 58: api.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value + 65, // 59: api.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue + 65, // 60: api.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue + 65, // 61: api.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue + 65, // 62: api.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue + 17, // 63: api.GetConfigResponse.config:type_name -> api.Config + 18, // 64: api.Config.ethereum:type_name -> api.EthereumConfig + 19, // 65: api.EthereumConfig.config:type_name -> api.EthereumNetworkConfig + 20, // 66: api.EthereumConfig.tools:type_name -> api.ToolsConfig + 21, // 67: api.ToolsConfig.ncli:type_name -> api.GitRepositoryConfig + 21, // 68: api.ToolsConfig.lcli:type_name -> api.GitRepositoryConfig + 22, // 69: api.ToolsConfig.zcli:type_name -> api.ZcliConfig + 66, // 70: api.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 66, // 71: api.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 14, // 72: api.ListBeaconStateRequest.pagination:type_name -> api.PaginationCursor + 7, // 73: api.ListBeaconStateResponse.beacon_states:type_name -> api.BeaconState + 66, // 74: api.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 66, // 75: api.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 67, // 76: api.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value + 0, // 77: api.ListUniqueBeaconStateValuesRequest.fields:type_name -> api.ListUniqueBeaconStateValuesRequest.Field + 66, // 78: api.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 79: api.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 80: api.ListBeaconBlockRequest.pagination:type_name -> api.PaginationCursor + 8, // 81: api.ListBeaconBlockResponse.beacon_blocks:type_name -> api.BeaconBlock + 66, // 82: api.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 83: api.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 84: api.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value + 1, // 85: api.ListUniqueBeaconBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBlockValuesRequest.Field + 66, // 86: api.ListExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 66, // 87: api.ListExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 14, // 88: api.ListExecutionPayloadEnvelopeRequest.pagination:type_name -> api.PaginationCursor + 9, // 89: api.ListExecutionPayloadEnvelopeResponse.execution_payload_envelopes:type_name -> api.ExecutionPayloadEnvelope + 66, // 90: api.CountExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 66, // 91: api.CountExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 67, // 92: api.CountExecutionPayloadEnvelopeResponse.count:type_name -> google.protobuf.UInt64Value + 2, // 93: api.ListUniqueExecutionPayloadEnvelopeValuesRequest.fields:type_name -> api.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + 66, // 94: api.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 95: api.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 96: api.ListBeaconBadBlockRequest.pagination:type_name -> api.PaginationCursor + 10, // 97: api.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> api.BeaconBadBlock + 66, // 98: api.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 99: api.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 100: api.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 3, // 101: api.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlockValuesRequest.Field + 66, // 102: api.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 66, // 103: api.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 14, // 104: api.ListBeaconBadBlobRequest.pagination:type_name -> api.PaginationCursor + 67, // 105: api.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 11, // 106: api.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> api.BeaconBadBlob + 66, // 107: api.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 66, // 108: api.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 67, // 109: api.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 67, // 110: api.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value + 4, // 111: api.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> api.ListUniqueBeaconBadBlobValuesRequest.Field + 66, // 112: api.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 66, // 113: api.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 14, // 114: api.ListExecutionBlockTraceRequest.pagination:type_name -> api.PaginationCursor + 12, // 115: api.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> api.ExecutionBlockTrace + 66, // 116: api.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 66, // 117: api.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 67, // 118: api.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value + 5, // 119: api.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> api.ListUniqueExecutionBlockTraceValuesRequest.Field + 66, // 120: api.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 121: api.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 14, // 122: api.ListExecutionBadBlockRequest.pagination:type_name -> api.PaginationCursor + 13, // 123: api.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> api.ExecutionBadBlock + 66, // 124: api.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 66, // 125: api.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 67, // 126: api.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 6, // 127: api.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> api.ListUniqueExecutionBadBlockValuesRequest.Field + 15, // 128: api.API.GetConfig:input_type -> api.GetConfigRequest + 23, // 129: api.API.ListBeaconState:input_type -> api.ListBeaconStateRequest + 25, // 130: api.API.CountBeaconState:input_type -> api.CountBeaconStateRequest + 27, // 131: api.API.ListUniqueBeaconStateValues:input_type -> api.ListUniqueBeaconStateValuesRequest + 29, // 132: api.API.ListBeaconBlock:input_type -> api.ListBeaconBlockRequest + 31, // 133: api.API.CountBeaconBlock:input_type -> api.CountBeaconBlockRequest + 33, // 134: api.API.ListUniqueBeaconBlockValues:input_type -> api.ListUniqueBeaconBlockValuesRequest + 35, // 135: api.API.ListExecutionPayloadEnvelope:input_type -> api.ListExecutionPayloadEnvelopeRequest + 37, // 136: api.API.CountExecutionPayloadEnvelope:input_type -> api.CountExecutionPayloadEnvelopeRequest + 39, // 137: api.API.ListUniqueExecutionPayloadEnvelopeValues:input_type -> api.ListUniqueExecutionPayloadEnvelopeValuesRequest + 41, // 138: api.API.ListBeaconBadBlock:input_type -> api.ListBeaconBadBlockRequest + 43, // 139: api.API.CountBeaconBadBlock:input_type -> api.CountBeaconBadBlockRequest + 45, // 140: api.API.ListUniqueBeaconBadBlockValues:input_type -> api.ListUniqueBeaconBadBlockValuesRequest + 47, // 141: api.API.ListBeaconBadBlob:input_type -> api.ListBeaconBadBlobRequest + 49, // 142: api.API.CountBeaconBadBlob:input_type -> api.CountBeaconBadBlobRequest + 51, // 143: api.API.ListUniqueBeaconBadBlobValues:input_type -> api.ListUniqueBeaconBadBlobValuesRequest + 53, // 144: api.API.ListExecutionBlockTrace:input_type -> api.ListExecutionBlockTraceRequest + 55, // 145: api.API.CountExecutionBlockTrace:input_type -> api.CountExecutionBlockTraceRequest + 57, // 146: api.API.ListUniqueExecutionBlockTraceValues:input_type -> api.ListUniqueExecutionBlockTraceValuesRequest + 59, // 147: api.API.ListExecutionBadBlock:input_type -> api.ListExecutionBadBlockRequest + 61, // 148: api.API.CountExecutionBadBlock:input_type -> api.CountExecutionBadBlockRequest + 63, // 149: api.API.ListUniqueExecutionBadBlockValues:input_type -> api.ListUniqueExecutionBadBlockValuesRequest + 16, // 150: api.API.GetConfig:output_type -> api.GetConfigResponse + 24, // 151: api.API.ListBeaconState:output_type -> api.ListBeaconStateResponse + 26, // 152: api.API.CountBeaconState:output_type -> api.CountBeaconStateResponse + 28, // 153: api.API.ListUniqueBeaconStateValues:output_type -> api.ListUniqueBeaconStateValuesResponse + 30, // 154: api.API.ListBeaconBlock:output_type -> api.ListBeaconBlockResponse + 32, // 155: api.API.CountBeaconBlock:output_type -> api.CountBeaconBlockResponse + 34, // 156: api.API.ListUniqueBeaconBlockValues:output_type -> api.ListUniqueBeaconBlockValuesResponse + 36, // 157: api.API.ListExecutionPayloadEnvelope:output_type -> api.ListExecutionPayloadEnvelopeResponse + 38, // 158: api.API.CountExecutionPayloadEnvelope:output_type -> api.CountExecutionPayloadEnvelopeResponse + 40, // 159: api.API.ListUniqueExecutionPayloadEnvelopeValues:output_type -> api.ListUniqueExecutionPayloadEnvelopeValuesResponse + 42, // 160: api.API.ListBeaconBadBlock:output_type -> api.ListBeaconBadBlockResponse + 44, // 161: api.API.CountBeaconBadBlock:output_type -> api.CountBeaconBadBlockResponse + 46, // 162: api.API.ListUniqueBeaconBadBlockValues:output_type -> api.ListUniqueBeaconBadBlockValuesResponse + 48, // 163: api.API.ListBeaconBadBlob:output_type -> api.ListBeaconBadBlobResponse + 50, // 164: api.API.CountBeaconBadBlob:output_type -> api.CountBeaconBadBlobResponse + 52, // 165: api.API.ListUniqueBeaconBadBlobValues:output_type -> api.ListUniqueBeaconBadBlobValuesResponse + 54, // 166: api.API.ListExecutionBlockTrace:output_type -> api.ListExecutionBlockTraceResponse + 56, // 167: api.API.CountExecutionBlockTrace:output_type -> api.CountExecutionBlockTraceResponse + 58, // 168: api.API.ListUniqueExecutionBlockTraceValues:output_type -> api.ListUniqueExecutionBlockTraceValuesResponse + 60, // 169: api.API.ListExecutionBadBlock:output_type -> api.ListExecutionBadBlockResponse + 62, // 170: api.API.CountExecutionBadBlock:output_type -> api.CountExecutionBadBlockResponse + 64, // 171: api.API.ListUniqueExecutionBadBlockValues:output_type -> api.ListUniqueExecutionBadBlockValuesResponse + 150, // [150:172] is the sub-list for method output_type + 128, // [128:150] is the sub-list for method input_type + 128, // [128:128] is the sub-list for extension type_name + 128, // [128:128] is the sub-list for extension extendee + 0, // [0:128] is the sub-list for field type_name +} + +func init() { file_pkg_proto_tracoor_api_api_proto_init() } +func file_pkg_proto_tracoor_api_api_proto_init() { + if File_pkg_proto_tracoor_api_api_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_api_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBlockTrace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaginationCursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumNetworkConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToolsConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitRepositoryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZcliConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_api_proto_rawDesc, - NumEnums: 6, - NumMessages: 51, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_api_api_proto_rawDesc), len(file_pkg_proto_tracoor_api_api_proto_rawDesc)), + NumEnums: 7, + NumMessages: 58, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_api_api_proto_goTypes, - DependencyIndexes: file_api_api_proto_depIdxs, - EnumInfos: file_api_api_proto_enumTypes, - MessageInfos: file_api_api_proto_msgTypes, + GoTypes: file_pkg_proto_tracoor_api_api_proto_goTypes, + DependencyIndexes: file_pkg_proto_tracoor_api_api_proto_depIdxs, + EnumInfos: file_pkg_proto_tracoor_api_api_proto_enumTypes, + MessageInfos: file_pkg_proto_tracoor_api_api_proto_msgTypes, }.Build() - File_api_api_proto = out.File - file_api_api_proto_rawDesc = nil - file_api_api_proto_goTypes = nil - file_api_api_proto_depIdxs = nil + File_pkg_proto_tracoor_api_api_proto = out.File + file_pkg_proto_tracoor_api_api_proto_goTypes = nil + file_pkg_proto_tracoor_api_api_proto_depIdxs = nil } diff --git a/pkg/proto/tracoor/api/api.proto b/pkg/proto/tracoor/api/api.proto index 58b6700..3a9c60f 100644 --- a/pkg/proto/tracoor/api/api.proto +++ b/pkg/proto/tracoor/api/api.proto @@ -33,6 +33,19 @@ message BeaconBlock { [ json_name = "beacon_implementation" ]; } +message ExecutionPayloadEnvelope { + google.protobuf.StringValue id = 1; + google.protobuf.StringValue node = 2; + google.protobuf.Timestamp fetched_at = 3 [ json_name = "fetched_at" ]; + google.protobuf.UInt64Value slot = 4; + google.protobuf.UInt64Value epoch = 5; + google.protobuf.StringValue block_root = 6 [ json_name = "block_root" ]; + google.protobuf.StringValue node_version = 7 [ json_name = "node_version" ]; + google.protobuf.StringValue network = 8; + google.protobuf.StringValue beacon_implementation = 9 + [ json_name = "beacon_implementation" ]; +} + message BeaconBadBlock { google.protobuf.StringValue id = 1; google.protobuf.StringValue node = 2; @@ -103,6 +116,14 @@ service API { rpc ListUniqueBeaconBlockValues(ListUniqueBeaconBlockValuesRequest) returns (ListUniqueBeaconBlockValuesResponse) {} + rpc ListExecutionPayloadEnvelope(ListExecutionPayloadEnvelopeRequest) + returns (ListExecutionPayloadEnvelopeResponse) {} + rpc CountExecutionPayloadEnvelope(CountExecutionPayloadEnvelopeRequest) + returns (CountExecutionPayloadEnvelopeResponse) {} + rpc ListUniqueExecutionPayloadEnvelopeValues( + ListUniqueExecutionPayloadEnvelopeValuesRequest) + returns (ListUniqueExecutionPayloadEnvelopeValuesResponse) {} + rpc ListBeaconBadBlock(ListBeaconBadBlockRequest) returns (ListBeaconBadBlockResponse) {} rpc CountBeaconBadBlock(CountBeaconBadBlockRequest) @@ -292,6 +313,67 @@ message ListUniqueBeaconBlockValuesResponse { [ json_name = "beacon_implementation" ]; } +message ListExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4 [ json_name = "block_root" ]; + string node_version = 5 [ json_name = "node_version" ]; + string network = 6; + google.protobuf.Timestamp before = 7; + google.protobuf.Timestamp after = 8; + + PaginationCursor pagination = 9; + + string beacon_implementation = 10 [ json_name = "beacon_implementation" ]; + string id = 11; +} + +message ListExecutionPayloadEnvelopeResponse { + repeated ExecutionPayloadEnvelope execution_payload_envelopes = 1 + [ json_name = "execution_payload_envelopes" ]; +} + +message CountExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4 [ json_name = "block_root" ]; + string node_version = 5 [ json_name = "node_version" ]; + string network = 6; + string beacon_implementation = 7 [ json_name = "beacon_implementation" ]; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; +} + +message CountExecutionPayloadEnvelopeResponse { + google.protobuf.UInt64Value count = 1; +} + +message ListUniqueExecutionPayloadEnvelopeValuesRequest { + enum Field { + node = 0; + slot = 1; + epoch = 2; + block_root = 3; + node_version = 4; + network = 5; + beacon_implementation = 6; + } + repeated Field fields = 1 [ json_name = "fields" ]; +} + +message ListUniqueExecutionPayloadEnvelopeValuesResponse { + repeated string node = 1; + repeated uint64 slot = 2; + repeated uint64 epoch = 3; + repeated string block_root = 4 [ json_name = "block_root" ]; + repeated string node_version = 5 [ json_name = "node_version" ]; + repeated string network = 6; + repeated string beacon_implementation = 7 + [ json_name = "beacon_implementation" ]; +} + message ListBeaconBadBlockRequest { string node = 1; uint64 slot = 2; diff --git a/pkg/proto/tracoor/api/api_grpc.pb.go b/pkg/proto/tracoor/api/api_grpc.pb.go index e47fc96..7997cdd 100644 --- a/pkg/proto/tracoor/api/api_grpc.pb.go +++ b/pkg/proto/tracoor/api/api_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.6.2 // - protoc (unknown) -// source: api/api.proto +// source: pkg/proto/tracoor/api/api.proto package api @@ -15,29 +15,32 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( - API_GetConfig_FullMethodName = "/api.API/GetConfig" - API_ListBeaconState_FullMethodName = "/api.API/ListBeaconState" - API_CountBeaconState_FullMethodName = "/api.API/CountBeaconState" - API_ListUniqueBeaconStateValues_FullMethodName = "/api.API/ListUniqueBeaconStateValues" - API_ListBeaconBlock_FullMethodName = "/api.API/ListBeaconBlock" - API_CountBeaconBlock_FullMethodName = "/api.API/CountBeaconBlock" - API_ListUniqueBeaconBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBlockValues" - API_ListBeaconBadBlock_FullMethodName = "/api.API/ListBeaconBadBlock" - API_CountBeaconBadBlock_FullMethodName = "/api.API/CountBeaconBadBlock" - API_ListUniqueBeaconBadBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlockValues" - API_ListBeaconBadBlob_FullMethodName = "/api.API/ListBeaconBadBlob" - API_CountBeaconBadBlob_FullMethodName = "/api.API/CountBeaconBadBlob" - API_ListUniqueBeaconBadBlobValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlobValues" - API_ListExecutionBlockTrace_FullMethodName = "/api.API/ListExecutionBlockTrace" - API_CountExecutionBlockTrace_FullMethodName = "/api.API/CountExecutionBlockTrace" - API_ListUniqueExecutionBlockTraceValues_FullMethodName = "/api.API/ListUniqueExecutionBlockTraceValues" - API_ListExecutionBadBlock_FullMethodName = "/api.API/ListExecutionBadBlock" - API_CountExecutionBadBlock_FullMethodName = "/api.API/CountExecutionBadBlock" - API_ListUniqueExecutionBadBlockValues_FullMethodName = "/api.API/ListUniqueExecutionBadBlockValues" + API_GetConfig_FullMethodName = "/api.API/GetConfig" + API_ListBeaconState_FullMethodName = "/api.API/ListBeaconState" + API_CountBeaconState_FullMethodName = "/api.API/CountBeaconState" + API_ListUniqueBeaconStateValues_FullMethodName = "/api.API/ListUniqueBeaconStateValues" + API_ListBeaconBlock_FullMethodName = "/api.API/ListBeaconBlock" + API_CountBeaconBlock_FullMethodName = "/api.API/CountBeaconBlock" + API_ListUniqueBeaconBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBlockValues" + API_ListExecutionPayloadEnvelope_FullMethodName = "/api.API/ListExecutionPayloadEnvelope" + API_CountExecutionPayloadEnvelope_FullMethodName = "/api.API/CountExecutionPayloadEnvelope" + API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName = "/api.API/ListUniqueExecutionPayloadEnvelopeValues" + API_ListBeaconBadBlock_FullMethodName = "/api.API/ListBeaconBadBlock" + API_CountBeaconBadBlock_FullMethodName = "/api.API/CountBeaconBadBlock" + API_ListUniqueBeaconBadBlockValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlockValues" + API_ListBeaconBadBlob_FullMethodName = "/api.API/ListBeaconBadBlob" + API_CountBeaconBadBlob_FullMethodName = "/api.API/CountBeaconBadBlob" + API_ListUniqueBeaconBadBlobValues_FullMethodName = "/api.API/ListUniqueBeaconBadBlobValues" + API_ListExecutionBlockTrace_FullMethodName = "/api.API/ListExecutionBlockTrace" + API_CountExecutionBlockTrace_FullMethodName = "/api.API/CountExecutionBlockTrace" + API_ListUniqueExecutionBlockTraceValues_FullMethodName = "/api.API/ListUniqueExecutionBlockTraceValues" + API_ListExecutionBadBlock_FullMethodName = "/api.API/ListExecutionBadBlock" + API_CountExecutionBadBlock_FullMethodName = "/api.API/CountExecutionBadBlock" + API_ListUniqueExecutionBadBlockValues_FullMethodName = "/api.API/ListUniqueExecutionBadBlockValues" ) // APIClient is the client API for API service. @@ -51,6 +54,9 @@ type APIClient interface { ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) + ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) @@ -74,8 +80,9 @@ func NewAPIClient(cc grpc.ClientConnInterface) APIClient { } func (c *aPIClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, API_GetConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_GetConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -83,8 +90,9 @@ func (c *aPIClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts .. } func (c *aPIClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequest, opts ...grpc.CallOption) (*ListBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconStateResponse) - err := c.cc.Invoke(ctx, API_ListBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -92,8 +100,9 @@ func (c *aPIClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequ } func (c *aPIClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRequest, opts ...grpc.CallOption) (*CountBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconStateResponse) - err := c.cc.Invoke(ctx, API_CountBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -101,8 +110,9 @@ func (c *aPIClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRe } func (c *aPIClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUniqueBeaconStateValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconStateValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconStateValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconStateValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconStateValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -110,8 +120,9 @@ func (c *aPIClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUni } func (c *aPIClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBlockResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -119,8 +130,9 @@ func (c *aPIClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequ } func (c *aPIClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBlockResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -128,8 +140,39 @@ func (c *aPIClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRe } func (c *aPIClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBlockValues_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, API_ListExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CountExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, API_CountExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *aPIClient) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListUniqueExecutionPayloadEnvelopeValuesResponse) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -137,8 +180,9 @@ func (c *aPIClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUni } func (c *aPIClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -146,8 +190,9 @@ func (c *aPIClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlo } func (c *aPIClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -155,8 +200,9 @@ func (c *aPIClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadB } func (c *aPIClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -164,8 +210,9 @@ func (c *aPIClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *List } func (c *aPIClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlobRequest, opts ...grpc.CallOption) (*ListBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, API_ListBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -173,8 +220,9 @@ func (c *aPIClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlob } func (c *aPIClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBlobRequest, opts ...grpc.CallOption) (*CountBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, API_CountBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -182,8 +230,9 @@ func (c *aPIClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBl } func (c *aPIClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListUniqueBeaconBadBlobValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlobValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlobValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -191,8 +240,9 @@ func (c *aPIClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListU } func (c *aPIClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecutionBlockTraceRequest, opts ...grpc.CallOption) (*ListExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, API_ListExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -200,8 +250,9 @@ func (c *aPIClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecuti } func (c *aPIClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CountExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, API_CountExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -209,8 +260,9 @@ func (c *aPIClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecu } func (c *aPIClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in *ListUniqueExecutionBlockTraceValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBlockTraceValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBlockTraceValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -218,8 +270,9 @@ func (c *aPIClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in } func (c *aPIClient) ListExecutionBadBlock(ctx context.Context, in *ListExecutionBadBlockRequest, opts ...grpc.CallOption) (*ListExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, API_ListExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -227,8 +280,9 @@ func (c *aPIClient) ListExecutionBadBlock(ctx context.Context, in *ListExecution } func (c *aPIClient) CountExecutionBadBlock(ctx context.Context, in *CountExecutionBadBlockRequest, opts ...grpc.CallOption) (*CountExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, API_CountExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_CountExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -236,8 +290,9 @@ func (c *aPIClient) CountExecutionBadBlock(ctx context.Context, in *CountExecuti } func (c *aPIClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *ListUniqueExecutionBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBadBlockValuesResponse) - err := c.cc.Invoke(ctx, API_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, API_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -246,7 +301,7 @@ func (c *aPIClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *L // APIServer is the server API for API service. // All implementations must embed UnimplementedAPIServer -// for forward compatibility +// for forward compatibility. type APIServer interface { GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) @@ -255,6 +310,9 @@ type APIServer interface { ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) + ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) @@ -270,68 +328,81 @@ type APIServer interface { mustEmbedUnimplementedAPIServer() } -// UnimplementedAPIServer must be embedded to have forward compatible implementations. -type UnimplementedAPIServer struct { -} +// UnimplementedAPIServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedAPIServer struct{} func (UnimplementedAPIServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") + return nil, status.Error(codes.Unimplemented, "method GetConfig not implemented") } func (UnimplementedAPIServer) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconState not implemented") } func (UnimplementedAPIServer) CountBeaconState(context.Context, *CountBeaconStateRequest) (*CountBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconState not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconStateValues(context.Context, *ListUniqueBeaconStateValuesRequest) (*ListUniqueBeaconStateValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") } func (UnimplementedAPIServer) ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBlock not implemented") } func (UnimplementedAPIServer) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBlock not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") +} +func (UnimplementedAPIServer) ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListExecutionPayloadEnvelope not implemented") +} +func (UnimplementedAPIServer) CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CountExecutionPayloadEnvelope not implemented") +} +func (UnimplementedAPIServer) ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionPayloadEnvelopeValues not implemented") } func (UnimplementedAPIServer) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlock not implemented") } func (UnimplementedAPIServer) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlock not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") } func (UnimplementedAPIServer) ListBeaconBadBlob(context.Context, *ListBeaconBadBlobRequest) (*ListBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlob not implemented") } func (UnimplementedAPIServer) CountBeaconBadBlob(context.Context, *CountBeaconBadBlobRequest) (*CountBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlob not implemented") } func (UnimplementedAPIServer) ListUniqueBeaconBadBlobValues(context.Context, *ListUniqueBeaconBadBlobValuesRequest) (*ListUniqueBeaconBadBlobValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") } func (UnimplementedAPIServer) ListExecutionBlockTrace(context.Context, *ListExecutionBlockTraceRequest) (*ListExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") } func (UnimplementedAPIServer) CountExecutionBlockTrace(context.Context, *CountExecutionBlockTraceRequest) (*CountExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") } func (UnimplementedAPIServer) ListUniqueExecutionBlockTraceValues(context.Context, *ListUniqueExecutionBlockTraceValuesRequest) (*ListUniqueExecutionBlockTraceValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") } func (UnimplementedAPIServer) ListExecutionBadBlock(context.Context, *ListExecutionBadBlockRequest) (*ListExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBadBlock not implemented") } func (UnimplementedAPIServer) CountExecutionBadBlock(context.Context, *CountExecutionBadBlockRequest) (*CountExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBadBlock not implemented") } func (UnimplementedAPIServer) ListUniqueExecutionBadBlockValues(context.Context, *ListUniqueExecutionBadBlockValuesRequest) (*ListUniqueExecutionBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") } func (UnimplementedAPIServer) mustEmbedUnimplementedAPIServer() {} +func (UnimplementedAPIServer) testEmbeddedByValue() {} // UnsafeAPIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to APIServer will @@ -341,6 +412,13 @@ type UnsafeAPIServer interface { } func RegisterAPIServer(s grpc.ServiceRegistrar, srv APIServer) { + // If the following call panics, it indicates UnimplementedAPIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&API_ServiceDesc, srv) } @@ -470,6 +548,60 @@ func _API_ListUniqueBeaconBlockValues_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _API_ListExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).ListExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_ListExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).ListExecutionPayloadEnvelope(ctx, req.(*ListExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _API_CountExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).CountExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_CountExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).CountExecutionPayloadEnvelope(ctx, req.(*CountExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _API_ListUniqueExecutionPayloadEnvelopeValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUniqueExecutionPayloadEnvelopeValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(APIServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: API_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(APIServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, req.(*ListUniqueExecutionPayloadEnvelopeValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _API_ListBeaconBadBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListBeaconBadBlockRequest) if err := dec(in); err != nil { @@ -721,6 +853,18 @@ var API_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListUniqueBeaconBlockValues", Handler: _API_ListUniqueBeaconBlockValues_Handler, }, + { + MethodName: "ListExecutionPayloadEnvelope", + Handler: _API_ListExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "CountExecutionPayloadEnvelope", + Handler: _API_CountExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListUniqueExecutionPayloadEnvelopeValues", + Handler: _API_ListUniqueExecutionPayloadEnvelopeValues_Handler, + }, { MethodName: "ListBeaconBadBlock", Handler: _API_ListBeaconBadBlock_Handler, @@ -771,5 +915,5 @@ var API_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "api/api.proto", + Metadata: "pkg/proto/tracoor/api/api.proto", } diff --git a/pkg/proto/tracoor/api/config.yaml b/pkg/proto/tracoor/api/config.yaml index 029ec3a..370d755 100644 --- a/pkg/proto/tracoor/api/config.yaml +++ b/pkg/proto/tracoor/api/config.yaml @@ -25,6 +25,14 @@ http: body: "*" - selector: api.API.CountBeaconBlock post: /v1/api/count-beacon-block + - selector: api.API.ListExecutionPayloadEnvelope + post: /v1/api/list-execution-payload-envelope + body: "*" + - selector: api.API.ListUniqueExecutionPayloadEnvelopeValues + post: /v1/api/list-unique-execution-payload-envelope-values + body: "*" + - selector: api.API.CountExecutionPayloadEnvelope + post: /v1/api/count-execution-payload-envelope body: "*" - selector: api.API.ListBeaconBadBlock diff --git a/pkg/proto/tracoor/api/validate.go b/pkg/proto/tracoor/api/validate.go index 1295cfb..4b24f28 100644 --- a/pkg/proto/tracoor/api/validate.go +++ b/pkg/proto/tracoor/api/validate.go @@ -25,6 +25,16 @@ func (r *ListBeaconBlockRequest) Validate() error { return nil } +func (r *ListExecutionPayloadEnvelopeRequest) Validate() error { + if r.Pagination != nil { + if err := r.Pagination.Validate(); err != nil { + return fmt.Errorf("invalid pagination: %w", err) + } + } + + return nil +} + func (r *ListBeaconBadBlockRequest) Validate() error { if r.Pagination != nil { if err := r.Pagination.Validate(); err != nil { @@ -97,6 +107,18 @@ func (r *ListUniqueBeaconBlockValuesRequest) Validate() error { return nil } +func (r *ListUniqueExecutionPayloadEnvelopeValuesRequest) Validate() error { + if r == nil { + return errors.New("request is nil") + } + + if len(r.Fields) == 0 { + return errors.New("fields is required") + } + + return nil +} + func (r *ListUniqueBeaconBadBlockValuesRequest) Validate() error { if r == nil { return errors.New("request is nil") diff --git a/pkg/proto/tracoor/indexer/indexer.pb.go b/pkg/proto/tracoor/indexer/indexer.pb.go index 07706ac..ae754fe 100644 --- a/pkg/proto/tracoor/indexer/indexer.pb.go +++ b/pkg/proto/tracoor/indexer/indexer.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.36.6 // protoc (unknown) -// source: indexer/indexer.proto +// source: pkg/proto/tracoor/indexer/indexer.proto package indexer @@ -13,6 +13,7 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -70,11 +71,11 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) String() string { } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[0].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[0].Descriptor() } func (ListUniqueExecutionBlockTraceValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[0] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[0] } func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -83,7 +84,7 @@ func (x ListUniqueExecutionBlockTraceValuesRequest_Field) Number() protoreflect. // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBlockTraceValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{30, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{33, 0} } type ListUniqueBeaconStateValuesRequest_Field int32 @@ -134,11 +135,11 @@ func (x ListUniqueBeaconStateValuesRequest_Field) String() string { } func (ListUniqueBeaconStateValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[1].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[1].Descriptor() } func (ListUniqueBeaconStateValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[1] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[1] } func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -147,7 +148,7 @@ func (x ListUniqueBeaconStateValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconStateValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconStateValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{32, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{35, 0} } type ListUniqueBeaconBlockValuesRequest_Field int32 @@ -198,11 +199,11 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[2].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[2].Descriptor() } func (ListUniqueBeaconBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[2] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[2] } func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -211,7 +212,7 @@ func (x ListUniqueBeaconBlockValuesRequest_Field) Number() protoreflect.EnumNumb // Deprecated: Use ListUniqueBeaconBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{38, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{41, 0} } type ListUniqueBeaconBadBlockValuesRequest_Field int32 @@ -262,11 +263,11 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[3].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[3].Descriptor() } func (ListUniqueBeaconBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[3] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[3] } func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -275,7 +276,71 @@ func (x ListUniqueBeaconBadBlockValuesRequest_Field) Number() protoreflect.EnumN // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{44, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{47, 0} +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest_Field int32 + +const ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 0 + ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 1 + ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 2 + ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 3 + ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 4 + ListUniqueExecutionPayloadEnvelopeValuesRequest_LOCATION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 5 + ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 6 + ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION ListUniqueExecutionPayloadEnvelopeValuesRequest_Field = 7 +) + +// Enum value maps for ListUniqueExecutionPayloadEnvelopeValuesRequest_Field. +var ( + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_name = map[int32]string{ + 0: "NODE", + 1: "SLOT", + 2: "EPOCH", + 3: "BLOCK_ROOT", + 4: "NODE_VERSION", + 5: "LOCATION", + 6: "NETWORK", + 7: "BEACON_IMPLEMENTATION", + } + ListUniqueExecutionPayloadEnvelopeValuesRequest_Field_value = map[string]int32{ + "NODE": 0, + "SLOT": 1, + "EPOCH": 2, + "BLOCK_ROOT": 3, + "NODE_VERSION": 4, + "LOCATION": 5, + "NETWORK": 6, + "BEACON_IMPLEMENTATION": 7, + } +) + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Enum() *ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + p := new(ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) + *p = x + return p +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[4].Descriptor() +} + +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Type() protoreflect.EnumType { + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[4] +} + +func (x ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest_Field.Descriptor instead. +func (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field) EnumDescriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{49, 0} } type ListUniqueBeaconBadBlobValuesRequest_Field int32 @@ -329,11 +394,11 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) String() string { } func (ListUniqueBeaconBadBlobValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[4].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[5].Descriptor() } func (ListUniqueBeaconBadBlobValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[4] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[5] } func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -342,7 +407,7 @@ func (x ListUniqueBeaconBadBlobValuesRequest_Field) Number() protoreflect.EnumNu // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest_Field.Descriptor instead. func (ListUniqueBeaconBadBlobValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{50, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{59, 0} } type ListUniqueExecutionBadBlockValuesRequest_Field int32 @@ -396,11 +461,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) String() string { } func (ListUniqueExecutionBadBlockValuesRequest_Field) Descriptor() protoreflect.EnumDescriptor { - return file_indexer_indexer_proto_enumTypes[5].Descriptor() + return file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[6].Descriptor() } func (ListUniqueExecutionBadBlockValuesRequest_Field) Type() protoreflect.EnumType { - return &file_indexer_indexer_proto_enumTypes[5] + return &file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes[6] } func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.EnumNumber { @@ -409,14 +474,11 @@ func (x ListUniqueExecutionBadBlockValuesRequest_Field) Number() protoreflect.En // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest_Field.Descriptor instead. func (ListUniqueExecutionBadBlockValuesRequest_Field) EnumDescriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{63, 0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{72, 0} } type BeaconState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -428,15 +490,15 @@ type BeaconState struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconState) Reset() { *x = BeaconState{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconState) String() string { @@ -446,8 +508,8 @@ func (x *BeaconState) String() string { func (*BeaconState) ProtoMessage() {} func (x *BeaconState) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[0] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -459,7 +521,7 @@ func (x *BeaconState) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconState.ProtoReflect.Descriptor instead. func (*BeaconState) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{0} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{0} } func (x *BeaconState) GetId() *wrapperspb.StringValue { @@ -540,10 +602,7 @@ func (x *BeaconState) GetContentEncoding() *wrapperspb.StringValue { } type BeaconBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -555,15 +614,15 @@ type BeaconBlock struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBlock) Reset() { *x = BeaconBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBlock) String() string { @@ -573,8 +632,8 @@ func (x *BeaconBlock) String() string { func (*BeaconBlock) ProtoMessage() {} func (x *BeaconBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[1] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -586,7 +645,7 @@ func (x *BeaconBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBlock.ProtoReflect.Descriptor instead. func (*BeaconBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{1} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{1} } func (x *BeaconBlock) GetId() *wrapperspb.StringValue { @@ -666,11 +725,132 @@ func (x *BeaconBlock) GetContentEncoding() *wrapperspb.StringValue { return nil } -type BeaconBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type ExecutionPayloadEnvelope struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=location,proto3" json:"location,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionPayloadEnvelope) Reset() { + *x = ExecutionPayloadEnvelope{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionPayloadEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionPayloadEnvelope) ProtoMessage() {} + +func (x *ExecutionPayloadEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionPayloadEnvelope.ProtoReflect.Descriptor instead. +func (*ExecutionPayloadEnvelope) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{2} +} + +func (x *ExecutionPayloadEnvelope) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} +func (x *ExecutionPayloadEnvelope) GetLocation() *wrapperspb.StringValue { + if x != nil { + return x.Location + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +func (x *ExecutionPayloadEnvelope) GetContentEncoding() *wrapperspb.StringValue { + if x != nil { + return x.ContentEncoding + } + return nil +} + +type BeaconBadBlock struct { + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -682,15 +862,15 @@ type BeaconBadBlock struct { Network *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlock) Reset() { *x = BeaconBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlock) String() string { @@ -700,8 +880,8 @@ func (x *BeaconBadBlock) String() string { func (*BeaconBadBlock) ProtoMessage() {} func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[3] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -713,7 +893,7 @@ func (x *BeaconBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlock.ProtoReflect.Descriptor instead. func (*BeaconBadBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{2} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{3} } func (x *BeaconBadBlock) GetId() *wrapperspb.StringValue { @@ -794,10 +974,7 @@ func (x *BeaconBadBlock) GetContentEncoding() *wrapperspb.StringValue { } type BeaconBadBlob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -810,15 +987,15 @@ type BeaconBadBlob struct { BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,11,opt,name=index,proto3" json:"index,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,12,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeaconBadBlob) Reset() { *x = BeaconBadBlob{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BeaconBadBlob) String() string { @@ -828,8 +1005,8 @@ func (x *BeaconBadBlob) String() string { func (*BeaconBadBlob) ProtoMessage() {} func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[4] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -841,7 +1018,7 @@ func (x *BeaconBadBlob) ProtoReflect() protoreflect.Message { // Deprecated: Use BeaconBadBlob.ProtoReflect.Descriptor instead. func (*BeaconBadBlob) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{3} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{4} } func (x *BeaconBadBlob) GetId() *wrapperspb.StringValue { @@ -929,10 +1106,7 @@ func (x *BeaconBadBlob) GetContentEncoding() *wrapperspb.StringValue { } type ExecutionBlockTrace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -943,15 +1117,15 @@ type ExecutionBlockTrace struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBlockTrace) Reset() { *x = ExecutionBlockTrace{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBlockTrace) String() string { @@ -961,8 +1135,8 @@ func (x *ExecutionBlockTrace) String() string { func (*ExecutionBlockTrace) ProtoMessage() {} func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[5] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -974,7 +1148,7 @@ func (x *ExecutionBlockTrace) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBlockTrace.ProtoReflect.Descriptor instead. func (*ExecutionBlockTrace) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{4} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{5} } func (x *ExecutionBlockTrace) GetId() *wrapperspb.StringValue { @@ -1048,10 +1222,7 @@ func (x *ExecutionBlockTrace) GetContentEncoding() *wrapperspb.StringValue { } type ExecutionBadBlock struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Node *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` @@ -1063,15 +1234,15 @@ type ExecutionBadBlock struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecutionBadBlock) Reset() { *x = ExecutionBadBlock{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExecutionBadBlock) String() string { @@ -1081,8 +1252,8 @@ func (x *ExecutionBadBlock) String() string { func (*ExecutionBadBlock) ProtoMessage() {} func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[6] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1094,7 +1265,7 @@ func (x *ExecutionBadBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionBadBlock.ProtoReflect.Descriptor instead. func (*ExecutionBadBlock) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{5} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{6} } func (x *ExecutionBadBlock) GetId() *wrapperspb.StringValue { @@ -1175,20 +1346,17 @@ func (x *ExecutionBadBlock) GetContentEncoding() *wrapperspb.StringValue { } type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` unknownFields protoimpl.UnknownFields - - Ethereum *EthereumConfig `protobuf:"bytes,1,opt,name=ethereum,proto3" json:"ethereum,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -1198,8 +1366,8 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[7] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1211,7 +1379,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{6} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{7} } func (x *Config) GetEthereum() *EthereumConfig { @@ -1222,22 +1390,19 @@ func (x *Config) GetEthereum() *EthereumConfig { } type EthereumConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Network *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` + Config *EthereumNetworkConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + Tools *ToolsConfig `protobuf:"bytes,3,opt,name=tools,proto3" json:"tools,omitempty"` unknownFields protoimpl.UnknownFields - - Network *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` - Config *EthereumNetworkConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - Tools *ToolsConfig `protobuf:"bytes,3,opt,name=tools,proto3" json:"tools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumConfig) Reset() { *x = EthereumConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumConfig) String() string { @@ -1247,8 +1412,8 @@ func (x *EthereumConfig) String() string { func (*EthereumConfig) ProtoMessage() {} func (x *EthereumConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[8] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1260,7 +1425,7 @@ func (x *EthereumConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumConfig.ProtoReflect.Descriptor instead. func (*EthereumConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{7} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{8} } func (x *EthereumConfig) GetNetwork() *wrapperspb.StringValue { @@ -1285,22 +1450,19 @@ func (x *EthereumConfig) GetTools() *ToolsConfig { } type EthereumNetworkConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Path *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Path *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EthereumNetworkConfig) Reset() { *x = EthereumNetworkConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EthereumNetworkConfig) String() string { @@ -1310,8 +1472,8 @@ func (x *EthereumNetworkConfig) String() string { func (*EthereumNetworkConfig) ProtoMessage() {} func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[9] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1323,7 +1485,7 @@ func (x *EthereumNetworkConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use EthereumNetworkConfig.ProtoReflect.Descriptor instead. func (*EthereumNetworkConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{8} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{9} } func (x *EthereumNetworkConfig) GetRepository() *wrapperspb.StringValue { @@ -1348,22 +1510,19 @@ func (x *EthereumNetworkConfig) GetPath() *wrapperspb.StringValue { } type ToolsConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` + Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` + Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` unknownFields protoimpl.UnknownFields - - Ncli *GitRepositoryConfig `protobuf:"bytes,1,opt,name=ncli,proto3" json:"ncli,omitempty"` - Lcli *GitRepositoryConfig `protobuf:"bytes,2,opt,name=lcli,proto3" json:"lcli,omitempty"` - Zcli *ZcliConfig `protobuf:"bytes,3,opt,name=zcli,proto3" json:"zcli,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToolsConfig) Reset() { *x = ToolsConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToolsConfig) String() string { @@ -1373,8 +1532,8 @@ func (x *ToolsConfig) String() string { func (*ToolsConfig) ProtoMessage() {} func (x *ToolsConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1386,7 +1545,7 @@ func (x *ToolsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ToolsConfig.ProtoReflect.Descriptor instead. func (*ToolsConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{9} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{10} } func (x *ToolsConfig) GetNcli() *GitRepositoryConfig { @@ -1411,21 +1570,18 @@ func (x *ToolsConfig) GetZcli() *ZcliConfig { } type GitRepositoryConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` + Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` unknownFields protoimpl.UnknownFields - - Repository *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - Branch *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GitRepositoryConfig) Reset() { *x = GitRepositoryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GitRepositoryConfig) String() string { @@ -1435,8 +1591,8 @@ func (x *GitRepositoryConfig) String() string { func (*GitRepositoryConfig) ProtoMessage() {} func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1448,7 +1604,7 @@ func (x *GitRepositoryConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRepositoryConfig.ProtoReflect.Descriptor instead. func (*GitRepositoryConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{10} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{11} } func (x *GitRepositoryConfig) GetRepository() *wrapperspb.StringValue { @@ -1466,20 +1622,17 @@ func (x *GitRepositoryConfig) GetBranch() *wrapperspb.StringValue { } type ZcliConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fork *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` unknownFields protoimpl.UnknownFields - - Fork *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=fork,proto3" json:"fork,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ZcliConfig) Reset() { *x = ZcliConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ZcliConfig) String() string { @@ -1489,8 +1642,8 @@ func (x *ZcliConfig) String() string { func (*ZcliConfig) ProtoMessage() {} func (x *ZcliConfig) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1502,7 +1655,7 @@ func (x *ZcliConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ZcliConfig.ProtoReflect.Descriptor instead. func (*ZcliConfig) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{11} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{12} } func (x *ZcliConfig) GetFork() *wrapperspb.StringValue { @@ -1513,18 +1666,16 @@ func (x *ZcliConfig) GetFork() *wrapperspb.StringValue { } type GetConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigRequest) Reset() { *x = GetConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigRequest) String() string { @@ -1534,8 +1685,8 @@ func (x *GetConfigRequest) String() string { func (*GetConfigRequest) ProtoMessage() {} func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1547,24 +1698,21 @@ func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{12} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{13} } type GetConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetConfigResponse) Reset() { *x = GetConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigResponse) String() string { @@ -1574,8 +1722,8 @@ func (x *GetConfigResponse) String() string { func (*GetConfigResponse) ProtoMessage() {} func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1587,7 +1735,7 @@ func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{13} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{14} } func (x *GetConfigResponse) GetConfig() *Config { @@ -1598,21 +1746,18 @@ func (x *GetConfigResponse) GetConfig() *Config { } type GetStorageHandshakeTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetStorageHandshakeTokenRequest) Reset() { *x = GetStorageHandshakeTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageHandshakeTokenRequest) String() string { @@ -1622,8 +1767,8 @@ func (x *GetStorageHandshakeTokenRequest) String() string { func (*GetStorageHandshakeTokenRequest) ProtoMessage() {} func (x *GetStorageHandshakeTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1635,7 +1780,7 @@ func (x *GetStorageHandshakeTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStorageHandshakeTokenRequest.ProtoReflect.Descriptor instead. func (*GetStorageHandshakeTokenRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{14} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{15} } func (x *GetStorageHandshakeTokenRequest) GetNode() string { @@ -1653,20 +1798,17 @@ func (x *GetStorageHandshakeTokenRequest) GetToken() string { } type GetStorageHandshakeTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetStorageHandshakeTokenResponse) Reset() { *x = GetStorageHandshakeTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetStorageHandshakeTokenResponse) String() string { @@ -1676,8 +1818,8 @@ func (x *GetStorageHandshakeTokenResponse) String() string { func (*GetStorageHandshakeTokenResponse) ProtoMessage() {} func (x *GetStorageHandshakeTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1689,7 +1831,7 @@ func (x *GetStorageHandshakeTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStorageHandshakeTokenResponse.ProtoReflect.Descriptor instead. func (*GetStorageHandshakeTokenResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{15} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{16} } func (x *GetStorageHandshakeTokenResponse) GetToken() string { @@ -1700,10 +1842,7 @@ func (x *GetStorageHandshakeTokenResponse) GetToken() string { } type CreateBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -1714,15 +1853,15 @@ type CreateBeaconStateRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconStateRequest) Reset() { *x = CreateBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconStateRequest) String() string { @@ -1732,8 +1871,8 @@ func (x *CreateBeaconStateRequest) String() string { func (*CreateBeaconStateRequest) ProtoMessage() {} func (x *CreateBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1745,7 +1884,7 @@ func (x *CreateBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{16} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{17} } func (x *CreateBeaconStateRequest) GetNode() *wrapperspb.StringValue { @@ -1819,20 +1958,17 @@ func (x *CreateBeaconStateRequest) GetContentEncoding() *wrapperspb.StringValue } type CreateBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconStateResponse) Reset() { *x = CreateBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconStateResponse) String() string { @@ -1842,8 +1978,8 @@ func (x *CreateBeaconStateResponse) String() string { func (*CreateBeaconStateResponse) ProtoMessage() {} func (x *CreateBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1855,7 +1991,7 @@ func (x *CreateBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{17} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{18} } func (x *CreateBeaconStateResponse) GetId() *wrapperspb.StringValue { @@ -1866,10 +2002,7 @@ func (x *CreateBeaconStateResponse) GetId() *wrapperspb.StringValue { } type CreateBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -1880,15 +2013,15 @@ type CreateBeaconBlockRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBlockRequest) Reset() { *x = CreateBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBlockRequest) String() string { @@ -1898,8 +2031,8 @@ func (x *CreateBeaconBlockRequest) String() string { func (*CreateBeaconBlockRequest) ProtoMessage() {} func (x *CreateBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1911,7 +2044,7 @@ func (x *CreateBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{18} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{19} } func (x *CreateBeaconBlockRequest) GetNode() *wrapperspb.StringValue { @@ -1985,20 +2118,17 @@ func (x *CreateBeaconBlockRequest) GetContentEncoding() *wrapperspb.StringValue } type CreateBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBlockResponse) Reset() { *x = CreateBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBlockResponse) String() string { @@ -2008,8 +2138,8 @@ func (x *CreateBeaconBlockResponse) String() string { func (*CreateBeaconBlockResponse) ProtoMessage() {} func (x *CreateBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2021,7 +2151,7 @@ func (x *CreateBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{19} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{20} } func (x *CreateBeaconBlockResponse) GetId() *wrapperspb.StringValue { @@ -2031,11 +2161,168 @@ func (x *CreateBeaconBlockResponse) GetId() *wrapperspb.StringValue { return nil } -type CreateBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type CreateExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` + Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch *wrapperspb.UInt64Value `protobuf:"bytes,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=location,proto3" json:"location,omitempty"` + Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` + BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateExecutionPayloadEnvelopeRequest) Reset() { + *x = CreateExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *CreateExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CreateExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{21} +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNode() *wrapperspb.StringValue { + if x != nil { + return x.Node + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetFetchedAt() *timestamppb.Timestamp { + if x != nil { + return x.FetchedAt + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetSlot() *wrapperspb.UInt64Value { + if x != nil { + return x.Slot + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetEpoch() *wrapperspb.UInt64Value { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetBlockRoot() *wrapperspb.StringValue { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNodeVersion() *wrapperspb.StringValue { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetLocation() *wrapperspb.StringValue { + if x != nil { + return x.Location + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetNetwork() *wrapperspb.StringValue { + if x != nil { + return x.Network + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetBeaconImplementation() *wrapperspb.StringValue { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +func (x *CreateExecutionPayloadEnvelopeRequest) GetContentEncoding() *wrapperspb.StringValue { + if x != nil { + return x.ContentEncoding + } + return nil +} + +type CreateExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateExecutionPayloadEnvelopeResponse) Reset() { + *x = CreateExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *CreateExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CreateExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{22} +} + +func (x *CreateExecutionPayloadEnvelopeResponse) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} +type CreateBeaconBadBlockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -2046,15 +2333,15 @@ type CreateBeaconBadBlockRequest struct { Network *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=network,proto3" json:"network,omitempty"` BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlockRequest) Reset() { *x = CreateBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlockRequest) String() string { @@ -2064,8 +2351,8 @@ func (x *CreateBeaconBadBlockRequest) String() string { func (*CreateBeaconBadBlockRequest) ProtoMessage() {} func (x *CreateBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2077,7 +2364,7 @@ func (x *CreateBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{20} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{23} } func (x *CreateBeaconBadBlockRequest) GetNode() *wrapperspb.StringValue { @@ -2151,20 +2438,17 @@ func (x *CreateBeaconBadBlockRequest) GetContentEncoding() *wrapperspb.StringVal } type CreateBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlockResponse) Reset() { *x = CreateBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlockResponse) String() string { @@ -2174,8 +2458,8 @@ func (x *CreateBeaconBadBlockResponse) String() string { func (*CreateBeaconBadBlockResponse) ProtoMessage() {} func (x *CreateBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2187,7 +2471,7 @@ func (x *CreateBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{21} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{24} } func (x *CreateBeaconBadBlockResponse) GetId() *wrapperspb.StringValue { @@ -2198,10 +2482,7 @@ func (x *CreateBeaconBadBlockResponse) GetId() *wrapperspb.StringValue { } type CreateBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` Slot *wrapperspb.UInt64Value `protobuf:"bytes,3,opt,name=slot,proto3" json:"slot,omitempty"` @@ -2213,15 +2494,15 @@ type CreateBeaconBadBlobRequest struct { BeaconImplementation *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,10,opt,name=index,proto3" json:"index,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,11,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlobRequest) Reset() { *x = CreateBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlobRequest) String() string { @@ -2231,8 +2512,8 @@ func (x *CreateBeaconBadBlobRequest) String() string { func (*CreateBeaconBadBlobRequest) ProtoMessage() {} func (x *CreateBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2244,7 +2525,7 @@ func (x *CreateBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{22} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{25} } func (x *CreateBeaconBadBlobRequest) GetNode() *wrapperspb.StringValue { @@ -2325,20 +2606,17 @@ func (x *CreateBeaconBadBlobRequest) GetContentEncoding() *wrapperspb.StringValu } type CreateBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBeaconBadBlobResponse) Reset() { *x = CreateBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBeaconBadBlobResponse) String() string { @@ -2348,8 +2626,8 @@ func (x *CreateBeaconBadBlobResponse) String() string { func (*CreateBeaconBadBlobResponse) ProtoMessage() {} func (x *CreateBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2361,7 +2639,7 @@ func (x *CreateBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CreateBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{23} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{26} } func (x *CreateBeaconBadBlobResponse) GetId() *wrapperspb.StringValue { @@ -2372,10 +2650,7 @@ func (x *CreateBeaconBadBlobResponse) GetId() *wrapperspb.StringValue { } type CreateExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` BlockHash *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2385,15 +2660,15 @@ type CreateExecutionBlockTraceRequest struct { ExecutionImplementation *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBlockTraceRequest) Reset() { *x = CreateExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBlockTraceRequest) String() string { @@ -2403,8 +2678,8 @@ func (x *CreateExecutionBlockTraceRequest) String() string { func (*CreateExecutionBlockTraceRequest) ProtoMessage() {} func (x *CreateExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2416,7 +2691,7 @@ func (x *CreateExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CreateExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{24} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{27} } func (x *CreateExecutionBlockTraceRequest) GetNode() *wrapperspb.StringValue { @@ -2483,20 +2758,17 @@ func (x *CreateExecutionBlockTraceRequest) GetContentEncoding() *wrapperspb.Stri } type CreateExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBlockTraceResponse) Reset() { *x = CreateExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBlockTraceResponse) String() string { @@ -2506,8 +2778,8 @@ func (x *CreateExecutionBlockTraceResponse) String() string { func (*CreateExecutionBlockTraceResponse) ProtoMessage() {} func (x *CreateExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2519,7 +2791,7 @@ func (x *CreateExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message // Deprecated: Use CreateExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CreateExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{25} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{28} } func (x *CreateExecutionBlockTraceResponse) GetId() *wrapperspb.StringValue { @@ -2530,10 +2802,7 @@ func (x *CreateExecutionBlockTraceResponse) GetId() *wrapperspb.StringValue { } type ListExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2545,15 +2814,15 @@ type ListExecutionBlockTraceRequest struct { Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceRequest) Reset() { *x = ListExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceRequest) String() string { @@ -2563,8 +2832,8 @@ func (x *ListExecutionBlockTraceRequest) String() string { func (*ListExecutionBlockTraceRequest) ProtoMessage() {} func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2576,7 +2845,7 @@ func (x *ListExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{26} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{29} } func (x *ListExecutionBlockTraceRequest) GetNode() string { @@ -2657,20 +2926,17 @@ func (x *ListExecutionBlockTraceRequest) GetNodeVersion() string { } type ListExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ExecutionBlockTraces []*ExecutionBlockTrace `protobuf:"bytes,1,rep,name=execution_block_traces,json=executionBlockTraces,proto3" json:"execution_block_traces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBlockTraceResponse) Reset() { *x = ListExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBlockTraceResponse) String() string { @@ -2680,8 +2946,8 @@ func (x *ListExecutionBlockTraceResponse) String() string { func (*ListExecutionBlockTraceResponse) ProtoMessage() {} func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2693,7 +2959,7 @@ func (x *ListExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{27} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{30} } func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*ExecutionBlockTrace { @@ -2704,10 +2970,7 @@ func (x *ListExecutionBlockTraceResponse) GetExecutionBlockTraces() []*Execution } type CountExecutionBlockTraceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -2717,15 +2980,15 @@ type CountExecutionBlockTraceRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=after,proto3" json:"after,omitempty"` ExecutionImplementation string `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceRequest) Reset() { *x = CountExecutionBlockTraceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceRequest) String() string { @@ -2735,8 +2998,8 @@ func (x *CountExecutionBlockTraceRequest) String() string { func (*CountExecutionBlockTraceRequest) ProtoMessage() {} func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2748,7 +3011,7 @@ func (x *CountExecutionBlockTraceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{28} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{31} } func (x *CountExecutionBlockTraceRequest) GetNode() string { @@ -2815,20 +3078,17 @@ func (x *CountExecutionBlockTraceRequest) GetNodeVersion() string { } type CountExecutionBlockTraceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBlockTraceResponse) Reset() { *x = CountExecutionBlockTraceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBlockTraceResponse) String() string { @@ -2838,8 +3098,8 @@ func (x *CountExecutionBlockTraceResponse) String() string { func (*CountExecutionBlockTraceResponse) ProtoMessage() {} func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2851,7 +3111,7 @@ func (x *CountExecutionBlockTraceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBlockTraceResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBlockTraceResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{29} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{32} } func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { @@ -2862,20 +3122,17 @@ func (x *CountExecutionBlockTraceResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBlockTraceValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBlockTraceValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBlockTraceValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesRequest) Reset() { *x = ListUniqueExecutionBlockTraceValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { @@ -2885,8 +3142,8 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) String() string { func (*ListUniqueExecutionBlockTraceValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2898,7 +3155,7 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) ProtoReflect() protoreflect // Deprecated: Use ListUniqueExecutionBlockTraceValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{30} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{33} } func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExecutionBlockTraceValuesRequest_Field { @@ -2909,27 +3166,24 @@ func (x *ListUniqueExecutionBlockTraceValuesRequest) GetFields() []ListUniqueExe } type ListUniqueExecutionBlockTraceValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` - Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` - NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` + NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBlockTraceValuesResponse) Reset() { *x = ListUniqueExecutionBlockTraceValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { @@ -2939,8 +3193,8 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) String() string { func (*ListUniqueExecutionBlockTraceValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2952,7 +3206,7 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) ProtoReflect() protoreflec // Deprecated: Use ListUniqueExecutionBlockTraceValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBlockTraceValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{31} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{34} } func (x *ListUniqueExecutionBlockTraceValuesResponse) GetNode() []string { @@ -3012,20 +3266,17 @@ func (x *ListUniqueExecutionBlockTraceValuesResponse) GetClientVersion() []strin } type ListUniqueBeaconStateValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconStateValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconStateValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesRequest) Reset() { *x = ListUniqueBeaconStateValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesRequest) String() string { @@ -3035,8 +3286,8 @@ func (x *ListUniqueBeaconStateValuesRequest) String() string { func (*ListUniqueBeaconStateValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3048,7 +3299,7 @@ func (x *ListUniqueBeaconStateValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconStateValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{32} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{35} } func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconStateValuesRequest_Field { @@ -3059,27 +3310,24 @@ func (x *ListUniqueBeaconStateValuesRequest) GetFields() []ListUniqueBeaconState } type ListUniqueBeaconStateValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - StateRoot []string `protobuf:"bytes,4,rep,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + StateRoot []string `protobuf:"bytes,4,rep,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconStateValuesResponse) Reset() { *x = ListUniqueBeaconStateValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconStateValuesResponse) String() string { @@ -3089,8 +3337,8 @@ func (x *ListUniqueBeaconStateValuesResponse) String() string { func (*ListUniqueBeaconStateValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3102,7 +3350,7 @@ func (x *ListUniqueBeaconStateValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconStateValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconStateValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{33} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{36} } func (x *ListUniqueBeaconStateValuesResponse) GetNode() []string { @@ -3162,10 +3410,7 @@ func (x *ListUniqueBeaconStateValuesResponse) GetBeaconImplementation() []string } type ListBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3178,15 +3423,15 @@ type ListBeaconStateRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateRequest) Reset() { *x = ListBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateRequest) String() string { @@ -3196,8 +3441,8 @@ func (x *ListBeaconStateRequest) String() string { func (*ListBeaconStateRequest) ProtoMessage() {} func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3209,7 +3454,7 @@ func (x *ListBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateRequest.ProtoReflect.Descriptor instead. func (*ListBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{34} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{37} } func (x *ListBeaconStateRequest) GetNode() string { @@ -3297,20 +3542,17 @@ func (x *ListBeaconStateRequest) GetBeaconImplementation() string { } type ListBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,json=beaconStates,proto3" json:"beacon_states,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconStates []*BeaconState `protobuf:"bytes,1,rep,name=beacon_states,json=beaconStates,proto3" json:"beacon_states,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconStateResponse) Reset() { *x = ListBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconStateResponse) String() string { @@ -3320,8 +3562,8 @@ func (x *ListBeaconStateResponse) String() string { func (*ListBeaconStateResponse) ProtoMessage() {} func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3333,7 +3575,7 @@ func (x *ListBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconStateResponse.ProtoReflect.Descriptor instead. func (*ListBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{35} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{38} } func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { @@ -3344,10 +3586,7 @@ func (x *ListBeaconStateResponse) GetBeaconStates() []*BeaconState { } type CountBeaconStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3359,15 +3598,15 @@ type CountBeaconStateRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateRequest) Reset() { *x = CountBeaconStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateRequest) String() string { @@ -3377,8 +3616,8 @@ func (x *CountBeaconStateRequest) String() string { func (*CountBeaconStateRequest) ProtoMessage() {} func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3390,7 +3629,7 @@ func (x *CountBeaconStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateRequest.ProtoReflect.Descriptor instead. func (*CountBeaconStateRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{36} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{39} } func (x *CountBeaconStateRequest) GetNode() string { @@ -3471,20 +3710,17 @@ func (x *CountBeaconStateRequest) GetId() string { } type CountBeaconStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconStateResponse) Reset() { *x = CountBeaconStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconStateResponse) String() string { @@ -3494,8 +3730,8 @@ func (x *CountBeaconStateResponse) String() string { func (*CountBeaconStateResponse) ProtoMessage() {} func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3507,7 +3743,7 @@ func (x *CountBeaconStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconStateResponse.ProtoReflect.Descriptor instead. func (*CountBeaconStateResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{37} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{40} } func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { @@ -3518,20 +3754,17 @@ func (x *CountBeaconStateResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBlockValuesRequest) Reset() { *x = ListUniqueBeaconBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBlockValuesRequest) String() string { @@ -3541,8 +3774,8 @@ func (x *ListUniqueBeaconBlockValuesRequest) String() string { func (*ListUniqueBeaconBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3554,7 +3787,7 @@ func (x *ListUniqueBeaconBlockValuesRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListUniqueBeaconBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{38} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{41} } func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlockValuesRequest_Field { @@ -3565,27 +3798,24 @@ func (x *ListUniqueBeaconBlockValuesRequest) GetFields() []ListUniqueBeaconBlock } type ListUniqueBeaconBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBlockValuesResponse) Reset() { *x = ListUniqueBeaconBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBlockValuesResponse) String() string { @@ -3595,8 +3825,8 @@ func (x *ListUniqueBeaconBlockValuesResponse) String() string { func (*ListUniqueBeaconBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3608,7 +3838,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListUniqueBeaconBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{39} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{42} } func (x *ListUniqueBeaconBlockValuesResponse) GetNode() []string { @@ -3668,10 +3898,7 @@ func (x *ListUniqueBeaconBlockValuesResponse) GetBeaconImplementation() []string } type ListBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3684,15 +3911,15 @@ type ListBeaconBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockRequest) Reset() { *x = ListBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockRequest) String() string { @@ -3702,8 +3929,8 @@ func (x *ListBeaconBlockRequest) String() string { func (*ListBeaconBlockRequest) ProtoMessage() {} func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3715,7 +3942,7 @@ func (x *ListBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{40} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{43} } func (x *ListBeaconBlockRequest) GetNode() string { @@ -3803,20 +4030,17 @@ func (x *ListBeaconBlockRequest) GetBeaconImplementation() string { } type ListBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,json=beaconBlocks,proto3" json:"beacon_blocks,omitempty"` unknownFields protoimpl.UnknownFields - - BeaconBlocks []*BeaconBlock `protobuf:"bytes,1,rep,name=beacon_blocks,json=beaconBlocks,proto3" json:"beacon_blocks,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListBeaconBlockResponse) Reset() { *x = ListBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBlockResponse) String() string { @@ -3826,8 +4050,8 @@ func (x *ListBeaconBlockResponse) String() string { func (*ListBeaconBlockResponse) ProtoMessage() {} func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3839,7 +4063,7 @@ func (x *ListBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{41} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{44} } func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { @@ -3850,10 +4074,7 @@ func (x *ListBeaconBlockResponse) GetBeaconBlocks() []*BeaconBlock { } type CountBeaconBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -3865,15 +4086,15 @@ type CountBeaconBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockRequest) Reset() { *x = CountBeaconBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockRequest) String() string { @@ -3883,8 +4104,8 @@ func (x *CountBeaconBlockRequest) String() string { func (*CountBeaconBlockRequest) ProtoMessage() {} func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3896,7 +4117,7 @@ func (x *CountBeaconBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{42} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{45} } func (x *CountBeaconBlockRequest) GetNode() string { @@ -3977,20 +4198,17 @@ func (x *CountBeaconBlockRequest) GetId() string { } type CountBeaconBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBlockResponse) Reset() { *x = CountBeaconBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBlockResponse) String() string { @@ -4000,8 +4218,8 @@ func (x *CountBeaconBlockResponse) String() string { func (*CountBeaconBlockResponse) ProtoMessage() {} func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4013,7 +4231,7 @@ func (x *CountBeaconBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{43} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{46} } func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4024,20 +4242,17 @@ func (x *CountBeaconBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesRequest) Reset() { *x = ListUniqueBeaconBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { @@ -4047,8 +4262,8 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) String() string { func (*ListUniqueBeaconBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4060,7 +4275,7 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{44} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{47} } func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBadBlockValuesRequest_Field { @@ -4071,38 +4286,458 @@ func (x *ListUniqueBeaconBadBlockValuesRequest) GetFields() []ListUniqueBeaconBa } type ListUniqueBeaconBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlockValuesResponse) Reset() { *x = ListUniqueBeaconBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[45] + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} + +func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{48} +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetLocation() []string { + if x != nil { + return x.Location + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListUniqueExecutionPayloadEnvelopeValuesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoMessage() {} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesRequest.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{49} +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesRequest) GetFields() []ListUniqueExecutionPayloadEnvelopeValuesRequest_Field { + if x != nil { + return x.Fields + } + return nil +} + +type ListUniqueExecutionPayloadEnvelopeValuesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) Reset() { + *x = ListUniqueExecutionPayloadEnvelopeValuesResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoMessage() {} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUniqueExecutionPayloadEnvelopeValuesResponse.ProtoReflect.Descriptor instead. +func (*ListUniqueExecutionPayloadEnvelopeValuesResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{50} +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNode() []string { + if x != nil { + return x.Node + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetSlot() []uint64 { + if x != nil { + return x.Slot + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetEpoch() []uint64 { + if x != nil { + return x.Epoch + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBlockRoot() []string { + if x != nil { + return x.BlockRoot + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNodeVersion() []string { + if x != nil { + return x.NodeVersion + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetLocation() []string { + if x != nil { + return x.Location + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetNetwork() []string { + if x != nil { + return x.Network + } + return nil +} + +func (x *ListUniqueExecutionPayloadEnvelopeValuesResponse) GetBeaconImplementation() []string { + if x != nil { + return x.BeaconImplementation + } + return nil +} + +type ListExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + Network string `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeRequest) Reset() { + *x = ListExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeRequest) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{51} +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNode() string { + if x != nil { + return x.Node + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBlockRoot() string { + if x != nil { + return x.BlockRoot + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetPagination() *PaginationCursor { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +type ListExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope `protobuf:"bytes,1,rep,name=execution_payload_envelopes,json=executionPayloadEnvelopes,proto3" json:"execution_payload_envelopes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListExecutionPayloadEnvelopeResponse) Reset() { + *x = ListExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *ListExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*ListExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{52} +} + +func (x *ListExecutionPayloadEnvelopeResponse) GetExecutionPayloadEnvelopes() []*ExecutionPayloadEnvelope { + if x != nil { + return x.ExecutionPayloadEnvelopes + } + return nil +} + +type CountExecutionPayloadEnvelopeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot string `protobuf:"bytes,4,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + Network string `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=before,proto3" json:"before,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` + BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListUniqueBeaconBadBlockValuesResponse) String() string { +func (x *CountExecutionPayloadEnvelopeRequest) Reset() { + *x = CountExecutionPayloadEnvelopeRequest{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListUniqueBeaconBadBlockValuesResponse) ProtoMessage() {} +func (*CountExecutionPayloadEnvelopeRequest) ProtoMessage() {} -func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { +func (x *CountExecutionPayloadEnvelopeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4112,72 +4747,134 @@ func (x *ListUniqueBeaconBadBlockValuesResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use ListUniqueBeaconBadBlockValuesResponse.ProtoReflect.Descriptor instead. -func (*ListUniqueBeaconBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{45} +// Deprecated: Use CountExecutionPayloadEnvelopeRequest.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeRequest) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{53} } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNode() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNode() string { if x != nil { return x.Node } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetSlot() []uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetSlot() uint64 { if x != nil { return x.Slot } - return nil + return 0 } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetEpoch() []uint64 { +func (x *CountExecutionPayloadEnvelopeRequest) GetEpoch() uint64 { if x != nil { return x.Epoch } - return nil + return 0 } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetBlockRoot() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetBlockRoot() string { if x != nil { return x.BlockRoot } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNodeVersion() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNodeVersion() string { if x != nil { return x.NodeVersion } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetLocation() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetLocation() string { if x != nil { return x.Location } - return nil + return "" } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetNetwork() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetNetwork() string { if x != nil { return x.Network } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before + } return nil } -func (x *ListUniqueBeaconBadBlockValuesResponse) GetBeaconImplementation() []string { +func (x *CountExecutionPayloadEnvelopeRequest) GetAfter() *timestamppb.Timestamp { if x != nil { - return x.BeaconImplementation + return x.After } return nil } -type ListBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *CountExecutionPayloadEnvelopeRequest) GetBeaconImplementation() string { + if x != nil { + return x.BeaconImplementation + } + return "" +} + +func (x *CountExecutionPayloadEnvelopeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type CountExecutionPayloadEnvelopeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CountExecutionPayloadEnvelopeResponse) Reset() { + *x = CountExecutionPayloadEnvelopeResponse{} + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CountExecutionPayloadEnvelopeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CountExecutionPayloadEnvelopeResponse) ProtoMessage() {} + +func (x *CountExecutionPayloadEnvelopeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CountExecutionPayloadEnvelopeResponse.ProtoReflect.Descriptor instead. +func (*CountExecutionPayloadEnvelopeResponse) Descriptor() ([]byte, []int) { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{54} +} + +func (x *CountExecutionPayloadEnvelopeResponse) GetCount() *wrapperspb.UInt64Value { + if x != nil { + return x.Count + } + return nil +} +type ListBeaconBadBlockRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4190,15 +4887,15 @@ type ListBeaconBadBlockRequest struct { Pagination *PaginationCursor `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockRequest) Reset() { *x = ListBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockRequest) String() string { @@ -4208,8 +4905,8 @@ func (x *ListBeaconBadBlockRequest) String() string { func (*ListBeaconBadBlockRequest) ProtoMessage() {} func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4221,7 +4918,7 @@ func (x *ListBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{46} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{55} } func (x *ListBeaconBadBlockRequest) GetNode() string { @@ -4309,20 +5006,17 @@ func (x *ListBeaconBadBlockRequest) GetBeaconImplementation() string { } type ListBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,json=beaconBadBlocks,proto3" json:"beacon_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlocks []*BeaconBadBlock `protobuf:"bytes,1,rep,name=beacon_bad_blocks,json=beaconBadBlocks,proto3" json:"beacon_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlockResponse) Reset() { *x = ListBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlockResponse) String() string { @@ -4332,8 +5026,8 @@ func (x *ListBeaconBadBlockResponse) String() string { func (*ListBeaconBadBlockResponse) ProtoMessage() {} func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4345,7 +5039,7 @@ func (x *ListBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{47} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{56} } func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { @@ -4356,10 +5050,7 @@ func (x *ListBeaconBadBlockResponse) GetBeaconBadBlocks() []*BeaconBadBlock { } type CountBeaconBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4371,15 +5062,15 @@ type CountBeaconBadBlockRequest struct { After *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=after,proto3" json:"after,omitempty"` BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockRequest) Reset() { *x = CountBeaconBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockRequest) String() string { @@ -4389,8 +5080,8 @@ func (x *CountBeaconBadBlockRequest) String() string { func (*CountBeaconBadBlockRequest) ProtoMessage() {} func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4402,7 +5093,7 @@ func (x *CountBeaconBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{48} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{57} } func (x *CountBeaconBadBlockRequest) GetNode() string { @@ -4483,20 +5174,17 @@ func (x *CountBeaconBadBlockRequest) GetId() string { } type CountBeaconBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlockResponse) Reset() { *x = CountBeaconBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlockResponse) String() string { @@ -4506,8 +5194,8 @@ func (x *CountBeaconBadBlockResponse) String() string { func (*CountBeaconBadBlockResponse) ProtoMessage() {} func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4519,7 +5207,7 @@ func (x *CountBeaconBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{49} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{58} } func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -4530,20 +5218,17 @@ func (x *CountBeaconBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueBeaconBadBlobValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueBeaconBadBlobValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueBeaconBadBlobValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesRequest) Reset() { *x = ListUniqueBeaconBadBlobValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { @@ -4553,8 +5238,8 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) String() string { func (*ListUniqueBeaconBadBlobValuesRequest) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[59] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4566,7 +5251,7 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ListUniqueBeaconBadBlobValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{50} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{59} } func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBadBlobValuesRequest_Field { @@ -4577,28 +5262,25 @@ func (x *ListUniqueBeaconBadBlobValuesRequest) GetFields() []ListUniqueBeaconBad } type ListUniqueBeaconBadBlobValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` - Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` - BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` - NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` - BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` - Index []uint64 `protobuf:"varint,9,rep,packed,name=index,proto3" json:"index,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + Slot []uint64 `protobuf:"varint,2,rep,packed,name=slot,proto3" json:"slot,omitempty"` + Epoch []uint64 `protobuf:"varint,3,rep,packed,name=epoch,proto3" json:"epoch,omitempty"` + BlockRoot []string `protobuf:"bytes,4,rep,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty"` + NodeVersion []string `protobuf:"bytes,5,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Location []string `protobuf:"bytes,6,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,7,rep,name=network,proto3" json:"network,omitempty"` + BeaconImplementation []string `protobuf:"bytes,8,rep,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` + Index []uint64 `protobuf:"varint,9,rep,packed,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueBeaconBadBlobValuesResponse) Reset() { *x = ListUniqueBeaconBadBlobValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { @@ -4608,8 +5290,8 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) String() string { func (*ListUniqueBeaconBadBlobValuesResponse) ProtoMessage() {} func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4621,7 +5303,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ListUniqueBeaconBadBlobValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueBeaconBadBlobValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{51} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{60} } func (x *ListUniqueBeaconBadBlobValuesResponse) GetNode() []string { @@ -4688,10 +5370,7 @@ func (x *ListUniqueBeaconBadBlobValuesResponse) GetIndex() []uint64 { } type ListBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4705,15 +5384,15 @@ type ListBeaconBadBlobRequest struct { Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` BeaconImplementation string `protobuf:"bytes,12,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,13,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobRequest) Reset() { *x = ListBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobRequest) String() string { @@ -4723,8 +5402,8 @@ func (x *ListBeaconBadBlobRequest) String() string { func (*ListBeaconBadBlobRequest) ProtoMessage() {} func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[61] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4736,7 +5415,7 @@ func (x *ListBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{52} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{61} } func (x *ListBeaconBadBlobRequest) GetNode() string { @@ -4831,20 +5510,17 @@ func (x *ListBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type ListBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,json=beaconBadBlobs,proto3" json:"beacon_bad_blobs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BeaconBadBlobs []*BeaconBadBlob `protobuf:"bytes,1,rep,name=beacon_bad_blobs,json=beaconBadBlobs,proto3" json:"beacon_bad_blobs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListBeaconBadBlobResponse) Reset() { *x = ListBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListBeaconBadBlobResponse) String() string { @@ -4854,8 +5530,8 @@ func (x *ListBeaconBadBlobResponse) String() string { func (*ListBeaconBadBlobResponse) ProtoMessage() {} func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[62] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4867,7 +5543,7 @@ func (x *ListBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*ListBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{53} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{62} } func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { @@ -4878,10 +5554,7 @@ func (x *ListBeaconBadBlobResponse) GetBeaconBadBlobs() []*BeaconBadBlob { } type CountBeaconBadBlobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` Epoch uint64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` @@ -4894,15 +5567,15 @@ type CountBeaconBadBlobRequest struct { BeaconImplementation string `protobuf:"bytes,10,opt,name=beacon_implementation,json=beaconImplementation,proto3" json:"beacon_implementation,omitempty"` Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` Index *wrapperspb.UInt64Value `protobuf:"bytes,12,opt,name=index,proto3" json:"index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobRequest) Reset() { *x = CountBeaconBadBlobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobRequest) String() string { @@ -4912,8 +5585,8 @@ func (x *CountBeaconBadBlobRequest) String() string { func (*CountBeaconBadBlobRequest) ProtoMessage() {} func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4925,7 +5598,7 @@ func (x *CountBeaconBadBlobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobRequest.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{54} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{63} } func (x *CountBeaconBadBlobRequest) GetNode() string { @@ -5013,20 +5686,17 @@ func (x *CountBeaconBadBlobRequest) GetIndex() *wrapperspb.UInt64Value { } type CountBeaconBadBlobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountBeaconBadBlobResponse) Reset() { *x = CountBeaconBadBlobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountBeaconBadBlobResponse) String() string { @@ -5036,8 +5706,8 @@ func (x *CountBeaconBadBlobResponse) String() string { func (*CountBeaconBadBlobResponse) ProtoMessage() {} func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[64] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5049,7 +5719,7 @@ func (x *CountBeaconBadBlobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountBeaconBadBlobResponse.ProtoReflect.Descriptor instead. func (*CountBeaconBadBlobResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{55} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{64} } func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { @@ -5060,22 +5730,19 @@ func (x *CountBeaconBadBlobResponse) GetCount() *wrapperspb.UInt64Value { } type PaginationCursor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` + OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` unknownFields protoimpl.UnknownFields - - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PaginationCursor) Reset() { *x = PaginationCursor{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PaginationCursor) String() string { @@ -5085,8 +5752,8 @@ func (x *PaginationCursor) String() string { func (*PaginationCursor) ProtoMessage() {} func (x *PaginationCursor) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[65] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5098,7 +5765,7 @@ func (x *PaginationCursor) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationCursor.ProtoReflect.Descriptor instead. func (*PaginationCursor) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{56} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{65} } func (x *PaginationCursor) GetLimit() int32 { @@ -5123,10 +5790,7 @@ func (x *PaginationCursor) GetOrderBy() string { } type CreateExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` FetchedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=fetched_at,json=fetchedAt,proto3" json:"fetched_at,omitempty"` BlockHash *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5137,15 +5801,15 @@ type CreateExecutionBadBlockRequest struct { NodeVersion *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` ContentEncoding *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=content_encoding,json=contentEncoding,proto3" json:"content_encoding,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBadBlockRequest) Reset() { *x = CreateExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBadBlockRequest) String() string { @@ -5155,8 +5819,8 @@ func (x *CreateExecutionBadBlockRequest) String() string { func (*CreateExecutionBadBlockRequest) ProtoMessage() {} func (x *CreateExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5168,7 +5832,7 @@ func (x *CreateExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CreateExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{57} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{66} } func (x *CreateExecutionBadBlockRequest) GetNode() *wrapperspb.StringValue { @@ -5242,20 +5906,17 @@ func (x *CreateExecutionBadBlockRequest) GetContentEncoding() *wrapperspb.String } type CreateExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateExecutionBadBlockResponse) Reset() { *x = CreateExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateExecutionBadBlockResponse) String() string { @@ -5265,8 +5926,8 @@ func (x *CreateExecutionBadBlockResponse) String() string { func (*CreateExecutionBadBlockResponse) ProtoMessage() {} func (x *CreateExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5278,7 +5939,7 @@ func (x *CreateExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CreateExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{58} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{67} } func (x *CreateExecutionBadBlockResponse) GetId() *wrapperspb.StringValue { @@ -5289,10 +5950,7 @@ func (x *CreateExecutionBadBlockResponse) GetId() *wrapperspb.StringValue { } type ListExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5305,15 +5963,15 @@ type ListExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,10,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,11,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,12,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockRequest) Reset() { *x = ListExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockRequest) String() string { @@ -5323,8 +5981,8 @@ func (x *ListExecutionBadBlockRequest) String() string { func (*ListExecutionBadBlockRequest) ProtoMessage() {} func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5336,7 +5994,7 @@ func (x *ListExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{59} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{68} } func (x *ListExecutionBadBlockRequest) GetNode() string { @@ -5424,20 +6082,17 @@ func (x *ListExecutionBadBlockRequest) GetBlockExtraData() string { } type ListExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,json=executionBadBlocks,proto3" json:"execution_bad_blocks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ExecutionBadBlocks []*ExecutionBadBlock `protobuf:"bytes,1,rep,name=execution_bad_blocks,json=executionBadBlocks,proto3" json:"execution_bad_blocks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListExecutionBadBlockResponse) Reset() { *x = ListExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListExecutionBadBlockResponse) String() string { @@ -5447,8 +6102,8 @@ func (x *ListExecutionBadBlockResponse) String() string { func (*ListExecutionBadBlockResponse) ProtoMessage() {} func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5460,7 +6115,7 @@ func (x *ListExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*ListExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{60} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{69} } func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadBlock { @@ -5471,10 +6126,7 @@ func (x *ListExecutionBadBlockResponse) GetExecutionBadBlocks() []*ExecutionBadB } type CountExecutionBadBlockRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` BlockNumber int64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` BlockHash string `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` @@ -5485,15 +6137,15 @@ type CountExecutionBadBlockRequest struct { ExecutionImplementation string `protobuf:"bytes,8,opt,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` NodeVersion string `protobuf:"bytes,9,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` BlockExtraData string `protobuf:"bytes,10,opt,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockRequest) Reset() { *x = CountExecutionBadBlockRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockRequest) String() string { @@ -5503,8 +6155,8 @@ func (x *CountExecutionBadBlockRequest) String() string { func (*CountExecutionBadBlockRequest) ProtoMessage() {} func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[70] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5516,7 +6168,7 @@ func (x *CountExecutionBadBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockRequest.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{61} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{70} } func (x *CountExecutionBadBlockRequest) GetNode() string { @@ -5590,20 +6242,17 @@ func (x *CountExecutionBadBlockRequest) GetBlockExtraData() string { } type CountExecutionBadBlockResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Count *wrapperspb.UInt64Value `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CountExecutionBadBlockResponse) Reset() { *x = CountExecutionBadBlockResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CountExecutionBadBlockResponse) String() string { @@ -5613,8 +6262,8 @@ func (x *CountExecutionBadBlockResponse) String() string { func (*CountExecutionBadBlockResponse) ProtoMessage() {} func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[71] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5626,7 +6275,7 @@ func (x *CountExecutionBadBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CountExecutionBadBlockResponse.ProtoReflect.Descriptor instead. func (*CountExecutionBadBlockResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{62} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{71} } func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { @@ -5637,20 +6286,17 @@ func (x *CountExecutionBadBlockResponse) GetCount() *wrapperspb.UInt64Value { } type ListUniqueExecutionBadBlockValuesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []ListUniqueExecutionBadBlockValuesRequest_Field `protobuf:"varint,1,rep,packed,name=fields,proto3,enum=indexer.ListUniqueExecutionBadBlockValuesRequest_Field" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesRequest) Reset() { *x = ListUniqueExecutionBadBlockValuesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { @@ -5660,8 +6306,8 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) String() string { func (*ListUniqueExecutionBadBlockValuesRequest) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[72] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5673,7 +6319,7 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) ProtoReflect() protoreflect.M // Deprecated: Use ListUniqueExecutionBadBlockValuesRequest.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesRequest) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{63} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{72} } func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecutionBadBlockValuesRequest_Field { @@ -5684,28 +6330,25 @@ func (x *ListUniqueExecutionBadBlockValuesRequest) GetFields() []ListUniqueExecu } type ListUniqueExecutionBadBlockValuesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` - BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` - Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` - Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` - ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` - NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` - ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` - BlockExtraData []string `protobuf:"bytes,9,rep,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Node []string `protobuf:"bytes,1,rep,name=node,proto3" json:"node,omitempty"` + BlockHash []string `protobuf:"bytes,2,rep,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + BlockNumber []int64 `protobuf:"varint,3,rep,packed,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + Location []string `protobuf:"bytes,4,rep,name=location,proto3" json:"location,omitempty"` + Network []string `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"` + ExecutionImplementation []string `protobuf:"bytes,6,rep,name=execution_implementation,json=executionImplementation,proto3" json:"execution_implementation,omitempty"` + NodeVersion []string `protobuf:"bytes,7,rep,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + ClientVersion []string `protobuf:"bytes,8,rep,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` + BlockExtraData []string `protobuf:"bytes,9,rep,name=block_extra_data,json=blockExtraData,proto3" json:"block_extra_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListUniqueExecutionBadBlockValuesResponse) Reset() { *x = ListUniqueExecutionBadBlockValuesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_indexer_indexer_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { @@ -5715,8 +6358,8 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) String() string { func (*ListUniqueExecutionBadBlockValuesResponse) ProtoMessage() {} func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_indexer_indexer_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes[73] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5728,7 +6371,7 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) ProtoReflect() protoreflect. // Deprecated: Use ListUniqueExecutionBadBlockValuesResponse.ProtoReflect.Descriptor instead. func (*ListUniqueExecutionBadBlockValuesResponse) Descriptor() ([]byte, []int) { - return file_indexer_indexer_proto_rawDescGZIP(), []int{64} + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP(), []int{73} } func (x *ListUniqueExecutionBadBlockValuesResponse) GetNode() []string { @@ -5794,2545 +6437,1111 @@ func (x *ListUniqueExecutionBadBlockValuesResponse) GetBlockExtraData() []string return nil } -var File_indexer_indexer_proto protoreflect.FileDescriptor - -var file_indexer_indexer_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x9a, 0x05, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9a, - 0x05, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9d, 0x05, 0x0a, 0x0e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xd0, 0x05, 0x0a, 0x0d, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x2c, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x82, - 0x05, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, - 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x22, 0xc8, 0x05, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x3e, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, - 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x3d, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x22, 0xac, 0x01, - 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x2a, 0x0a, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0xbd, 0x01, 0x0a, - 0x15, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x9a, 0x01, 0x0a, - 0x0b, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x63, 0x6c, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6e, 0x63, 0x6c, 0x69, 0x12, 0x30, - 0x0a, 0x04, 0x6c, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x63, 0x6c, 0x69, - 0x12, 0x27, 0x0a, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x04, 0x7a, 0x63, 0x6c, 0x69, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x47, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x34, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x3e, 0x0a, 0x0a, 0x5a, 0x63, 0x6c, 0x69, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x04, 0x66, 0x6f, 0x72, 0x6b, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4b, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x38, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xf9, - 0x04, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf9, 0x04, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x22, 0x49, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfc, 0x04, 0x0a, - 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x51, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xaf, 0x05, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, - 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, - 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x51, 0x0a, 0x15, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, - 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4b, 0x0a, 0x1b, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe1, 0x04, 0x0a, 0x20, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x57, 0x0a, 0x18, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x51, 0x0a, 0x21, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, - 0xbb, 0x03, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x52, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x14, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x73, 0x22, 0xf1, 0x02, 0x0a, 0x1f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x20, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x94, 0x02, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x51, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x39, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x48, 0x41, 0x53, 0x48, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, - 0x4b, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x45, - 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0xbe, 0x02, 0x0a, 0x2b, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x49, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x31, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, 0x0a, 0x05, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, 0x48, - 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x4f, 0x4f, 0x54, - 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, - 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, 0x12, - 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, - 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x90, 0x02, 0x0a, 0x23, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, - 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x03, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, - 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x39, 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xef, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x31, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, 0x0a, 0x05, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, - 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, 0x12, 0x19, - 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x90, 0x02, 0x0a, 0x23, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x03, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, - 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, - 0x0a, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0c, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0xfa, 0x02, 0x0a, 0x17, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, - 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7e, - 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, - 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, - 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, - 0x4b, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, - 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x22, 0x93, - 0x02, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, - 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x03, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, - 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, - 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, - 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, - 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x05, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x53, 0x4c, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x50, 0x4f, 0x43, - 0x48, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x52, 0x4f, 0x4f, - 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x06, - 0x12, 0x19, 0x0a, 0x15, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, - 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x49, - 0x4e, 0x44, 0x45, 0x58, 0x10, 0x08, 0x22, 0xa8, 0x02, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x22, 0xea, 0x03, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, - 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x5d, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x10, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x0e, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x22, 0xb0, 0x03, - 0x0a, 0x19, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x22, 0x50, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, - 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x10, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, - 0xa7, 0x05, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x57, - 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6e, 0x6f, 0x64, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x47, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x4f, 0x0a, 0x1f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe3, 0x03, 0x0a, 0x1c, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x6d, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, - 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0x99, 0x03, 0x0a, 0x1d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x32, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xa6, 0x02, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, - 0xa8, 0x01, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, - 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x55, 0x4d, - 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x04, - 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, - 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x10, - 0x0a, 0x0c, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x06, - 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, - 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x58, - 0x54, 0x52, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x08, 0x22, 0xe6, 0x02, 0x0a, 0x29, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x32, 0xf8, 0x15, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x12, - 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, - 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x1b, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x10, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x20, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x65, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x24, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x83, - 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x23, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x21, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x12, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x22, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, - 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x65, 0x61, - 0x63, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6e, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x27, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x71, 0x0a, 0x18, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x25, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x16, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x26, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x8c, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3a, - 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x74, 0x68, - 0x70, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x70, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, 0x6f, 0x72, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x6f, - 0x6f, 0x72, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} +var File_pkg_proto_tracoor_indexer_indexer_proto protoreflect.FileDescriptor + +const file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc = "" + + "\n" + + "'pkg/proto/tracoor/indexer/indexer.proto\x12\aindexer\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x05\n" + + "\vBeaconState\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "state_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tstateRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x9a\x05\n" + + "\vBeaconBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xa7\x05\n" + + "\x18ExecutionPayloadEnvelope\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x9d\x05\n" + + "\x0eBeaconBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xd0\x05\n" + + "\rBeaconBadBlob\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x05 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x122\n" + + "\x05index\x18\v \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\x12G\n" + + "\x10content_encoding\x18\f \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\x82\x05\n" + + "\x13ExecutionBlockTrace\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"\xc8\x05\n" + + "\x11ExecutionBadBlock\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\x120\n" + + "\x04node\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x04 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x05 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12F\n" + + "\x10block_extra_data\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0eblockExtraData\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"=\n" + + "\x06Config\x123\n" + + "\bethereum\x18\x01 \x01(\v2\x17.indexer.EthereumConfigR\bethereum\"\xac\x01\n" + + "\x0eEthereumConfig\x126\n" + + "\anetwork\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x126\n" + + "\x06config\x18\x02 \x01(\v2\x1e.indexer.EthereumNetworkConfigR\x06config\x12*\n" + + "\x05tools\x18\x03 \x01(\v2\x14.indexer.ToolsConfigR\x05tools\"\xbd\x01\n" + + "\x15EthereumNetworkConfig\x12<\n" + + "\n" + + "repository\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "repository\x124\n" + + "\x06branch\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x06branch\x120\n" + + "\x04path\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\x04path\"\x9a\x01\n" + + "\vToolsConfig\x120\n" + + "\x04ncli\x18\x01 \x01(\v2\x1c.indexer.GitRepositoryConfigR\x04ncli\x120\n" + + "\x04lcli\x18\x02 \x01(\v2\x1c.indexer.GitRepositoryConfigR\x04lcli\x12'\n" + + "\x04zcli\x18\x03 \x01(\v2\x13.indexer.ZcliConfigR\x04zcli\"\x89\x01\n" + + "\x13GitRepositoryConfig\x12<\n" + + "\n" + + "repository\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\n" + + "repository\x124\n" + + "\x06branch\x18\x02 \x01(\v2\x1c.google.protobuf.StringValueR\x06branch\">\n" + + "\n" + + "ZcliConfig\x120\n" + + "\x04fork\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04fork\"\x12\n" + + "\x10GetConfigRequest\"<\n" + + "\x11GetConfigResponse\x12'\n" + + "\x06config\x18\x01 \x01(\v2\x0f.indexer.ConfigR\x06config\"K\n" + + "\x1fGetStorageHandshakeTokenRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x14\n" + + "\x05token\x18\x02 \x01(\tR\x05token\"8\n" + + " GetStorageHandshakeTokenResponse\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\"\xf9\x04\n" + + "\x18CreateBeaconStateRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "state_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tstateRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"I\n" + + "\x19CreateBeaconStateResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xf9\x04\n" + + "\x18CreateBeaconBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"I\n" + + "\x19CreateBeaconBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\x86\x05\n" + + "%CreateExecutionPayloadEnvelopeRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"V\n" + + "&CreateExecutionPayloadEnvelopeResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xfc\x04\n" + + "\x1bCreateBeaconBadBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"L\n" + + "\x1cCreateBeaconBadBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xaf\x05\n" + + "\x1aCreateBeaconBadBlobRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x120\n" + + "\x04slot\x18\x03 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x04slot\x122\n" + + "\x05epoch\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05epoch\x12;\n" + + "\n" + + "block_root\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\tblockRoot\x12?\n" + + "\fnode_version\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x128\n" + + "\blocation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12Q\n" + + "\x15beacon_implementation\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x14beaconImplementation\x122\n" + + "\x05index\x18\n" + + " \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\x12G\n" + + "\x10content_encoding\x18\v \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"K\n" + + "\x1bCreateBeaconBadBlobResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xe1\x04\n" + + " CreateExecutionBlockTraceRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x04 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12G\n" + + "\x10content_encoding\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"Q\n" + + "!CreateExecutionBlockTraceResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xbb\x03\n" + + "\x1eListExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\b \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x129\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\v \x01(\tR\vnodeVersion\"u\n" + + "\x1fListExecutionBlockTraceResponse\x12R\n" + + "\x16execution_block_traces\x18\x01 \x03(\v2\x1c.indexer.ExecutionBlockTraceR\x14executionBlockTraces\"\xf1\x02\n" + + "\x1fCountExecutionBlockTraceRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\x18execution_implementation\x18\b \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\t \x01(\tR\vnodeVersion\"V\n" + + " CountExecutionBlockTraceResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\x94\x02\n" + + "*ListUniqueExecutionBlockTraceValuesRequest\x12Q\n" + + "\x06fields\x18\x01 \x03(\x0e29.indexer.ListUniqueExecutionBlockTraceValuesRequest.FieldR\x06fields\"\x92\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\x0e\n" + + "\n" + + "BLOCK_HASH\x10\x01\x12\x10\n" + + "\fBLOCK_NUMBER\x10\x02\x12\f\n" + + "\bLOCATION\x10\x03\x12\v\n" + + "\aNETWORK\x10\x04\x12\x1c\n" + + "\x18EXECUTION_IMPLEMENTATION\x10\x05\x12\x10\n" + + "\fNODE_VERSION\x10\x06\x12\x12\n" + + "\x0eCLIENT_VERSION\x10\a\"\xbe\x02\n" + + "+ListUniqueExecutionBlockTraceValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1d\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\tblockHash\x12!\n" + + "\fblock_number\x18\x03 \x03(\x03R\vblockNumber\x12\x1a\n" + + "\blocation\x18\x04 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x03(\tR\anetwork\x129\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\a \x03(\tR\vnodeVersion\x12%\n" + + "\x0eclient_version\x18\b \x03(\tR\rclientVersion\"\xef\x01\n" + + "\"ListUniqueBeaconStateValuesRequest\x12I\n" + + "\x06fields\x18\x01 \x03(\x0e21.indexer.ListUniqueBeaconStateValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "STATE_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x90\x02\n" + + "#ListUniqueBeaconStateValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x03(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xb4\x03\n" + + "\x16ListBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"T\n" + + "\x17ListBeaconStateResponse\x129\n" + + "\rbeacon_states\x18\x01 \x03(\v2\x14.indexer.BeaconStateR\fbeaconStates\"\xfa\x02\n" + + "\x17CountBeaconStateRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "state_root\x18\x04 \x01(\tR\tstateRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"N\n" + + "\x18CountBeaconStateResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xef\x01\n" + + "\"ListUniqueBeaconBlockValuesRequest\x12I\n" + + "\x06fields\x18\x01 \x03(\x0e21.indexer.ListUniqueBeaconBlockValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x90\x02\n" + + "#ListUniqueBeaconBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xb4\x03\n" + + "\x16ListBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"T\n" + + "\x17ListBeaconBlockResponse\x129\n" + + "\rbeacon_blocks\x18\x01 \x03(\v2\x14.indexer.BeaconBlockR\fbeaconBlocks\"\xfa\x02\n" + + "\x17CountBeaconBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"N\n" + + "\x18CountBeaconBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xf5\x01\n" + + "%ListUniqueBeaconBadBlockValuesRequest\x12L\n" + + "\x06fields\x18\x01 \x03(\x0e24.indexer.ListUniqueBeaconBadBlockValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x93\x02\n" + + "&ListUniqueBeaconBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\x89\x02\n" + + "/ListUniqueExecutionPayloadEnvelopeValuesRequest\x12V\n" + + "\x06fields\x18\x01 \x03(\x0e2>.indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.FieldR\x06fields\"~\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\"\x9d\x02\n" + + "0ListUniqueExecutionPayloadEnvelopeValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\"\xc1\x03\n" + + "#ListExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"\x89\x01\n" + + "$ListExecutionPayloadEnvelopeResponse\x12a\n" + + "\x1bexecution_payload_envelopes\x18\x01 \x03(\v2!.indexer.ExecutionPayloadEnvelopeR\x19executionPayloadEnvelopes\"\x87\x03\n" + + "$CountExecutionPayloadEnvelopeRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"[\n" + + "%CountExecutionPayloadEnvelopeResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xb7\x03\n" + + "\x19ListBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\"a\n" + + "\x1aListBeaconBadBlockResponse\x12C\n" + + "\x11beacon_bad_blocks\x18\x01 \x03(\v2\x17.indexer.BeaconBadBlockR\x0fbeaconBadBlocks\"\xfd\x02\n" + + "\x1aCountBeaconBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\"Q\n" + + "\x1bCountBeaconBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xff\x01\n" + + "$ListUniqueBeaconBadBlobValuesRequest\x12K\n" + + "\x06fields\x18\x01 \x03(\x0e23.indexer.ListUniqueBeaconBadBlobValuesRequest.FieldR\x06fields\"\x89\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\b\n" + + "\x04SLOT\x10\x01\x12\t\n" + + "\x05EPOCH\x10\x02\x12\x0e\n" + + "\n" + + "BLOCK_ROOT\x10\x03\x12\x10\n" + + "\fNODE_VERSION\x10\x04\x12\f\n" + + "\bLOCATION\x10\x05\x12\v\n" + + "\aNETWORK\x10\x06\x12\x19\n" + + "\x15BEACON_IMPLEMENTATION\x10\a\x12\t\n" + + "\x05INDEX\x10\b\"\xa8\x02\n" + + "%ListUniqueBeaconBadBlobValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x03(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x03(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x03(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x03(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x03(\tR\anetwork\x123\n" + + "\x15beacon_implementation\x18\b \x03(\tR\x14beaconImplementation\x12\x14\n" + + "\x05index\x18\t \x03(\x04R\x05index\"\xea\x03\n" + + "\x18ListBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\n" + + " \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x123\n" + + "\x15beacon_implementation\x18\f \x01(\tR\x14beaconImplementation\x122\n" + + "\x05index\x18\r \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"]\n" + + "\x19ListBeaconBadBlobResponse\x12@\n" + + "\x10beacon_bad_blobs\x18\x01 \x03(\v2\x16.indexer.BeaconBadBlobR\x0ebeaconBadBlobs\"\xb0\x03\n" + + "\x19CountBeaconBadBlobRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12\x12\n" + + "\x04slot\x18\x02 \x01(\x04R\x04slot\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x04R\x05epoch\x12\x1d\n" + + "\n" + + "block_root\x18\x04 \x01(\tR\tblockRoot\x12!\n" + + "\fnode_version\x18\x05 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\blocation\x18\x06 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\a \x01(\tR\anetwork\x122\n" + + "\x06before\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x123\n" + + "\x15beacon_implementation\x18\n" + + " \x01(\tR\x14beaconImplementation\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x122\n" + + "\x05index\x18\f \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05index\"P\n" + + "\x1aCountBeaconBadBlobResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"[\n" + + "\x10PaginationCursor\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\x12\x19\n" + + "\border_by\x18\x03 \x01(\tR\aorderBy\"\xa7\x05\n" + + "\x1eCreateExecutionBadBlockRequest\x120\n" + + "\x04node\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x04node\x129\n" + + "\n" + + "fetched_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tfetchedAt\x12;\n" + + "\n" + + "block_hash\x18\x03 \x01(\v2\x1c.google.protobuf.StringValueR\tblockHash\x12>\n" + + "\fblock_number\x18\x04 \x01(\v2\x1b.google.protobuf.Int64ValueR\vblockNumber\x128\n" + + "\blocation\x18\x05 \x01(\v2\x1c.google.protobuf.StringValueR\blocation\x126\n" + + "\anetwork\x18\x06 \x01(\v2\x1c.google.protobuf.StringValueR\anetwork\x12W\n" + + "\x18execution_implementation\x18\a \x01(\v2\x1c.google.protobuf.StringValueR\x17executionImplementation\x12?\n" + + "\fnode_version\x18\b \x01(\v2\x1c.google.protobuf.StringValueR\vnodeVersion\x12F\n" + + "\x10block_extra_data\x18\t \x01(\v2\x1c.google.protobuf.StringValueR\x0eblockExtraData\x12G\n" + + "\x10content_encoding\x18\n" + + " \x01(\v2\x1c.google.protobuf.StringValueR\x0fcontentEncoding\"O\n" + + "\x1fCreateExecutionBadBlockResponse\x12,\n" + + "\x02id\x18\x01 \x01(\v2\x1c.google.protobuf.StringValueR\x02id\"\xe3\x03\n" + + "\x1cListExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\n" + + "pagination\x18\b \x01(\v2\x19.indexer.PaginationCursorR\n" + + "pagination\x12\x0e\n" + + "\x02id\x18\t \x01(\tR\x02id\x129\n" + + "\x18execution_implementation\x18\n" + + " \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\v \x01(\tR\vnodeVersion\x12(\n" + + "\x10block_extra_data\x18\f \x01(\tR\x0eblockExtraData\"m\n" + + "\x1dListExecutionBadBlockResponse\x12L\n" + + "\x14execution_bad_blocks\x18\x01 \x03(\v2\x1a.indexer.ExecutionBadBlockR\x12executionBadBlocks\"\x99\x03\n" + + "\x1dCountExecutionBadBlockRequest\x12\x12\n" + + "\x04node\x18\x01 \x01(\tR\x04node\x12!\n" + + "\fblock_number\x18\x02 \x01(\x03R\vblockNumber\x12\x1d\n" + + "\n" + + "block_hash\x18\x03 \x01(\tR\tblockHash\x12\x1a\n" + + "\blocation\x18\x04 \x01(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x01(\tR\anetwork\x122\n" + + "\x06before\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x06before\x120\n" + + "\x05after\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x05after\x129\n" + + "\x18execution_implementation\x18\b \x01(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\t \x01(\tR\vnodeVersion\x12(\n" + + "\x10block_extra_data\x18\n" + + " \x01(\tR\x0eblockExtraData\"T\n" + + "\x1eCountExecutionBadBlockResponse\x122\n" + + "\x05count\x18\x01 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x05count\"\xa6\x02\n" + + "(ListUniqueExecutionBadBlockValuesRequest\x12O\n" + + "\x06fields\x18\x01 \x03(\x0e27.indexer.ListUniqueExecutionBadBlockValuesRequest.FieldR\x06fields\"\xa8\x01\n" + + "\x05Field\x12\b\n" + + "\x04NODE\x10\x00\x12\x0e\n" + + "\n" + + "BLOCK_HASH\x10\x01\x12\x10\n" + + "\fBLOCK_NUMBER\x10\x02\x12\f\n" + + "\bLOCATION\x10\x03\x12\v\n" + + "\aNETWORK\x10\x04\x12\x1c\n" + + "\x18EXECUTION_IMPLEMENTATION\x10\x05\x12\x10\n" + + "\fNODE_VERSION\x10\x06\x12\x12\n" + + "\x0eCLIENT_VERSION\x10\a\x12\x14\n" + + "\x10BLOCK_EXTRA_DATA\x10\b\"\xe6\x02\n" + + ")ListUniqueExecutionBadBlockValuesResponse\x12\x12\n" + + "\x04node\x18\x01 \x03(\tR\x04node\x12\x1d\n" + + "\n" + + "block_hash\x18\x02 \x03(\tR\tblockHash\x12!\n" + + "\fblock_number\x18\x03 \x03(\x03R\vblockNumber\x12\x1a\n" + + "\blocation\x18\x04 \x03(\tR\blocation\x12\x18\n" + + "\anetwork\x18\x05 \x03(\tR\anetwork\x129\n" + + "\x18execution_implementation\x18\x06 \x03(\tR\x17executionImplementation\x12!\n" + + "\fnode_version\x18\a \x03(\tR\vnodeVersion\x12%\n" + + "\x0eclient_version\x18\b \x03(\tR\rclientVersion\x12(\n" + + "\x10block_extra_data\x18\t \x03(\tR\x0eblockExtraData2\xa4\x1a\n" + + "\aIndexer\x12D\n" + + "\tGetConfig\x12\x19.indexer.GetConfigRequest\x1a\x1a.indexer.GetConfigResponse\"\x00\x12q\n" + + "\x18GetStorageHandshakeToken\x12(.indexer.GetStorageHandshakeTokenRequest\x1a).indexer.GetStorageHandshakeTokenResponse\"\x00\x12\\\n" + + "\x11CreateBeaconState\x12!.indexer.CreateBeaconStateRequest\x1a\".indexer.CreateBeaconStateResponse\"\x00\x12V\n" + + "\x0fListBeaconState\x12\x1f.indexer.ListBeaconStateRequest\x1a .indexer.ListBeaconStateResponse\"\x00\x12Y\n" + + "\x10CountBeaconState\x12 .indexer.CountBeaconStateRequest\x1a!.indexer.CountBeaconStateResponse\"\x00\x12z\n" + + "\x1bListUniqueBeaconStateValues\x12+.indexer.ListUniqueBeaconStateValuesRequest\x1a,.indexer.ListUniqueBeaconStateValuesResponse\"\x00\x12\\\n" + + "\x11CreateBeaconBlock\x12!.indexer.CreateBeaconBlockRequest\x1a\".indexer.CreateBeaconBlockResponse\"\x00\x12V\n" + + "\x0fListBeaconBlock\x12\x1f.indexer.ListBeaconBlockRequest\x1a .indexer.ListBeaconBlockResponse\"\x00\x12Y\n" + + "\x10CountBeaconBlock\x12 .indexer.CountBeaconBlockRequest\x1a!.indexer.CountBeaconBlockResponse\"\x00\x12z\n" + + "\x1bListUniqueBeaconBlockValues\x12+.indexer.ListUniqueBeaconBlockValuesRequest\x1a,.indexer.ListUniqueBeaconBlockValuesResponse\"\x00\x12\x83\x01\n" + + "\x1eCreateExecutionPayloadEnvelope\x12..indexer.CreateExecutionPayloadEnvelopeRequest\x1a/.indexer.CreateExecutionPayloadEnvelopeResponse\"\x00\x12}\n" + + "\x1cListExecutionPayloadEnvelope\x12,.indexer.ListExecutionPayloadEnvelopeRequest\x1a-.indexer.ListExecutionPayloadEnvelopeResponse\"\x00\x12\x80\x01\n" + + "\x1dCountExecutionPayloadEnvelope\x12-.indexer.CountExecutionPayloadEnvelopeRequest\x1a..indexer.CountExecutionPayloadEnvelopeResponse\"\x00\x12\xa1\x01\n" + + "(ListUniqueExecutionPayloadEnvelopeValues\x128.indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest\x1a9.indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse\"\x00\x12e\n" + + "\x14CreateBeaconBadBlock\x12$.indexer.CreateBeaconBadBlockRequest\x1a%.indexer.CreateBeaconBadBlockResponse\"\x00\x12_\n" + + "\x12ListBeaconBadBlock\x12\".indexer.ListBeaconBadBlockRequest\x1a#.indexer.ListBeaconBadBlockResponse\"\x00\x12b\n" + + "\x13CountBeaconBadBlock\x12#.indexer.CountBeaconBadBlockRequest\x1a$.indexer.CountBeaconBadBlockResponse\"\x00\x12\x83\x01\n" + + "\x1eListUniqueBeaconBadBlockValues\x12..indexer.ListUniqueBeaconBadBlockValuesRequest\x1a/.indexer.ListUniqueBeaconBadBlockValuesResponse\"\x00\x12b\n" + + "\x13CreateBeaconBadBlob\x12#.indexer.CreateBeaconBadBlobRequest\x1a$.indexer.CreateBeaconBadBlobResponse\"\x00\x12\\\n" + + "\x11ListBeaconBadBlob\x12!.indexer.ListBeaconBadBlobRequest\x1a\".indexer.ListBeaconBadBlobResponse\"\x00\x12_\n" + + "\x12CountBeaconBadBlob\x12\".indexer.CountBeaconBadBlobRequest\x1a#.indexer.CountBeaconBadBlobResponse\"\x00\x12\x80\x01\n" + + "\x1dListUniqueBeaconBadBlobValues\x12-.indexer.ListUniqueBeaconBadBlobValuesRequest\x1a..indexer.ListUniqueBeaconBadBlobValuesResponse\"\x00\x12t\n" + + "\x19CreateExecutionBlockTrace\x12).indexer.CreateExecutionBlockTraceRequest\x1a*.indexer.CreateExecutionBlockTraceResponse\"\x00\x12n\n" + + "\x17ListExecutionBlockTrace\x12'.indexer.ListExecutionBlockTraceRequest\x1a(.indexer.ListExecutionBlockTraceResponse\"\x00\x12q\n" + + "\x18CountExecutionBlockTrace\x12(.indexer.CountExecutionBlockTraceRequest\x1a).indexer.CountExecutionBlockTraceResponse\"\x00\x12\x92\x01\n" + + "#ListUniqueExecutionBlockTraceValues\x123.indexer.ListUniqueExecutionBlockTraceValuesRequest\x1a4.indexer.ListUniqueExecutionBlockTraceValuesResponse\"\x00\x12n\n" + + "\x17CreateExecutionBadBlock\x12'.indexer.CreateExecutionBadBlockRequest\x1a(.indexer.CreateExecutionBadBlockResponse\"\x00\x12h\n" + + "\x15ListExecutionBadBlock\x12%.indexer.ListExecutionBadBlockRequest\x1a&.indexer.ListExecutionBadBlockResponse\"\x00\x12k\n" + + "\x16CountExecutionBadBlock\x12&.indexer.CountExecutionBadBlockRequest\x1a'.indexer.CountExecutionBadBlockResponse\"\x00\x12\x8c\x01\n" + + "!ListUniqueExecutionBadBlockValues\x121.indexer.ListUniqueExecutionBadBlockValuesRequest\x1a2.indexer.ListUniqueExecutionBadBlockValuesResponse\"\x00B:Z8github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexerb\x06proto3" var ( - file_indexer_indexer_proto_rawDescOnce sync.Once - file_indexer_indexer_proto_rawDescData = file_indexer_indexer_proto_rawDesc + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescOnce sync.Once + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData []byte ) -func file_indexer_indexer_proto_rawDescGZIP() []byte { - file_indexer_indexer_proto_rawDescOnce.Do(func() { - file_indexer_indexer_proto_rawDescData = protoimpl.X.CompressGZIP(file_indexer_indexer_proto_rawDescData) +func file_pkg_proto_tracoor_indexer_indexer_proto_rawDescGZIP() []byte { + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescOnce.Do(func() { + file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc), len(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc))) }) - return file_indexer_indexer_proto_rawDescData -} - -var file_indexer_indexer_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_indexer_indexer_proto_msgTypes = make([]protoimpl.MessageInfo, 65) -var file_indexer_indexer_proto_goTypes = []interface{}{ - (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 0: indexer.ListUniqueExecutionBlockTraceValuesRequest.Field - (ListUniqueBeaconStateValuesRequest_Field)(0), // 1: indexer.ListUniqueBeaconStateValuesRequest.Field - (ListUniqueBeaconBlockValuesRequest_Field)(0), // 2: indexer.ListUniqueBeaconBlockValuesRequest.Field - (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: indexer.ListUniqueBeaconBadBlockValuesRequest.Field - (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 4: indexer.ListUniqueBeaconBadBlobValuesRequest.Field - (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 5: indexer.ListUniqueExecutionBadBlockValuesRequest.Field - (*BeaconState)(nil), // 6: indexer.BeaconState - (*BeaconBlock)(nil), // 7: indexer.BeaconBlock - (*BeaconBadBlock)(nil), // 8: indexer.BeaconBadBlock - (*BeaconBadBlob)(nil), // 9: indexer.BeaconBadBlob - (*ExecutionBlockTrace)(nil), // 10: indexer.ExecutionBlockTrace - (*ExecutionBadBlock)(nil), // 11: indexer.ExecutionBadBlock - (*Config)(nil), // 12: indexer.Config - (*EthereumConfig)(nil), // 13: indexer.EthereumConfig - (*EthereumNetworkConfig)(nil), // 14: indexer.EthereumNetworkConfig - (*ToolsConfig)(nil), // 15: indexer.ToolsConfig - (*GitRepositoryConfig)(nil), // 16: indexer.GitRepositoryConfig - (*ZcliConfig)(nil), // 17: indexer.ZcliConfig - (*GetConfigRequest)(nil), // 18: indexer.GetConfigRequest - (*GetConfigResponse)(nil), // 19: indexer.GetConfigResponse - (*GetStorageHandshakeTokenRequest)(nil), // 20: indexer.GetStorageHandshakeTokenRequest - (*GetStorageHandshakeTokenResponse)(nil), // 21: indexer.GetStorageHandshakeTokenResponse - (*CreateBeaconStateRequest)(nil), // 22: indexer.CreateBeaconStateRequest - (*CreateBeaconStateResponse)(nil), // 23: indexer.CreateBeaconStateResponse - (*CreateBeaconBlockRequest)(nil), // 24: indexer.CreateBeaconBlockRequest - (*CreateBeaconBlockResponse)(nil), // 25: indexer.CreateBeaconBlockResponse - (*CreateBeaconBadBlockRequest)(nil), // 26: indexer.CreateBeaconBadBlockRequest - (*CreateBeaconBadBlockResponse)(nil), // 27: indexer.CreateBeaconBadBlockResponse - (*CreateBeaconBadBlobRequest)(nil), // 28: indexer.CreateBeaconBadBlobRequest - (*CreateBeaconBadBlobResponse)(nil), // 29: indexer.CreateBeaconBadBlobResponse - (*CreateExecutionBlockTraceRequest)(nil), // 30: indexer.CreateExecutionBlockTraceRequest - (*CreateExecutionBlockTraceResponse)(nil), // 31: indexer.CreateExecutionBlockTraceResponse - (*ListExecutionBlockTraceRequest)(nil), // 32: indexer.ListExecutionBlockTraceRequest - (*ListExecutionBlockTraceResponse)(nil), // 33: indexer.ListExecutionBlockTraceResponse - (*CountExecutionBlockTraceRequest)(nil), // 34: indexer.CountExecutionBlockTraceRequest - (*CountExecutionBlockTraceResponse)(nil), // 35: indexer.CountExecutionBlockTraceResponse - (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 36: indexer.ListUniqueExecutionBlockTraceValuesRequest - (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 37: indexer.ListUniqueExecutionBlockTraceValuesResponse - (*ListUniqueBeaconStateValuesRequest)(nil), // 38: indexer.ListUniqueBeaconStateValuesRequest - (*ListUniqueBeaconStateValuesResponse)(nil), // 39: indexer.ListUniqueBeaconStateValuesResponse - (*ListBeaconStateRequest)(nil), // 40: indexer.ListBeaconStateRequest - (*ListBeaconStateResponse)(nil), // 41: indexer.ListBeaconStateResponse - (*CountBeaconStateRequest)(nil), // 42: indexer.CountBeaconStateRequest - (*CountBeaconStateResponse)(nil), // 43: indexer.CountBeaconStateResponse - (*ListUniqueBeaconBlockValuesRequest)(nil), // 44: indexer.ListUniqueBeaconBlockValuesRequest - (*ListUniqueBeaconBlockValuesResponse)(nil), // 45: indexer.ListUniqueBeaconBlockValuesResponse - (*ListBeaconBlockRequest)(nil), // 46: indexer.ListBeaconBlockRequest - (*ListBeaconBlockResponse)(nil), // 47: indexer.ListBeaconBlockResponse - (*CountBeaconBlockRequest)(nil), // 48: indexer.CountBeaconBlockRequest - (*CountBeaconBlockResponse)(nil), // 49: indexer.CountBeaconBlockResponse - (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 50: indexer.ListUniqueBeaconBadBlockValuesRequest - (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 51: indexer.ListUniqueBeaconBadBlockValuesResponse - (*ListBeaconBadBlockRequest)(nil), // 52: indexer.ListBeaconBadBlockRequest - (*ListBeaconBadBlockResponse)(nil), // 53: indexer.ListBeaconBadBlockResponse - (*CountBeaconBadBlockRequest)(nil), // 54: indexer.CountBeaconBadBlockRequest - (*CountBeaconBadBlockResponse)(nil), // 55: indexer.CountBeaconBadBlockResponse - (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 56: indexer.ListUniqueBeaconBadBlobValuesRequest - (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 57: indexer.ListUniqueBeaconBadBlobValuesResponse - (*ListBeaconBadBlobRequest)(nil), // 58: indexer.ListBeaconBadBlobRequest - (*ListBeaconBadBlobResponse)(nil), // 59: indexer.ListBeaconBadBlobResponse - (*CountBeaconBadBlobRequest)(nil), // 60: indexer.CountBeaconBadBlobRequest - (*CountBeaconBadBlobResponse)(nil), // 61: indexer.CountBeaconBadBlobResponse - (*PaginationCursor)(nil), // 62: indexer.PaginationCursor - (*CreateExecutionBadBlockRequest)(nil), // 63: indexer.CreateExecutionBadBlockRequest - (*CreateExecutionBadBlockResponse)(nil), // 64: indexer.CreateExecutionBadBlockResponse - (*ListExecutionBadBlockRequest)(nil), // 65: indexer.ListExecutionBadBlockRequest - (*ListExecutionBadBlockResponse)(nil), // 66: indexer.ListExecutionBadBlockResponse - (*CountExecutionBadBlockRequest)(nil), // 67: indexer.CountExecutionBadBlockRequest - (*CountExecutionBadBlockResponse)(nil), // 68: indexer.CountExecutionBadBlockResponse - (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 69: indexer.ListUniqueExecutionBadBlockValuesRequest - (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 70: indexer.ListUniqueExecutionBadBlockValuesResponse - (*wrapperspb.StringValue)(nil), // 71: google.protobuf.StringValue - (*timestamppb.Timestamp)(nil), // 72: google.protobuf.Timestamp - (*wrapperspb.UInt64Value)(nil), // 73: google.protobuf.UInt64Value - (*wrapperspb.Int64Value)(nil), // 74: google.protobuf.Int64Value -} -var file_indexer_indexer_proto_depIdxs = []int32{ - 71, // 0: indexer.BeaconState.id:type_name -> google.protobuf.StringValue - 71, // 1: indexer.BeaconState.node:type_name -> google.protobuf.StringValue - 72, // 2: indexer.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 3: indexer.BeaconState.slot:type_name -> google.protobuf.UInt64Value - 73, // 4: indexer.BeaconState.epoch:type_name -> google.protobuf.UInt64Value - 71, // 5: indexer.BeaconState.state_root:type_name -> google.protobuf.StringValue - 71, // 6: indexer.BeaconState.node_version:type_name -> google.protobuf.StringValue - 71, // 7: indexer.BeaconState.location:type_name -> google.protobuf.StringValue - 71, // 8: indexer.BeaconState.network:type_name -> google.protobuf.StringValue - 71, // 9: indexer.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 10: indexer.BeaconState.content_encoding:type_name -> google.protobuf.StringValue - 71, // 11: indexer.BeaconBlock.id:type_name -> google.protobuf.StringValue - 71, // 12: indexer.BeaconBlock.node:type_name -> google.protobuf.StringValue - 72, // 13: indexer.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 14: indexer.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value - 73, // 15: indexer.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value - 71, // 16: indexer.BeaconBlock.block_root:type_name -> google.protobuf.StringValue - 71, // 17: indexer.BeaconBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 18: indexer.BeaconBlock.location:type_name -> google.protobuf.StringValue - 71, // 19: indexer.BeaconBlock.network:type_name -> google.protobuf.StringValue - 71, // 20: indexer.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 21: indexer.BeaconBlock.content_encoding:type_name -> google.protobuf.StringValue - 71, // 22: indexer.BeaconBadBlock.id:type_name -> google.protobuf.StringValue - 71, // 23: indexer.BeaconBadBlock.node:type_name -> google.protobuf.StringValue - 72, // 24: indexer.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 25: indexer.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value - 73, // 26: indexer.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value - 71, // 27: indexer.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue - 71, // 28: indexer.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 29: indexer.BeaconBadBlock.location:type_name -> google.protobuf.StringValue - 71, // 30: indexer.BeaconBadBlock.network:type_name -> google.protobuf.StringValue - 71, // 31: indexer.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 32: indexer.BeaconBadBlock.content_encoding:type_name -> google.protobuf.StringValue - 71, // 33: indexer.BeaconBadBlob.id:type_name -> google.protobuf.StringValue - 71, // 34: indexer.BeaconBadBlob.node:type_name -> google.protobuf.StringValue - 72, // 35: indexer.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 36: indexer.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value - 73, // 37: indexer.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value - 71, // 38: indexer.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue - 71, // 39: indexer.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue - 71, // 40: indexer.BeaconBadBlob.location:type_name -> google.protobuf.StringValue - 71, // 41: indexer.BeaconBadBlob.network:type_name -> google.protobuf.StringValue - 71, // 42: indexer.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue - 73, // 43: indexer.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value - 71, // 44: indexer.BeaconBadBlob.content_encoding:type_name -> google.protobuf.StringValue - 71, // 45: indexer.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue - 71, // 46: indexer.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue - 72, // 47: indexer.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 48: indexer.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue - 74, // 49: indexer.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value - 71, // 50: indexer.ExecutionBlockTrace.location:type_name -> google.protobuf.StringValue - 71, // 51: indexer.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue - 71, // 52: indexer.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 53: indexer.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue - 71, // 54: indexer.ExecutionBlockTrace.content_encoding:type_name -> google.protobuf.StringValue - 71, // 55: indexer.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue - 71, // 56: indexer.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue - 72, // 57: indexer.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 58: indexer.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue - 74, // 59: indexer.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value - 71, // 60: indexer.ExecutionBadBlock.location:type_name -> google.protobuf.StringValue - 71, // 61: indexer.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue - 71, // 62: indexer.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 63: indexer.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue - 71, // 64: indexer.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue - 71, // 65: indexer.ExecutionBadBlock.content_encoding:type_name -> google.protobuf.StringValue - 13, // 66: indexer.Config.ethereum:type_name -> indexer.EthereumConfig - 71, // 67: indexer.EthereumConfig.network:type_name -> google.protobuf.StringValue - 14, // 68: indexer.EthereumConfig.config:type_name -> indexer.EthereumNetworkConfig - 15, // 69: indexer.EthereumConfig.tools:type_name -> indexer.ToolsConfig - 71, // 70: indexer.EthereumNetworkConfig.repository:type_name -> google.protobuf.StringValue - 71, // 71: indexer.EthereumNetworkConfig.branch:type_name -> google.protobuf.StringValue - 71, // 72: indexer.EthereumNetworkConfig.path:type_name -> google.protobuf.StringValue - 16, // 73: indexer.ToolsConfig.ncli:type_name -> indexer.GitRepositoryConfig - 16, // 74: indexer.ToolsConfig.lcli:type_name -> indexer.GitRepositoryConfig - 17, // 75: indexer.ToolsConfig.zcli:type_name -> indexer.ZcliConfig - 71, // 76: indexer.GitRepositoryConfig.repository:type_name -> google.protobuf.StringValue - 71, // 77: indexer.GitRepositoryConfig.branch:type_name -> google.protobuf.StringValue - 71, // 78: indexer.ZcliConfig.fork:type_name -> google.protobuf.StringValue - 12, // 79: indexer.GetConfigResponse.config:type_name -> indexer.Config - 71, // 80: indexer.CreateBeaconStateRequest.node:type_name -> google.protobuf.StringValue - 72, // 81: indexer.CreateBeaconStateRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 82: indexer.CreateBeaconStateRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 83: indexer.CreateBeaconStateRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 84: indexer.CreateBeaconStateRequest.state_root:type_name -> google.protobuf.StringValue - 71, // 85: indexer.CreateBeaconStateRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 86: indexer.CreateBeaconStateRequest.location:type_name -> google.protobuf.StringValue - 71, // 87: indexer.CreateBeaconStateRequest.network:type_name -> google.protobuf.StringValue - 71, // 88: indexer.CreateBeaconStateRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 89: indexer.CreateBeaconStateRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 90: indexer.CreateBeaconStateResponse.id:type_name -> google.protobuf.StringValue - 71, // 91: indexer.CreateBeaconBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 92: indexer.CreateBeaconBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 93: indexer.CreateBeaconBlockRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 94: indexer.CreateBeaconBlockRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 95: indexer.CreateBeaconBlockRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 96: indexer.CreateBeaconBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 97: indexer.CreateBeaconBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 98: indexer.CreateBeaconBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 99: indexer.CreateBeaconBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 100: indexer.CreateBeaconBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 101: indexer.CreateBeaconBlockResponse.id:type_name -> google.protobuf.StringValue - 71, // 102: indexer.CreateBeaconBadBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 103: indexer.CreateBeaconBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 104: indexer.CreateBeaconBadBlockRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 105: indexer.CreateBeaconBadBlockRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 106: indexer.CreateBeaconBadBlockRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 107: indexer.CreateBeaconBadBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 108: indexer.CreateBeaconBadBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 109: indexer.CreateBeaconBadBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 110: indexer.CreateBeaconBadBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 71, // 111: indexer.CreateBeaconBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 112: indexer.CreateBeaconBadBlockResponse.id:type_name -> google.protobuf.StringValue - 71, // 113: indexer.CreateBeaconBadBlobRequest.node:type_name -> google.protobuf.StringValue - 72, // 114: indexer.CreateBeaconBadBlobRequest.fetched_at:type_name -> google.protobuf.Timestamp - 73, // 115: indexer.CreateBeaconBadBlobRequest.slot:type_name -> google.protobuf.UInt64Value - 73, // 116: indexer.CreateBeaconBadBlobRequest.epoch:type_name -> google.protobuf.UInt64Value - 71, // 117: indexer.CreateBeaconBadBlobRequest.block_root:type_name -> google.protobuf.StringValue - 71, // 118: indexer.CreateBeaconBadBlobRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 119: indexer.CreateBeaconBadBlobRequest.location:type_name -> google.protobuf.StringValue - 71, // 120: indexer.CreateBeaconBadBlobRequest.network:type_name -> google.protobuf.StringValue - 71, // 121: indexer.CreateBeaconBadBlobRequest.beacon_implementation:type_name -> google.protobuf.StringValue - 73, // 122: indexer.CreateBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 71, // 123: indexer.CreateBeaconBadBlobRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 124: indexer.CreateBeaconBadBlobResponse.id:type_name -> google.protobuf.StringValue - 71, // 125: indexer.CreateExecutionBlockTraceRequest.node:type_name -> google.protobuf.StringValue - 72, // 126: indexer.CreateExecutionBlockTraceRequest.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 127: indexer.CreateExecutionBlockTraceRequest.block_hash:type_name -> google.protobuf.StringValue - 74, // 128: indexer.CreateExecutionBlockTraceRequest.block_number:type_name -> google.protobuf.Int64Value - 71, // 129: indexer.CreateExecutionBlockTraceRequest.location:type_name -> google.protobuf.StringValue - 71, // 130: indexer.CreateExecutionBlockTraceRequest.network:type_name -> google.protobuf.StringValue - 71, // 131: indexer.CreateExecutionBlockTraceRequest.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 132: indexer.CreateExecutionBlockTraceRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 133: indexer.CreateExecutionBlockTraceRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 134: indexer.CreateExecutionBlockTraceResponse.id:type_name -> google.protobuf.StringValue - 72, // 135: indexer.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 72, // 136: indexer.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 62, // 137: indexer.ListExecutionBlockTraceRequest.pagination:type_name -> indexer.PaginationCursor - 10, // 138: indexer.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> indexer.ExecutionBlockTrace - 72, // 139: indexer.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp - 72, // 140: indexer.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp - 73, // 141: indexer.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value - 0, // 142: indexer.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBlockTraceValuesRequest.Field - 1, // 143: indexer.ListUniqueBeaconStateValuesRequest.fields:type_name -> indexer.ListUniqueBeaconStateValuesRequest.Field - 72, // 144: indexer.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 72, // 145: indexer.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 62, // 146: indexer.ListBeaconStateRequest.pagination:type_name -> indexer.PaginationCursor - 6, // 147: indexer.ListBeaconStateResponse.beacon_states:type_name -> indexer.BeaconState - 72, // 148: indexer.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp - 72, // 149: indexer.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp - 73, // 150: indexer.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value - 2, // 151: indexer.ListUniqueBeaconBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBlockValuesRequest.Field - 72, // 152: indexer.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 153: indexer.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 154: indexer.ListBeaconBlockRequest.pagination:type_name -> indexer.PaginationCursor - 7, // 155: indexer.ListBeaconBlockResponse.beacon_blocks:type_name -> indexer.BeaconBlock - 72, // 156: indexer.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 157: indexer.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 158: indexer.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value - 3, // 159: indexer.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlockValuesRequest.Field - 72, // 160: indexer.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 161: indexer.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 162: indexer.ListBeaconBadBlockRequest.pagination:type_name -> indexer.PaginationCursor - 8, // 163: indexer.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> indexer.BeaconBadBlock - 72, // 164: indexer.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 165: indexer.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 166: indexer.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 4, // 167: indexer.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlobValuesRequest.Field - 72, // 168: indexer.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 72, // 169: indexer.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 62, // 170: indexer.ListBeaconBadBlobRequest.pagination:type_name -> indexer.PaginationCursor - 73, // 171: indexer.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 9, // 172: indexer.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> indexer.BeaconBadBlob - 72, // 173: indexer.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp - 72, // 174: indexer.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp - 73, // 175: indexer.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value - 73, // 176: indexer.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value - 71, // 177: indexer.CreateExecutionBadBlockRequest.node:type_name -> google.protobuf.StringValue - 72, // 178: indexer.CreateExecutionBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp - 71, // 179: indexer.CreateExecutionBadBlockRequest.block_hash:type_name -> google.protobuf.StringValue - 74, // 180: indexer.CreateExecutionBadBlockRequest.block_number:type_name -> google.protobuf.Int64Value - 71, // 181: indexer.CreateExecutionBadBlockRequest.location:type_name -> google.protobuf.StringValue - 71, // 182: indexer.CreateExecutionBadBlockRequest.network:type_name -> google.protobuf.StringValue - 71, // 183: indexer.CreateExecutionBadBlockRequest.execution_implementation:type_name -> google.protobuf.StringValue - 71, // 184: indexer.CreateExecutionBadBlockRequest.node_version:type_name -> google.protobuf.StringValue - 71, // 185: indexer.CreateExecutionBadBlockRequest.block_extra_data:type_name -> google.protobuf.StringValue - 71, // 186: indexer.CreateExecutionBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue - 71, // 187: indexer.CreateExecutionBadBlockResponse.id:type_name -> google.protobuf.StringValue - 72, // 188: indexer.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 189: indexer.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 62, // 190: indexer.ListExecutionBadBlockRequest.pagination:type_name -> indexer.PaginationCursor - 11, // 191: indexer.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> indexer.ExecutionBadBlock - 72, // 192: indexer.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp - 72, // 193: indexer.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp - 73, // 194: indexer.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value - 5, // 195: indexer.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBadBlockValuesRequest.Field - 18, // 196: indexer.Indexer.GetConfig:input_type -> indexer.GetConfigRequest - 20, // 197: indexer.Indexer.GetStorageHandshakeToken:input_type -> indexer.GetStorageHandshakeTokenRequest - 22, // 198: indexer.Indexer.CreateBeaconState:input_type -> indexer.CreateBeaconStateRequest - 40, // 199: indexer.Indexer.ListBeaconState:input_type -> indexer.ListBeaconStateRequest - 42, // 200: indexer.Indexer.CountBeaconState:input_type -> indexer.CountBeaconStateRequest - 38, // 201: indexer.Indexer.ListUniqueBeaconStateValues:input_type -> indexer.ListUniqueBeaconStateValuesRequest - 24, // 202: indexer.Indexer.CreateBeaconBlock:input_type -> indexer.CreateBeaconBlockRequest - 46, // 203: indexer.Indexer.ListBeaconBlock:input_type -> indexer.ListBeaconBlockRequest - 48, // 204: indexer.Indexer.CountBeaconBlock:input_type -> indexer.CountBeaconBlockRequest - 44, // 205: indexer.Indexer.ListUniqueBeaconBlockValues:input_type -> indexer.ListUniqueBeaconBlockValuesRequest - 26, // 206: indexer.Indexer.CreateBeaconBadBlock:input_type -> indexer.CreateBeaconBadBlockRequest - 52, // 207: indexer.Indexer.ListBeaconBadBlock:input_type -> indexer.ListBeaconBadBlockRequest - 54, // 208: indexer.Indexer.CountBeaconBadBlock:input_type -> indexer.CountBeaconBadBlockRequest - 50, // 209: indexer.Indexer.ListUniqueBeaconBadBlockValues:input_type -> indexer.ListUniqueBeaconBadBlockValuesRequest - 28, // 210: indexer.Indexer.CreateBeaconBadBlob:input_type -> indexer.CreateBeaconBadBlobRequest - 58, // 211: indexer.Indexer.ListBeaconBadBlob:input_type -> indexer.ListBeaconBadBlobRequest - 60, // 212: indexer.Indexer.CountBeaconBadBlob:input_type -> indexer.CountBeaconBadBlobRequest - 56, // 213: indexer.Indexer.ListUniqueBeaconBadBlobValues:input_type -> indexer.ListUniqueBeaconBadBlobValuesRequest - 30, // 214: indexer.Indexer.CreateExecutionBlockTrace:input_type -> indexer.CreateExecutionBlockTraceRequest - 32, // 215: indexer.Indexer.ListExecutionBlockTrace:input_type -> indexer.ListExecutionBlockTraceRequest - 34, // 216: indexer.Indexer.CountExecutionBlockTrace:input_type -> indexer.CountExecutionBlockTraceRequest - 36, // 217: indexer.Indexer.ListUniqueExecutionBlockTraceValues:input_type -> indexer.ListUniqueExecutionBlockTraceValuesRequest - 63, // 218: indexer.Indexer.CreateExecutionBadBlock:input_type -> indexer.CreateExecutionBadBlockRequest - 65, // 219: indexer.Indexer.ListExecutionBadBlock:input_type -> indexer.ListExecutionBadBlockRequest - 67, // 220: indexer.Indexer.CountExecutionBadBlock:input_type -> indexer.CountExecutionBadBlockRequest - 69, // 221: indexer.Indexer.ListUniqueExecutionBadBlockValues:input_type -> indexer.ListUniqueExecutionBadBlockValuesRequest - 19, // 222: indexer.Indexer.GetConfig:output_type -> indexer.GetConfigResponse - 21, // 223: indexer.Indexer.GetStorageHandshakeToken:output_type -> indexer.GetStorageHandshakeTokenResponse - 23, // 224: indexer.Indexer.CreateBeaconState:output_type -> indexer.CreateBeaconStateResponse - 41, // 225: indexer.Indexer.ListBeaconState:output_type -> indexer.ListBeaconStateResponse - 43, // 226: indexer.Indexer.CountBeaconState:output_type -> indexer.CountBeaconStateResponse - 39, // 227: indexer.Indexer.ListUniqueBeaconStateValues:output_type -> indexer.ListUniqueBeaconStateValuesResponse - 25, // 228: indexer.Indexer.CreateBeaconBlock:output_type -> indexer.CreateBeaconBlockResponse - 47, // 229: indexer.Indexer.ListBeaconBlock:output_type -> indexer.ListBeaconBlockResponse - 49, // 230: indexer.Indexer.CountBeaconBlock:output_type -> indexer.CountBeaconBlockResponse - 45, // 231: indexer.Indexer.ListUniqueBeaconBlockValues:output_type -> indexer.ListUniqueBeaconBlockValuesResponse - 27, // 232: indexer.Indexer.CreateBeaconBadBlock:output_type -> indexer.CreateBeaconBadBlockResponse - 53, // 233: indexer.Indexer.ListBeaconBadBlock:output_type -> indexer.ListBeaconBadBlockResponse - 55, // 234: indexer.Indexer.CountBeaconBadBlock:output_type -> indexer.CountBeaconBadBlockResponse - 51, // 235: indexer.Indexer.ListUniqueBeaconBadBlockValues:output_type -> indexer.ListUniqueBeaconBadBlockValuesResponse - 29, // 236: indexer.Indexer.CreateBeaconBadBlob:output_type -> indexer.CreateBeaconBadBlobResponse - 59, // 237: indexer.Indexer.ListBeaconBadBlob:output_type -> indexer.ListBeaconBadBlobResponse - 61, // 238: indexer.Indexer.CountBeaconBadBlob:output_type -> indexer.CountBeaconBadBlobResponse - 57, // 239: indexer.Indexer.ListUniqueBeaconBadBlobValues:output_type -> indexer.ListUniqueBeaconBadBlobValuesResponse - 31, // 240: indexer.Indexer.CreateExecutionBlockTrace:output_type -> indexer.CreateExecutionBlockTraceResponse - 33, // 241: indexer.Indexer.ListExecutionBlockTrace:output_type -> indexer.ListExecutionBlockTraceResponse - 35, // 242: indexer.Indexer.CountExecutionBlockTrace:output_type -> indexer.CountExecutionBlockTraceResponse - 37, // 243: indexer.Indexer.ListUniqueExecutionBlockTraceValues:output_type -> indexer.ListUniqueExecutionBlockTraceValuesResponse - 64, // 244: indexer.Indexer.CreateExecutionBadBlock:output_type -> indexer.CreateExecutionBadBlockResponse - 66, // 245: indexer.Indexer.ListExecutionBadBlock:output_type -> indexer.ListExecutionBadBlockResponse - 68, // 246: indexer.Indexer.CountExecutionBadBlock:output_type -> indexer.CountExecutionBadBlockResponse - 70, // 247: indexer.Indexer.ListUniqueExecutionBadBlockValues:output_type -> indexer.ListUniqueExecutionBadBlockValuesResponse - 222, // [222:248] is the sub-list for method output_type - 196, // [196:222] is the sub-list for method input_type - 196, // [196:196] is the sub-list for extension type_name - 196, // [196:196] is the sub-list for extension extendee - 0, // [0:196] is the sub-list for field type_name -} - -func init() { file_indexer_indexer_proto_init() } -func file_indexer_indexer_proto_init() { - if File_indexer_indexer_proto != nil { + return file_pkg_proto_tracoor_indexer_indexer_proto_rawDescData +} + +var file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_pkg_proto_tracoor_indexer_indexer_proto_goTypes = []any{ + (ListUniqueExecutionBlockTraceValuesRequest_Field)(0), // 0: indexer.ListUniqueExecutionBlockTraceValuesRequest.Field + (ListUniqueBeaconStateValuesRequest_Field)(0), // 1: indexer.ListUniqueBeaconStateValuesRequest.Field + (ListUniqueBeaconBlockValuesRequest_Field)(0), // 2: indexer.ListUniqueBeaconBlockValuesRequest.Field + (ListUniqueBeaconBadBlockValuesRequest_Field)(0), // 3: indexer.ListUniqueBeaconBadBlockValuesRequest.Field + (ListUniqueExecutionPayloadEnvelopeValuesRequest_Field)(0), // 4: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + (ListUniqueBeaconBadBlobValuesRequest_Field)(0), // 5: indexer.ListUniqueBeaconBadBlobValuesRequest.Field + (ListUniqueExecutionBadBlockValuesRequest_Field)(0), // 6: indexer.ListUniqueExecutionBadBlockValuesRequest.Field + (*BeaconState)(nil), // 7: indexer.BeaconState + (*BeaconBlock)(nil), // 8: indexer.BeaconBlock + (*ExecutionPayloadEnvelope)(nil), // 9: indexer.ExecutionPayloadEnvelope + (*BeaconBadBlock)(nil), // 10: indexer.BeaconBadBlock + (*BeaconBadBlob)(nil), // 11: indexer.BeaconBadBlob + (*ExecutionBlockTrace)(nil), // 12: indexer.ExecutionBlockTrace + (*ExecutionBadBlock)(nil), // 13: indexer.ExecutionBadBlock + (*Config)(nil), // 14: indexer.Config + (*EthereumConfig)(nil), // 15: indexer.EthereumConfig + (*EthereumNetworkConfig)(nil), // 16: indexer.EthereumNetworkConfig + (*ToolsConfig)(nil), // 17: indexer.ToolsConfig + (*GitRepositoryConfig)(nil), // 18: indexer.GitRepositoryConfig + (*ZcliConfig)(nil), // 19: indexer.ZcliConfig + (*GetConfigRequest)(nil), // 20: indexer.GetConfigRequest + (*GetConfigResponse)(nil), // 21: indexer.GetConfigResponse + (*GetStorageHandshakeTokenRequest)(nil), // 22: indexer.GetStorageHandshakeTokenRequest + (*GetStorageHandshakeTokenResponse)(nil), // 23: indexer.GetStorageHandshakeTokenResponse + (*CreateBeaconStateRequest)(nil), // 24: indexer.CreateBeaconStateRequest + (*CreateBeaconStateResponse)(nil), // 25: indexer.CreateBeaconStateResponse + (*CreateBeaconBlockRequest)(nil), // 26: indexer.CreateBeaconBlockRequest + (*CreateBeaconBlockResponse)(nil), // 27: indexer.CreateBeaconBlockResponse + (*CreateExecutionPayloadEnvelopeRequest)(nil), // 28: indexer.CreateExecutionPayloadEnvelopeRequest + (*CreateExecutionPayloadEnvelopeResponse)(nil), // 29: indexer.CreateExecutionPayloadEnvelopeResponse + (*CreateBeaconBadBlockRequest)(nil), // 30: indexer.CreateBeaconBadBlockRequest + (*CreateBeaconBadBlockResponse)(nil), // 31: indexer.CreateBeaconBadBlockResponse + (*CreateBeaconBadBlobRequest)(nil), // 32: indexer.CreateBeaconBadBlobRequest + (*CreateBeaconBadBlobResponse)(nil), // 33: indexer.CreateBeaconBadBlobResponse + (*CreateExecutionBlockTraceRequest)(nil), // 34: indexer.CreateExecutionBlockTraceRequest + (*CreateExecutionBlockTraceResponse)(nil), // 35: indexer.CreateExecutionBlockTraceResponse + (*ListExecutionBlockTraceRequest)(nil), // 36: indexer.ListExecutionBlockTraceRequest + (*ListExecutionBlockTraceResponse)(nil), // 37: indexer.ListExecutionBlockTraceResponse + (*CountExecutionBlockTraceRequest)(nil), // 38: indexer.CountExecutionBlockTraceRequest + (*CountExecutionBlockTraceResponse)(nil), // 39: indexer.CountExecutionBlockTraceResponse + (*ListUniqueExecutionBlockTraceValuesRequest)(nil), // 40: indexer.ListUniqueExecutionBlockTraceValuesRequest + (*ListUniqueExecutionBlockTraceValuesResponse)(nil), // 41: indexer.ListUniqueExecutionBlockTraceValuesResponse + (*ListUniqueBeaconStateValuesRequest)(nil), // 42: indexer.ListUniqueBeaconStateValuesRequest + (*ListUniqueBeaconStateValuesResponse)(nil), // 43: indexer.ListUniqueBeaconStateValuesResponse + (*ListBeaconStateRequest)(nil), // 44: indexer.ListBeaconStateRequest + (*ListBeaconStateResponse)(nil), // 45: indexer.ListBeaconStateResponse + (*CountBeaconStateRequest)(nil), // 46: indexer.CountBeaconStateRequest + (*CountBeaconStateResponse)(nil), // 47: indexer.CountBeaconStateResponse + (*ListUniqueBeaconBlockValuesRequest)(nil), // 48: indexer.ListUniqueBeaconBlockValuesRequest + (*ListUniqueBeaconBlockValuesResponse)(nil), // 49: indexer.ListUniqueBeaconBlockValuesResponse + (*ListBeaconBlockRequest)(nil), // 50: indexer.ListBeaconBlockRequest + (*ListBeaconBlockResponse)(nil), // 51: indexer.ListBeaconBlockResponse + (*CountBeaconBlockRequest)(nil), // 52: indexer.CountBeaconBlockRequest + (*CountBeaconBlockResponse)(nil), // 53: indexer.CountBeaconBlockResponse + (*ListUniqueBeaconBadBlockValuesRequest)(nil), // 54: indexer.ListUniqueBeaconBadBlockValuesRequest + (*ListUniqueBeaconBadBlockValuesResponse)(nil), // 55: indexer.ListUniqueBeaconBadBlockValuesResponse + (*ListUniqueExecutionPayloadEnvelopeValuesRequest)(nil), // 56: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest + (*ListUniqueExecutionPayloadEnvelopeValuesResponse)(nil), // 57: indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse + (*ListExecutionPayloadEnvelopeRequest)(nil), // 58: indexer.ListExecutionPayloadEnvelopeRequest + (*ListExecutionPayloadEnvelopeResponse)(nil), // 59: indexer.ListExecutionPayloadEnvelopeResponse + (*CountExecutionPayloadEnvelopeRequest)(nil), // 60: indexer.CountExecutionPayloadEnvelopeRequest + (*CountExecutionPayloadEnvelopeResponse)(nil), // 61: indexer.CountExecutionPayloadEnvelopeResponse + (*ListBeaconBadBlockRequest)(nil), // 62: indexer.ListBeaconBadBlockRequest + (*ListBeaconBadBlockResponse)(nil), // 63: indexer.ListBeaconBadBlockResponse + (*CountBeaconBadBlockRequest)(nil), // 64: indexer.CountBeaconBadBlockRequest + (*CountBeaconBadBlockResponse)(nil), // 65: indexer.CountBeaconBadBlockResponse + (*ListUniqueBeaconBadBlobValuesRequest)(nil), // 66: indexer.ListUniqueBeaconBadBlobValuesRequest + (*ListUniqueBeaconBadBlobValuesResponse)(nil), // 67: indexer.ListUniqueBeaconBadBlobValuesResponse + (*ListBeaconBadBlobRequest)(nil), // 68: indexer.ListBeaconBadBlobRequest + (*ListBeaconBadBlobResponse)(nil), // 69: indexer.ListBeaconBadBlobResponse + (*CountBeaconBadBlobRequest)(nil), // 70: indexer.CountBeaconBadBlobRequest + (*CountBeaconBadBlobResponse)(nil), // 71: indexer.CountBeaconBadBlobResponse + (*PaginationCursor)(nil), // 72: indexer.PaginationCursor + (*CreateExecutionBadBlockRequest)(nil), // 73: indexer.CreateExecutionBadBlockRequest + (*CreateExecutionBadBlockResponse)(nil), // 74: indexer.CreateExecutionBadBlockResponse + (*ListExecutionBadBlockRequest)(nil), // 75: indexer.ListExecutionBadBlockRequest + (*ListExecutionBadBlockResponse)(nil), // 76: indexer.ListExecutionBadBlockResponse + (*CountExecutionBadBlockRequest)(nil), // 77: indexer.CountExecutionBadBlockRequest + (*CountExecutionBadBlockResponse)(nil), // 78: indexer.CountExecutionBadBlockResponse + (*ListUniqueExecutionBadBlockValuesRequest)(nil), // 79: indexer.ListUniqueExecutionBadBlockValuesRequest + (*ListUniqueExecutionBadBlockValuesResponse)(nil), // 80: indexer.ListUniqueExecutionBadBlockValuesResponse + (*wrapperspb.StringValue)(nil), // 81: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 82: google.protobuf.Timestamp + (*wrapperspb.UInt64Value)(nil), // 83: google.protobuf.UInt64Value + (*wrapperspb.Int64Value)(nil), // 84: google.protobuf.Int64Value +} +var file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs = []int32{ + 81, // 0: indexer.BeaconState.id:type_name -> google.protobuf.StringValue + 81, // 1: indexer.BeaconState.node:type_name -> google.protobuf.StringValue + 82, // 2: indexer.BeaconState.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 3: indexer.BeaconState.slot:type_name -> google.protobuf.UInt64Value + 83, // 4: indexer.BeaconState.epoch:type_name -> google.protobuf.UInt64Value + 81, // 5: indexer.BeaconState.state_root:type_name -> google.protobuf.StringValue + 81, // 6: indexer.BeaconState.node_version:type_name -> google.protobuf.StringValue + 81, // 7: indexer.BeaconState.location:type_name -> google.protobuf.StringValue + 81, // 8: indexer.BeaconState.network:type_name -> google.protobuf.StringValue + 81, // 9: indexer.BeaconState.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 10: indexer.BeaconState.content_encoding:type_name -> google.protobuf.StringValue + 81, // 11: indexer.BeaconBlock.id:type_name -> google.protobuf.StringValue + 81, // 12: indexer.BeaconBlock.node:type_name -> google.protobuf.StringValue + 82, // 13: indexer.BeaconBlock.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 14: indexer.BeaconBlock.slot:type_name -> google.protobuf.UInt64Value + 83, // 15: indexer.BeaconBlock.epoch:type_name -> google.protobuf.UInt64Value + 81, // 16: indexer.BeaconBlock.block_root:type_name -> google.protobuf.StringValue + 81, // 17: indexer.BeaconBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 18: indexer.BeaconBlock.location:type_name -> google.protobuf.StringValue + 81, // 19: indexer.BeaconBlock.network:type_name -> google.protobuf.StringValue + 81, // 20: indexer.BeaconBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 21: indexer.BeaconBlock.content_encoding:type_name -> google.protobuf.StringValue + 81, // 22: indexer.ExecutionPayloadEnvelope.id:type_name -> google.protobuf.StringValue + 81, // 23: indexer.ExecutionPayloadEnvelope.node:type_name -> google.protobuf.StringValue + 82, // 24: indexer.ExecutionPayloadEnvelope.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 25: indexer.ExecutionPayloadEnvelope.slot:type_name -> google.protobuf.UInt64Value + 83, // 26: indexer.ExecutionPayloadEnvelope.epoch:type_name -> google.protobuf.UInt64Value + 81, // 27: indexer.ExecutionPayloadEnvelope.block_root:type_name -> google.protobuf.StringValue + 81, // 28: indexer.ExecutionPayloadEnvelope.node_version:type_name -> google.protobuf.StringValue + 81, // 29: indexer.ExecutionPayloadEnvelope.location:type_name -> google.protobuf.StringValue + 81, // 30: indexer.ExecutionPayloadEnvelope.network:type_name -> google.protobuf.StringValue + 81, // 31: indexer.ExecutionPayloadEnvelope.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 32: indexer.ExecutionPayloadEnvelope.content_encoding:type_name -> google.protobuf.StringValue + 81, // 33: indexer.BeaconBadBlock.id:type_name -> google.protobuf.StringValue + 81, // 34: indexer.BeaconBadBlock.node:type_name -> google.protobuf.StringValue + 82, // 35: indexer.BeaconBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 36: indexer.BeaconBadBlock.slot:type_name -> google.protobuf.UInt64Value + 83, // 37: indexer.BeaconBadBlock.epoch:type_name -> google.protobuf.UInt64Value + 81, // 38: indexer.BeaconBadBlock.block_root:type_name -> google.protobuf.StringValue + 81, // 39: indexer.BeaconBadBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 40: indexer.BeaconBadBlock.location:type_name -> google.protobuf.StringValue + 81, // 41: indexer.BeaconBadBlock.network:type_name -> google.protobuf.StringValue + 81, // 42: indexer.BeaconBadBlock.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 43: indexer.BeaconBadBlock.content_encoding:type_name -> google.protobuf.StringValue + 81, // 44: indexer.BeaconBadBlob.id:type_name -> google.protobuf.StringValue + 81, // 45: indexer.BeaconBadBlob.node:type_name -> google.protobuf.StringValue + 82, // 46: indexer.BeaconBadBlob.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 47: indexer.BeaconBadBlob.slot:type_name -> google.protobuf.UInt64Value + 83, // 48: indexer.BeaconBadBlob.epoch:type_name -> google.protobuf.UInt64Value + 81, // 49: indexer.BeaconBadBlob.block_root:type_name -> google.protobuf.StringValue + 81, // 50: indexer.BeaconBadBlob.node_version:type_name -> google.protobuf.StringValue + 81, // 51: indexer.BeaconBadBlob.location:type_name -> google.protobuf.StringValue + 81, // 52: indexer.BeaconBadBlob.network:type_name -> google.protobuf.StringValue + 81, // 53: indexer.BeaconBadBlob.beacon_implementation:type_name -> google.protobuf.StringValue + 83, // 54: indexer.BeaconBadBlob.index:type_name -> google.protobuf.UInt64Value + 81, // 55: indexer.BeaconBadBlob.content_encoding:type_name -> google.protobuf.StringValue + 81, // 56: indexer.ExecutionBlockTrace.id:type_name -> google.protobuf.StringValue + 81, // 57: indexer.ExecutionBlockTrace.node:type_name -> google.protobuf.StringValue + 82, // 58: indexer.ExecutionBlockTrace.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 59: indexer.ExecutionBlockTrace.block_hash:type_name -> google.protobuf.StringValue + 84, // 60: indexer.ExecutionBlockTrace.block_number:type_name -> google.protobuf.Int64Value + 81, // 61: indexer.ExecutionBlockTrace.location:type_name -> google.protobuf.StringValue + 81, // 62: indexer.ExecutionBlockTrace.network:type_name -> google.protobuf.StringValue + 81, // 63: indexer.ExecutionBlockTrace.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 64: indexer.ExecutionBlockTrace.node_version:type_name -> google.protobuf.StringValue + 81, // 65: indexer.ExecutionBlockTrace.content_encoding:type_name -> google.protobuf.StringValue + 81, // 66: indexer.ExecutionBadBlock.id:type_name -> google.protobuf.StringValue + 81, // 67: indexer.ExecutionBadBlock.node:type_name -> google.protobuf.StringValue + 82, // 68: indexer.ExecutionBadBlock.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 69: indexer.ExecutionBadBlock.block_hash:type_name -> google.protobuf.StringValue + 84, // 70: indexer.ExecutionBadBlock.block_number:type_name -> google.protobuf.Int64Value + 81, // 71: indexer.ExecutionBadBlock.location:type_name -> google.protobuf.StringValue + 81, // 72: indexer.ExecutionBadBlock.network:type_name -> google.protobuf.StringValue + 81, // 73: indexer.ExecutionBadBlock.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 74: indexer.ExecutionBadBlock.node_version:type_name -> google.protobuf.StringValue + 81, // 75: indexer.ExecutionBadBlock.block_extra_data:type_name -> google.protobuf.StringValue + 81, // 76: indexer.ExecutionBadBlock.content_encoding:type_name -> google.protobuf.StringValue + 15, // 77: indexer.Config.ethereum:type_name -> indexer.EthereumConfig + 81, // 78: indexer.EthereumConfig.network:type_name -> google.protobuf.StringValue + 16, // 79: indexer.EthereumConfig.config:type_name -> indexer.EthereumNetworkConfig + 17, // 80: indexer.EthereumConfig.tools:type_name -> indexer.ToolsConfig + 81, // 81: indexer.EthereumNetworkConfig.repository:type_name -> google.protobuf.StringValue + 81, // 82: indexer.EthereumNetworkConfig.branch:type_name -> google.protobuf.StringValue + 81, // 83: indexer.EthereumNetworkConfig.path:type_name -> google.protobuf.StringValue + 18, // 84: indexer.ToolsConfig.ncli:type_name -> indexer.GitRepositoryConfig + 18, // 85: indexer.ToolsConfig.lcli:type_name -> indexer.GitRepositoryConfig + 19, // 86: indexer.ToolsConfig.zcli:type_name -> indexer.ZcliConfig + 81, // 87: indexer.GitRepositoryConfig.repository:type_name -> google.protobuf.StringValue + 81, // 88: indexer.GitRepositoryConfig.branch:type_name -> google.protobuf.StringValue + 81, // 89: indexer.ZcliConfig.fork:type_name -> google.protobuf.StringValue + 14, // 90: indexer.GetConfigResponse.config:type_name -> indexer.Config + 81, // 91: indexer.CreateBeaconStateRequest.node:type_name -> google.protobuf.StringValue + 82, // 92: indexer.CreateBeaconStateRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 93: indexer.CreateBeaconStateRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 94: indexer.CreateBeaconStateRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 95: indexer.CreateBeaconStateRequest.state_root:type_name -> google.protobuf.StringValue + 81, // 96: indexer.CreateBeaconStateRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 97: indexer.CreateBeaconStateRequest.location:type_name -> google.protobuf.StringValue + 81, // 98: indexer.CreateBeaconStateRequest.network:type_name -> google.protobuf.StringValue + 81, // 99: indexer.CreateBeaconStateRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 100: indexer.CreateBeaconStateRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 101: indexer.CreateBeaconStateResponse.id:type_name -> google.protobuf.StringValue + 81, // 102: indexer.CreateBeaconBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 103: indexer.CreateBeaconBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 104: indexer.CreateBeaconBlockRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 105: indexer.CreateBeaconBlockRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 106: indexer.CreateBeaconBlockRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 107: indexer.CreateBeaconBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 108: indexer.CreateBeaconBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 109: indexer.CreateBeaconBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 110: indexer.CreateBeaconBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 111: indexer.CreateBeaconBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 112: indexer.CreateBeaconBlockResponse.id:type_name -> google.protobuf.StringValue + 81, // 113: indexer.CreateExecutionPayloadEnvelopeRequest.node:type_name -> google.protobuf.StringValue + 82, // 114: indexer.CreateExecutionPayloadEnvelopeRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 115: indexer.CreateExecutionPayloadEnvelopeRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 116: indexer.CreateExecutionPayloadEnvelopeRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 117: indexer.CreateExecutionPayloadEnvelopeRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 118: indexer.CreateExecutionPayloadEnvelopeRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 119: indexer.CreateExecutionPayloadEnvelopeRequest.location:type_name -> google.protobuf.StringValue + 81, // 120: indexer.CreateExecutionPayloadEnvelopeRequest.network:type_name -> google.protobuf.StringValue + 81, // 121: indexer.CreateExecutionPayloadEnvelopeRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 122: indexer.CreateExecutionPayloadEnvelopeRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 123: indexer.CreateExecutionPayloadEnvelopeResponse.id:type_name -> google.protobuf.StringValue + 81, // 124: indexer.CreateBeaconBadBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 125: indexer.CreateBeaconBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 126: indexer.CreateBeaconBadBlockRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 127: indexer.CreateBeaconBadBlockRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 128: indexer.CreateBeaconBadBlockRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 129: indexer.CreateBeaconBadBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 130: indexer.CreateBeaconBadBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 131: indexer.CreateBeaconBadBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 132: indexer.CreateBeaconBadBlockRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 81, // 133: indexer.CreateBeaconBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 134: indexer.CreateBeaconBadBlockResponse.id:type_name -> google.protobuf.StringValue + 81, // 135: indexer.CreateBeaconBadBlobRequest.node:type_name -> google.protobuf.StringValue + 82, // 136: indexer.CreateBeaconBadBlobRequest.fetched_at:type_name -> google.protobuf.Timestamp + 83, // 137: indexer.CreateBeaconBadBlobRequest.slot:type_name -> google.protobuf.UInt64Value + 83, // 138: indexer.CreateBeaconBadBlobRequest.epoch:type_name -> google.protobuf.UInt64Value + 81, // 139: indexer.CreateBeaconBadBlobRequest.block_root:type_name -> google.protobuf.StringValue + 81, // 140: indexer.CreateBeaconBadBlobRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 141: indexer.CreateBeaconBadBlobRequest.location:type_name -> google.protobuf.StringValue + 81, // 142: indexer.CreateBeaconBadBlobRequest.network:type_name -> google.protobuf.StringValue + 81, // 143: indexer.CreateBeaconBadBlobRequest.beacon_implementation:type_name -> google.protobuf.StringValue + 83, // 144: indexer.CreateBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 81, // 145: indexer.CreateBeaconBadBlobRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 146: indexer.CreateBeaconBadBlobResponse.id:type_name -> google.protobuf.StringValue + 81, // 147: indexer.CreateExecutionBlockTraceRequest.node:type_name -> google.protobuf.StringValue + 82, // 148: indexer.CreateExecutionBlockTraceRequest.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 149: indexer.CreateExecutionBlockTraceRequest.block_hash:type_name -> google.protobuf.StringValue + 84, // 150: indexer.CreateExecutionBlockTraceRequest.block_number:type_name -> google.protobuf.Int64Value + 81, // 151: indexer.CreateExecutionBlockTraceRequest.location:type_name -> google.protobuf.StringValue + 81, // 152: indexer.CreateExecutionBlockTraceRequest.network:type_name -> google.protobuf.StringValue + 81, // 153: indexer.CreateExecutionBlockTraceRequest.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 154: indexer.CreateExecutionBlockTraceRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 155: indexer.CreateExecutionBlockTraceRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 156: indexer.CreateExecutionBlockTraceResponse.id:type_name -> google.protobuf.StringValue + 82, // 157: indexer.ListExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 82, // 158: indexer.ListExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 72, // 159: indexer.ListExecutionBlockTraceRequest.pagination:type_name -> indexer.PaginationCursor + 12, // 160: indexer.ListExecutionBlockTraceResponse.execution_block_traces:type_name -> indexer.ExecutionBlockTrace + 82, // 161: indexer.CountExecutionBlockTraceRequest.before:type_name -> google.protobuf.Timestamp + 82, // 162: indexer.CountExecutionBlockTraceRequest.after:type_name -> google.protobuf.Timestamp + 83, // 163: indexer.CountExecutionBlockTraceResponse.count:type_name -> google.protobuf.UInt64Value + 0, // 164: indexer.ListUniqueExecutionBlockTraceValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBlockTraceValuesRequest.Field + 1, // 165: indexer.ListUniqueBeaconStateValuesRequest.fields:type_name -> indexer.ListUniqueBeaconStateValuesRequest.Field + 82, // 166: indexer.ListBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 82, // 167: indexer.ListBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 72, // 168: indexer.ListBeaconStateRequest.pagination:type_name -> indexer.PaginationCursor + 7, // 169: indexer.ListBeaconStateResponse.beacon_states:type_name -> indexer.BeaconState + 82, // 170: indexer.CountBeaconStateRequest.before:type_name -> google.protobuf.Timestamp + 82, // 171: indexer.CountBeaconStateRequest.after:type_name -> google.protobuf.Timestamp + 83, // 172: indexer.CountBeaconStateResponse.count:type_name -> google.protobuf.UInt64Value + 2, // 173: indexer.ListUniqueBeaconBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBlockValuesRequest.Field + 82, // 174: indexer.ListBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 175: indexer.ListBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 176: indexer.ListBeaconBlockRequest.pagination:type_name -> indexer.PaginationCursor + 8, // 177: indexer.ListBeaconBlockResponse.beacon_blocks:type_name -> indexer.BeaconBlock + 82, // 178: indexer.CountBeaconBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 179: indexer.CountBeaconBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 180: indexer.CountBeaconBlockResponse.count:type_name -> google.protobuf.UInt64Value + 3, // 181: indexer.ListUniqueBeaconBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlockValuesRequest.Field + 4, // 182: indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.fields:type_name -> indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest.Field + 82, // 183: indexer.ListExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 82, // 184: indexer.ListExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 72, // 185: indexer.ListExecutionPayloadEnvelopeRequest.pagination:type_name -> indexer.PaginationCursor + 9, // 186: indexer.ListExecutionPayloadEnvelopeResponse.execution_payload_envelopes:type_name -> indexer.ExecutionPayloadEnvelope + 82, // 187: indexer.CountExecutionPayloadEnvelopeRequest.before:type_name -> google.protobuf.Timestamp + 82, // 188: indexer.CountExecutionPayloadEnvelopeRequest.after:type_name -> google.protobuf.Timestamp + 83, // 189: indexer.CountExecutionPayloadEnvelopeResponse.count:type_name -> google.protobuf.UInt64Value + 82, // 190: indexer.ListBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 191: indexer.ListBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 192: indexer.ListBeaconBadBlockRequest.pagination:type_name -> indexer.PaginationCursor + 10, // 193: indexer.ListBeaconBadBlockResponse.beacon_bad_blocks:type_name -> indexer.BeaconBadBlock + 82, // 194: indexer.CountBeaconBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 195: indexer.CountBeaconBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 196: indexer.CountBeaconBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 5, // 197: indexer.ListUniqueBeaconBadBlobValuesRequest.fields:type_name -> indexer.ListUniqueBeaconBadBlobValuesRequest.Field + 82, // 198: indexer.ListBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 82, // 199: indexer.ListBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 72, // 200: indexer.ListBeaconBadBlobRequest.pagination:type_name -> indexer.PaginationCursor + 83, // 201: indexer.ListBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 11, // 202: indexer.ListBeaconBadBlobResponse.beacon_bad_blobs:type_name -> indexer.BeaconBadBlob + 82, // 203: indexer.CountBeaconBadBlobRequest.before:type_name -> google.protobuf.Timestamp + 82, // 204: indexer.CountBeaconBadBlobRequest.after:type_name -> google.protobuf.Timestamp + 83, // 205: indexer.CountBeaconBadBlobRequest.index:type_name -> google.protobuf.UInt64Value + 83, // 206: indexer.CountBeaconBadBlobResponse.count:type_name -> google.protobuf.UInt64Value + 81, // 207: indexer.CreateExecutionBadBlockRequest.node:type_name -> google.protobuf.StringValue + 82, // 208: indexer.CreateExecutionBadBlockRequest.fetched_at:type_name -> google.protobuf.Timestamp + 81, // 209: indexer.CreateExecutionBadBlockRequest.block_hash:type_name -> google.protobuf.StringValue + 84, // 210: indexer.CreateExecutionBadBlockRequest.block_number:type_name -> google.protobuf.Int64Value + 81, // 211: indexer.CreateExecutionBadBlockRequest.location:type_name -> google.protobuf.StringValue + 81, // 212: indexer.CreateExecutionBadBlockRequest.network:type_name -> google.protobuf.StringValue + 81, // 213: indexer.CreateExecutionBadBlockRequest.execution_implementation:type_name -> google.protobuf.StringValue + 81, // 214: indexer.CreateExecutionBadBlockRequest.node_version:type_name -> google.protobuf.StringValue + 81, // 215: indexer.CreateExecutionBadBlockRequest.block_extra_data:type_name -> google.protobuf.StringValue + 81, // 216: indexer.CreateExecutionBadBlockRequest.content_encoding:type_name -> google.protobuf.StringValue + 81, // 217: indexer.CreateExecutionBadBlockResponse.id:type_name -> google.protobuf.StringValue + 82, // 218: indexer.ListExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 219: indexer.ListExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 72, // 220: indexer.ListExecutionBadBlockRequest.pagination:type_name -> indexer.PaginationCursor + 13, // 221: indexer.ListExecutionBadBlockResponse.execution_bad_blocks:type_name -> indexer.ExecutionBadBlock + 82, // 222: indexer.CountExecutionBadBlockRequest.before:type_name -> google.protobuf.Timestamp + 82, // 223: indexer.CountExecutionBadBlockRequest.after:type_name -> google.protobuf.Timestamp + 83, // 224: indexer.CountExecutionBadBlockResponse.count:type_name -> google.protobuf.UInt64Value + 6, // 225: indexer.ListUniqueExecutionBadBlockValuesRequest.fields:type_name -> indexer.ListUniqueExecutionBadBlockValuesRequest.Field + 20, // 226: indexer.Indexer.GetConfig:input_type -> indexer.GetConfigRequest + 22, // 227: indexer.Indexer.GetStorageHandshakeToken:input_type -> indexer.GetStorageHandshakeTokenRequest + 24, // 228: indexer.Indexer.CreateBeaconState:input_type -> indexer.CreateBeaconStateRequest + 44, // 229: indexer.Indexer.ListBeaconState:input_type -> indexer.ListBeaconStateRequest + 46, // 230: indexer.Indexer.CountBeaconState:input_type -> indexer.CountBeaconStateRequest + 42, // 231: indexer.Indexer.ListUniqueBeaconStateValues:input_type -> indexer.ListUniqueBeaconStateValuesRequest + 26, // 232: indexer.Indexer.CreateBeaconBlock:input_type -> indexer.CreateBeaconBlockRequest + 50, // 233: indexer.Indexer.ListBeaconBlock:input_type -> indexer.ListBeaconBlockRequest + 52, // 234: indexer.Indexer.CountBeaconBlock:input_type -> indexer.CountBeaconBlockRequest + 48, // 235: indexer.Indexer.ListUniqueBeaconBlockValues:input_type -> indexer.ListUniqueBeaconBlockValuesRequest + 28, // 236: indexer.Indexer.CreateExecutionPayloadEnvelope:input_type -> indexer.CreateExecutionPayloadEnvelopeRequest + 58, // 237: indexer.Indexer.ListExecutionPayloadEnvelope:input_type -> indexer.ListExecutionPayloadEnvelopeRequest + 60, // 238: indexer.Indexer.CountExecutionPayloadEnvelope:input_type -> indexer.CountExecutionPayloadEnvelopeRequest + 56, // 239: indexer.Indexer.ListUniqueExecutionPayloadEnvelopeValues:input_type -> indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest + 30, // 240: indexer.Indexer.CreateBeaconBadBlock:input_type -> indexer.CreateBeaconBadBlockRequest + 62, // 241: indexer.Indexer.ListBeaconBadBlock:input_type -> indexer.ListBeaconBadBlockRequest + 64, // 242: indexer.Indexer.CountBeaconBadBlock:input_type -> indexer.CountBeaconBadBlockRequest + 54, // 243: indexer.Indexer.ListUniqueBeaconBadBlockValues:input_type -> indexer.ListUniqueBeaconBadBlockValuesRequest + 32, // 244: indexer.Indexer.CreateBeaconBadBlob:input_type -> indexer.CreateBeaconBadBlobRequest + 68, // 245: indexer.Indexer.ListBeaconBadBlob:input_type -> indexer.ListBeaconBadBlobRequest + 70, // 246: indexer.Indexer.CountBeaconBadBlob:input_type -> indexer.CountBeaconBadBlobRequest + 66, // 247: indexer.Indexer.ListUniqueBeaconBadBlobValues:input_type -> indexer.ListUniqueBeaconBadBlobValuesRequest + 34, // 248: indexer.Indexer.CreateExecutionBlockTrace:input_type -> indexer.CreateExecutionBlockTraceRequest + 36, // 249: indexer.Indexer.ListExecutionBlockTrace:input_type -> indexer.ListExecutionBlockTraceRequest + 38, // 250: indexer.Indexer.CountExecutionBlockTrace:input_type -> indexer.CountExecutionBlockTraceRequest + 40, // 251: indexer.Indexer.ListUniqueExecutionBlockTraceValues:input_type -> indexer.ListUniqueExecutionBlockTraceValuesRequest + 73, // 252: indexer.Indexer.CreateExecutionBadBlock:input_type -> indexer.CreateExecutionBadBlockRequest + 75, // 253: indexer.Indexer.ListExecutionBadBlock:input_type -> indexer.ListExecutionBadBlockRequest + 77, // 254: indexer.Indexer.CountExecutionBadBlock:input_type -> indexer.CountExecutionBadBlockRequest + 79, // 255: indexer.Indexer.ListUniqueExecutionBadBlockValues:input_type -> indexer.ListUniqueExecutionBadBlockValuesRequest + 21, // 256: indexer.Indexer.GetConfig:output_type -> indexer.GetConfigResponse + 23, // 257: indexer.Indexer.GetStorageHandshakeToken:output_type -> indexer.GetStorageHandshakeTokenResponse + 25, // 258: indexer.Indexer.CreateBeaconState:output_type -> indexer.CreateBeaconStateResponse + 45, // 259: indexer.Indexer.ListBeaconState:output_type -> indexer.ListBeaconStateResponse + 47, // 260: indexer.Indexer.CountBeaconState:output_type -> indexer.CountBeaconStateResponse + 43, // 261: indexer.Indexer.ListUniqueBeaconStateValues:output_type -> indexer.ListUniqueBeaconStateValuesResponse + 27, // 262: indexer.Indexer.CreateBeaconBlock:output_type -> indexer.CreateBeaconBlockResponse + 51, // 263: indexer.Indexer.ListBeaconBlock:output_type -> indexer.ListBeaconBlockResponse + 53, // 264: indexer.Indexer.CountBeaconBlock:output_type -> indexer.CountBeaconBlockResponse + 49, // 265: indexer.Indexer.ListUniqueBeaconBlockValues:output_type -> indexer.ListUniqueBeaconBlockValuesResponse + 29, // 266: indexer.Indexer.CreateExecutionPayloadEnvelope:output_type -> indexer.CreateExecutionPayloadEnvelopeResponse + 59, // 267: indexer.Indexer.ListExecutionPayloadEnvelope:output_type -> indexer.ListExecutionPayloadEnvelopeResponse + 61, // 268: indexer.Indexer.CountExecutionPayloadEnvelope:output_type -> indexer.CountExecutionPayloadEnvelopeResponse + 57, // 269: indexer.Indexer.ListUniqueExecutionPayloadEnvelopeValues:output_type -> indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse + 31, // 270: indexer.Indexer.CreateBeaconBadBlock:output_type -> indexer.CreateBeaconBadBlockResponse + 63, // 271: indexer.Indexer.ListBeaconBadBlock:output_type -> indexer.ListBeaconBadBlockResponse + 65, // 272: indexer.Indexer.CountBeaconBadBlock:output_type -> indexer.CountBeaconBadBlockResponse + 55, // 273: indexer.Indexer.ListUniqueBeaconBadBlockValues:output_type -> indexer.ListUniqueBeaconBadBlockValuesResponse + 33, // 274: indexer.Indexer.CreateBeaconBadBlob:output_type -> indexer.CreateBeaconBadBlobResponse + 69, // 275: indexer.Indexer.ListBeaconBadBlob:output_type -> indexer.ListBeaconBadBlobResponse + 71, // 276: indexer.Indexer.CountBeaconBadBlob:output_type -> indexer.CountBeaconBadBlobResponse + 67, // 277: indexer.Indexer.ListUniqueBeaconBadBlobValues:output_type -> indexer.ListUniqueBeaconBadBlobValuesResponse + 35, // 278: indexer.Indexer.CreateExecutionBlockTrace:output_type -> indexer.CreateExecutionBlockTraceResponse + 37, // 279: indexer.Indexer.ListExecutionBlockTrace:output_type -> indexer.ListExecutionBlockTraceResponse + 39, // 280: indexer.Indexer.CountExecutionBlockTrace:output_type -> indexer.CountExecutionBlockTraceResponse + 41, // 281: indexer.Indexer.ListUniqueExecutionBlockTraceValues:output_type -> indexer.ListUniqueExecutionBlockTraceValuesResponse + 74, // 282: indexer.Indexer.CreateExecutionBadBlock:output_type -> indexer.CreateExecutionBadBlockResponse + 76, // 283: indexer.Indexer.ListExecutionBadBlock:output_type -> indexer.ListExecutionBadBlockResponse + 78, // 284: indexer.Indexer.CountExecutionBadBlock:output_type -> indexer.CountExecutionBadBlockResponse + 80, // 285: indexer.Indexer.ListUniqueExecutionBadBlockValues:output_type -> indexer.ListUniqueExecutionBadBlockValuesResponse + 256, // [256:286] is the sub-list for method output_type + 226, // [226:256] is the sub-list for method input_type + 226, // [226:226] is the sub-list for extension type_name + 226, // [226:226] is the sub-list for extension extendee + 0, // [0:226] is the sub-list for field type_name +} + +func init() { file_pkg_proto_tracoor_indexer_indexer_proto_init() } +func file_pkg_proto_tracoor_indexer_indexer_proto_init() { + if File_pkg_proto_tracoor_indexer_indexer_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_indexer_indexer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BeaconBadBlob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBlockTrace); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutionBadBlock); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthereumNetworkConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToolsConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitRepositoryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZcliConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStorageHandshakeTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStorageHandshakeTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBlockTraceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBlockTraceValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconStateValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueBeaconBadBlobValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountBeaconBadBlobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaginationCursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountExecutionBadBlockResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_indexer_indexer_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListUniqueExecutionBadBlockValuesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_indexer_indexer_proto_rawDesc, - NumEnums: 6, - NumMessages: 65, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc), len(file_pkg_proto_tracoor_indexer_indexer_proto_rawDesc)), + NumEnums: 7, + NumMessages: 74, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_indexer_indexer_proto_goTypes, - DependencyIndexes: file_indexer_indexer_proto_depIdxs, - EnumInfos: file_indexer_indexer_proto_enumTypes, - MessageInfos: file_indexer_indexer_proto_msgTypes, + GoTypes: file_pkg_proto_tracoor_indexer_indexer_proto_goTypes, + DependencyIndexes: file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs, + EnumInfos: file_pkg_proto_tracoor_indexer_indexer_proto_enumTypes, + MessageInfos: file_pkg_proto_tracoor_indexer_indexer_proto_msgTypes, }.Build() - File_indexer_indexer_proto = out.File - file_indexer_indexer_proto_rawDesc = nil - file_indexer_indexer_proto_goTypes = nil - file_indexer_indexer_proto_depIdxs = nil + File_pkg_proto_tracoor_indexer_indexer_proto = out.File + file_pkg_proto_tracoor_indexer_indexer_proto_goTypes = nil + file_pkg_proto_tracoor_indexer_indexer_proto_depIdxs = nil } diff --git a/pkg/proto/tracoor/indexer/indexer.proto b/pkg/proto/tracoor/indexer/indexer.proto index 5935e4d..df650e0 100644 --- a/pkg/proto/tracoor/indexer/indexer.proto +++ b/pkg/proto/tracoor/indexer/indexer.proto @@ -35,6 +35,20 @@ message BeaconBlock { google.protobuf.StringValue content_encoding = 11; } +message ExecutionPayloadEnvelope { + google.protobuf.StringValue id = 1; + google.protobuf.StringValue node = 2; + google.protobuf.Timestamp fetched_at = 3; + google.protobuf.UInt64Value slot = 4; + google.protobuf.UInt64Value epoch = 5; + google.protobuf.StringValue block_root = 6; + google.protobuf.StringValue node_version = 7; + google.protobuf.StringValue location = 8; + google.protobuf.StringValue network = 9; + google.protobuf.StringValue beacon_implementation = 10; + google.protobuf.StringValue content_encoding = 11; +} + message BeaconBadBlock { google.protobuf.StringValue id = 1; google.protobuf.StringValue node = 2; @@ -146,6 +160,17 @@ service Indexer { returns (CountBeaconBlockResponse) {} rpc ListUniqueBeaconBlockValues(ListUniqueBeaconBlockValuesRequest) returns (ListUniqueBeaconBlockValuesResponse) {} + + // ExecutionPayloadEnvelope + rpc CreateExecutionPayloadEnvelope(CreateExecutionPayloadEnvelopeRequest) + returns (CreateExecutionPayloadEnvelopeResponse) {} + rpc ListExecutionPayloadEnvelope(ListExecutionPayloadEnvelopeRequest) + returns (ListExecutionPayloadEnvelopeResponse) {} + rpc CountExecutionPayloadEnvelope(CountExecutionPayloadEnvelopeRequest) + returns (CountExecutionPayloadEnvelopeResponse) {} + rpc ListUniqueExecutionPayloadEnvelopeValues( + ListUniqueExecutionPayloadEnvelopeValuesRequest) + returns (ListUniqueExecutionPayloadEnvelopeValuesResponse) {} // BeaconBadBlock rpc CreateBeaconBadBlock(CreateBeaconBadBlockRequest) returns (CreateBeaconBadBlockResponse) {} @@ -229,6 +254,23 @@ message CreateBeaconBlockRequest { message CreateBeaconBlockResponse { google.protobuf.StringValue id = 1; } +message CreateExecutionPayloadEnvelopeRequest { + google.protobuf.StringValue node = 1; + google.protobuf.Timestamp fetched_at = 2; + google.protobuf.UInt64Value slot = 3; + google.protobuf.UInt64Value epoch = 4; + google.protobuf.StringValue block_root = 5; + google.protobuf.StringValue node_version = 6; + google.protobuf.StringValue location = 7; + google.protobuf.StringValue network = 8; + google.protobuf.StringValue beacon_implementation = 9; + google.protobuf.StringValue content_encoding = 10; +} + +message CreateExecutionPayloadEnvelopeResponse { + google.protobuf.StringValue id = 1; +} + message CreateBeaconBadBlockRequest { google.protobuf.StringValue node = 1; google.protobuf.Timestamp fetched_at = 2; @@ -479,6 +521,69 @@ message ListUniqueBeaconBadBlockValuesResponse { repeated string beacon_implementation = 8; } +message ListUniqueExecutionPayloadEnvelopeValuesRequest { + enum Field { + NODE = 0; + SLOT = 1; + EPOCH = 2; + BLOCK_ROOT = 3; + NODE_VERSION = 4; + LOCATION = 5; + NETWORK = 6; + BEACON_IMPLEMENTATION = 7; + } + repeated Field fields = 1; +} + +message ListUniqueExecutionPayloadEnvelopeValuesResponse { + repeated string node = 1; + repeated uint64 slot = 2; + repeated uint64 epoch = 3; + repeated string block_root = 4; + repeated string node_version = 5; + repeated string location = 6; + repeated string network = 7; + repeated string beacon_implementation = 8; +} + +message ListExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4; + string node_version = 5; + string location = 6; + string network = 7; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; + + PaginationCursor pagination = 10; + string id = 11; + string beacon_implementation = 12; +} + +message ListExecutionPayloadEnvelopeResponse { + repeated ExecutionPayloadEnvelope execution_payload_envelopes = 1; +} + +message CountExecutionPayloadEnvelopeRequest { + string node = 1; + uint64 slot = 2; + uint64 epoch = 3; + string block_root = 4; + string node_version = 5; + string location = 6; + string network = 7; + google.protobuf.Timestamp before = 8; + google.protobuf.Timestamp after = 9; + string beacon_implementation = 10; + string id = 11; +} + +message CountExecutionPayloadEnvelopeResponse { + google.protobuf.UInt64Value count = 1; +} + message ListBeaconBadBlockRequest { string node = 1; uint64 slot = 2; diff --git a/pkg/proto/tracoor/indexer/indexer_grpc.pb.go b/pkg/proto/tracoor/indexer/indexer_grpc.pb.go index da79e0f..c5f1224 100644 --- a/pkg/proto/tracoor/indexer/indexer_grpc.pb.go +++ b/pkg/proto/tracoor/indexer/indexer_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.6.2 // - protoc (unknown) -// source: indexer/indexer.proto +// source: pkg/proto/tracoor/indexer/indexer.proto package indexer @@ -15,36 +15,40 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( - Indexer_GetConfig_FullMethodName = "/indexer.Indexer/GetConfig" - Indexer_GetStorageHandshakeToken_FullMethodName = "/indexer.Indexer/GetStorageHandshakeToken" - Indexer_CreateBeaconState_FullMethodName = "/indexer.Indexer/CreateBeaconState" - Indexer_ListBeaconState_FullMethodName = "/indexer.Indexer/ListBeaconState" - Indexer_CountBeaconState_FullMethodName = "/indexer.Indexer/CountBeaconState" - Indexer_ListUniqueBeaconStateValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconStateValues" - Indexer_CreateBeaconBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBlock" - Indexer_ListBeaconBlock_FullMethodName = "/indexer.Indexer/ListBeaconBlock" - Indexer_CountBeaconBlock_FullMethodName = "/indexer.Indexer/CountBeaconBlock" - Indexer_ListUniqueBeaconBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBlockValues" - Indexer_CreateBeaconBadBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlock" - Indexer_ListBeaconBadBlock_FullMethodName = "/indexer.Indexer/ListBeaconBadBlock" - Indexer_CountBeaconBadBlock_FullMethodName = "/indexer.Indexer/CountBeaconBadBlock" - Indexer_ListUniqueBeaconBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlockValues" - Indexer_CreateBeaconBadBlob_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlob" - Indexer_ListBeaconBadBlob_FullMethodName = "/indexer.Indexer/ListBeaconBadBlob" - Indexer_CountBeaconBadBlob_FullMethodName = "/indexer.Indexer/CountBeaconBadBlob" - Indexer_ListUniqueBeaconBadBlobValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlobValues" - Indexer_CreateExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CreateExecutionBlockTrace" - Indexer_ListExecutionBlockTrace_FullMethodName = "/indexer.Indexer/ListExecutionBlockTrace" - Indexer_CountExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CountExecutionBlockTrace" - Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBlockTraceValues" - Indexer_CreateExecutionBadBlock_FullMethodName = "/indexer.Indexer/CreateExecutionBadBlock" - Indexer_ListExecutionBadBlock_FullMethodName = "/indexer.Indexer/ListExecutionBadBlock" - Indexer_CountExecutionBadBlock_FullMethodName = "/indexer.Indexer/CountExecutionBadBlock" - Indexer_ListUniqueExecutionBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBadBlockValues" + Indexer_GetConfig_FullMethodName = "/indexer.Indexer/GetConfig" + Indexer_GetStorageHandshakeToken_FullMethodName = "/indexer.Indexer/GetStorageHandshakeToken" + Indexer_CreateBeaconState_FullMethodName = "/indexer.Indexer/CreateBeaconState" + Indexer_ListBeaconState_FullMethodName = "/indexer.Indexer/ListBeaconState" + Indexer_CountBeaconState_FullMethodName = "/indexer.Indexer/CountBeaconState" + Indexer_ListUniqueBeaconStateValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconStateValues" + Indexer_CreateBeaconBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBlock" + Indexer_ListBeaconBlock_FullMethodName = "/indexer.Indexer/ListBeaconBlock" + Indexer_CountBeaconBlock_FullMethodName = "/indexer.Indexer/CountBeaconBlock" + Indexer_ListUniqueBeaconBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBlockValues" + Indexer_CreateExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/CreateExecutionPayloadEnvelope" + Indexer_ListExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/ListExecutionPayloadEnvelope" + Indexer_CountExecutionPayloadEnvelope_FullMethodName = "/indexer.Indexer/CountExecutionPayloadEnvelope" + Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionPayloadEnvelopeValues" + Indexer_CreateBeaconBadBlock_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlock" + Indexer_ListBeaconBadBlock_FullMethodName = "/indexer.Indexer/ListBeaconBadBlock" + Indexer_CountBeaconBadBlock_FullMethodName = "/indexer.Indexer/CountBeaconBadBlock" + Indexer_ListUniqueBeaconBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlockValues" + Indexer_CreateBeaconBadBlob_FullMethodName = "/indexer.Indexer/CreateBeaconBadBlob" + Indexer_ListBeaconBadBlob_FullMethodName = "/indexer.Indexer/ListBeaconBadBlob" + Indexer_CountBeaconBadBlob_FullMethodName = "/indexer.Indexer/CountBeaconBadBlob" + Indexer_ListUniqueBeaconBadBlobValues_FullMethodName = "/indexer.Indexer/ListUniqueBeaconBadBlobValues" + Indexer_CreateExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CreateExecutionBlockTrace" + Indexer_ListExecutionBlockTrace_FullMethodName = "/indexer.Indexer/ListExecutionBlockTrace" + Indexer_CountExecutionBlockTrace_FullMethodName = "/indexer.Indexer/CountExecutionBlockTrace" + Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBlockTraceValues" + Indexer_CreateExecutionBadBlock_FullMethodName = "/indexer.Indexer/CreateExecutionBadBlock" + Indexer_ListExecutionBadBlock_FullMethodName = "/indexer.Indexer/ListExecutionBadBlock" + Indexer_CountExecutionBadBlock_FullMethodName = "/indexer.Indexer/CountExecutionBadBlock" + Indexer_ListUniqueExecutionBadBlockValues_FullMethodName = "/indexer.Indexer/ListUniqueExecutionBadBlockValues" ) // IndexerClient is the client API for Indexer service. @@ -63,6 +67,11 @@ type IndexerClient interface { ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) + // ExecutionPayloadEnvelope + CreateExecutionPayloadEnvelope(ctx context.Context, in *CreateExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CreateExecutionPayloadEnvelopeResponse, error) + ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) // BeaconBadBlock CreateBeaconBadBlock(ctx context.Context, in *CreateBeaconBadBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlockResponse, error) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) @@ -94,8 +103,9 @@ func NewIndexerClient(cc grpc.ClientConnInterface) IndexerClient { } func (c *indexerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigResponse) - err := c.cc.Invoke(ctx, Indexer_GetConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_GetConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -103,8 +113,9 @@ func (c *indexerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opt } func (c *indexerClient) GetStorageHandshakeToken(ctx context.Context, in *GetStorageHandshakeTokenRequest, opts ...grpc.CallOption) (*GetStorageHandshakeTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetStorageHandshakeTokenResponse) - err := c.cc.Invoke(ctx, Indexer_GetStorageHandshakeToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_GetStorageHandshakeToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +123,9 @@ func (c *indexerClient) GetStorageHandshakeToken(ctx context.Context, in *GetSto } func (c *indexerClient) CreateBeaconState(ctx context.Context, in *CreateBeaconStateRequest, opts ...grpc.CallOption) (*CreateBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -121,8 +133,9 @@ func (c *indexerClient) CreateBeaconState(ctx context.Context, in *CreateBeaconS } func (c *indexerClient) ListBeaconState(ctx context.Context, in *ListBeaconStateRequest, opts ...grpc.CallOption) (*ListBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -130,8 +143,9 @@ func (c *indexerClient) ListBeaconState(ctx context.Context, in *ListBeaconState } func (c *indexerClient) CountBeaconState(ctx context.Context, in *CountBeaconStateRequest, opts ...grpc.CallOption) (*CountBeaconStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconStateResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +153,9 @@ func (c *indexerClient) CountBeaconState(ctx context.Context, in *CountBeaconSta } func (c *indexerClient) ListUniqueBeaconStateValues(ctx context.Context, in *ListUniqueBeaconStateValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconStateValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconStateValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconStateValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconStateValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +163,9 @@ func (c *indexerClient) ListUniqueBeaconStateValues(ctx context.Context, in *Lis } func (c *indexerClient) CreateBeaconBlock(ctx context.Context, in *CreateBeaconBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +173,9 @@ func (c *indexerClient) CreateBeaconBlock(ctx context.Context, in *CreateBeaconB } func (c *indexerClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlockRequest, opts ...grpc.CallOption) (*ListBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +183,9 @@ func (c *indexerClient) ListBeaconBlock(ctx context.Context, in *ListBeaconBlock } func (c *indexerClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlockRequest, opts ...grpc.CallOption) (*CountBeaconBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +193,49 @@ func (c *indexerClient) CountBeaconBlock(ctx context.Context, in *CountBeaconBlo } func (c *indexerClient) ListUniqueBeaconBlockValues(ctx context.Context, in *ListUniqueBeaconBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBlockValues_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) CreateExecutionPayloadEnvelope(ctx context.Context, in *CreateExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CreateExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) ListExecutionPayloadEnvelope(ctx context.Context, in *ListExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*ListExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_ListExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) CountExecutionPayloadEnvelope(ctx context.Context, in *CountExecutionPayloadEnvelopeRequest, opts ...grpc.CallOption) (*CountExecutionPayloadEnvelopeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CountExecutionPayloadEnvelopeResponse) + err := c.cc.Invoke(ctx, Indexer_CountExecutionPayloadEnvelope_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerClient) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, in *ListUniqueExecutionPayloadEnvelopeValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListUniqueExecutionPayloadEnvelopeValuesResponse) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +243,9 @@ func (c *indexerClient) ListUniqueBeaconBlockValues(ctx context.Context, in *Lis } func (c *indexerClient) CreateBeaconBadBlock(ctx context.Context, in *CreateBeaconBadBlockRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -193,8 +253,9 @@ func (c *indexerClient) CreateBeaconBadBlock(ctx context.Context, in *CreateBeac } func (c *indexerClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBadBlockRequest, opts ...grpc.CallOption) (*ListBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,8 +263,9 @@ func (c *indexerClient) ListBeaconBadBlock(ctx context.Context, in *ListBeaconBa } func (c *indexerClient) CountBeaconBadBlock(ctx context.Context, in *CountBeaconBadBlockRequest, opts ...grpc.CallOption) (*CountBeaconBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -211,8 +273,9 @@ func (c *indexerClient) CountBeaconBadBlock(ctx context.Context, in *CountBeacon } func (c *indexerClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in *ListUniqueBeaconBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -220,8 +283,9 @@ func (c *indexerClient) ListUniqueBeaconBadBlockValues(ctx context.Context, in * } func (c *indexerClient) CreateBeaconBadBlob(ctx context.Context, in *CreateBeaconBadBlobRequest, opts ...grpc.CallOption) (*CreateBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -229,8 +293,9 @@ func (c *indexerClient) CreateBeaconBadBlob(ctx context.Context, in *CreateBeaco } func (c *indexerClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBadBlobRequest, opts ...grpc.CallOption) (*ListBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -238,8 +303,9 @@ func (c *indexerClient) ListBeaconBadBlob(ctx context.Context, in *ListBeaconBad } func (c *indexerClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconBadBlobRequest, opts ...grpc.CallOption) (*CountBeaconBadBlobResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountBeaconBadBlobResponse) - err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlob_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountBeaconBadBlob_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -247,8 +313,9 @@ func (c *indexerClient) CountBeaconBadBlob(ctx context.Context, in *CountBeaconB } func (c *indexerClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *ListUniqueBeaconBadBlobValuesRequest, opts ...grpc.CallOption) (*ListUniqueBeaconBadBlobValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueBeaconBadBlobValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueBeaconBadBlobValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -256,8 +323,9 @@ func (c *indexerClient) ListUniqueBeaconBadBlobValues(ctx context.Context, in *L } func (c *indexerClient) CreateExecutionBlockTrace(ctx context.Context, in *CreateExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CreateExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_CreateExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -265,8 +333,9 @@ func (c *indexerClient) CreateExecutionBlockTrace(ctx context.Context, in *Creat } func (c *indexerClient) ListExecutionBlockTrace(ctx context.Context, in *ListExecutionBlockTraceRequest, opts ...grpc.CallOption) (*ListExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_ListExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -274,8 +343,9 @@ func (c *indexerClient) ListExecutionBlockTrace(ctx context.Context, in *ListExe } func (c *indexerClient) CountExecutionBlockTrace(ctx context.Context, in *CountExecutionBlockTraceRequest, opts ...grpc.CallOption) (*CountExecutionBlockTraceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBlockTraceResponse) - err := c.cc.Invoke(ctx, Indexer_CountExecutionBlockTrace_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountExecutionBlockTrace_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -283,8 +353,9 @@ func (c *indexerClient) CountExecutionBlockTrace(ctx context.Context, in *CountE } func (c *indexerClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, in *ListUniqueExecutionBlockTraceValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBlockTraceValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBlockTraceValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBlockTraceValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -292,8 +363,9 @@ func (c *indexerClient) ListUniqueExecutionBlockTraceValues(ctx context.Context, } func (c *indexerClient) CreateExecutionBadBlock(ctx context.Context, in *CreateExecutionBadBlockRequest, opts ...grpc.CallOption) (*CreateExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CreateExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CreateExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -301,8 +373,9 @@ func (c *indexerClient) CreateExecutionBadBlock(ctx context.Context, in *CreateE } func (c *indexerClient) ListExecutionBadBlock(ctx context.Context, in *ListExecutionBadBlockRequest, opts ...grpc.CallOption) (*ListExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_ListExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -310,8 +383,9 @@ func (c *indexerClient) ListExecutionBadBlock(ctx context.Context, in *ListExecu } func (c *indexerClient) CountExecutionBadBlock(ctx context.Context, in *CountExecutionBadBlockRequest, opts ...grpc.CallOption) (*CountExecutionBadBlockResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CountExecutionBadBlockResponse) - err := c.cc.Invoke(ctx, Indexer_CountExecutionBadBlock_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_CountExecutionBadBlock_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -319,8 +393,9 @@ func (c *indexerClient) CountExecutionBadBlock(ctx context.Context, in *CountExe } func (c *indexerClient) ListUniqueExecutionBadBlockValues(ctx context.Context, in *ListUniqueExecutionBadBlockValuesRequest, opts ...grpc.CallOption) (*ListUniqueExecutionBadBlockValuesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUniqueExecutionBadBlockValuesResponse) - err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Indexer_ListUniqueExecutionBadBlockValues_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -329,7 +404,7 @@ func (c *indexerClient) ListUniqueExecutionBadBlockValues(ctx context.Context, i // IndexerServer is the server API for Indexer service. // All implementations must embed UnimplementedIndexerServer -// for forward compatibility +// for forward compatibility. type IndexerServer interface { GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) GetStorageHandshakeToken(context.Context, *GetStorageHandshakeTokenRequest) (*GetStorageHandshakeTokenResponse, error) @@ -343,6 +418,11 @@ type IndexerServer interface { ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) + // ExecutionPayloadEnvelope + CreateExecutionPayloadEnvelope(context.Context, *CreateExecutionPayloadEnvelopeRequest) (*CreateExecutionPayloadEnvelopeResponse, error) + ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) + CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) + ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) // BeaconBadBlock CreateBeaconBadBlock(context.Context, *CreateBeaconBadBlockRequest) (*CreateBeaconBadBlockResponse, error) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) @@ -366,89 +446,105 @@ type IndexerServer interface { mustEmbedUnimplementedIndexerServer() } -// UnimplementedIndexerServer must be embedded to have forward compatible implementations. -type UnimplementedIndexerServer struct { -} +// UnimplementedIndexerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedIndexerServer struct{} func (UnimplementedIndexerServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") + return nil, status.Error(codes.Unimplemented, "method GetConfig not implemented") } func (UnimplementedIndexerServer) GetStorageHandshakeToken(context.Context, *GetStorageHandshakeTokenRequest) (*GetStorageHandshakeTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetStorageHandshakeToken not implemented") + return nil, status.Error(codes.Unimplemented, "method GetStorageHandshakeToken not implemented") } func (UnimplementedIndexerServer) CreateBeaconState(context.Context, *CreateBeaconStateRequest) (*CreateBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconState not implemented") } func (UnimplementedIndexerServer) ListBeaconState(context.Context, *ListBeaconStateRequest) (*ListBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconState not implemented") } func (UnimplementedIndexerServer) CountBeaconState(context.Context, *CountBeaconStateRequest) (*CountBeaconStateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconState not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconState not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconStateValues(context.Context, *ListUniqueBeaconStateValuesRequest) (*ListUniqueBeaconStateValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconStateValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBlock(context.Context, *CreateBeaconBlockRequest) (*CreateBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBlock not implemented") } func (UnimplementedIndexerServer) ListBeaconBlock(context.Context, *ListBeaconBlockRequest) (*ListBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBlock not implemented") } func (UnimplementedIndexerServer) CountBeaconBlock(context.Context, *CountBeaconBlockRequest) (*CountBeaconBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBlockValues(context.Context, *ListUniqueBeaconBlockValuesRequest) (*ListUniqueBeaconBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBlockValues not implemented") +} +func (UnimplementedIndexerServer) CreateExecutionPayloadEnvelope(context.Context, *CreateExecutionPayloadEnvelopeRequest) (*CreateExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) ListExecutionPayloadEnvelope(context.Context, *ListExecutionPayloadEnvelopeRequest) (*ListExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) CountExecutionPayloadEnvelope(context.Context, *CountExecutionPayloadEnvelopeRequest) (*CountExecutionPayloadEnvelopeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CountExecutionPayloadEnvelope not implemented") +} +func (UnimplementedIndexerServer) ListUniqueExecutionPayloadEnvelopeValues(context.Context, *ListUniqueExecutionPayloadEnvelopeValuesRequest) (*ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionPayloadEnvelopeValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBadBlock(context.Context, *CreateBeaconBadBlockRequest) (*CreateBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) ListBeaconBadBlock(context.Context, *ListBeaconBadBlockRequest) (*ListBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) CountBeaconBadBlock(context.Context, *CountBeaconBadBlockRequest) (*CountBeaconBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBadBlockValues(context.Context, *ListUniqueBeaconBadBlockValuesRequest) (*ListUniqueBeaconBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlockValues not implemented") } func (UnimplementedIndexerServer) CreateBeaconBadBlob(context.Context, *CreateBeaconBadBlobRequest) (*CreateBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) ListBeaconBadBlob(context.Context, *ListBeaconBadBlobRequest) (*ListBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method ListBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) CountBeaconBadBlob(context.Context, *CountBeaconBadBlobRequest) (*CountBeaconBadBlobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountBeaconBadBlob not implemented") + return nil, status.Error(codes.Unimplemented, "method CountBeaconBadBlob not implemented") } func (UnimplementedIndexerServer) ListUniqueBeaconBadBlobValues(context.Context, *ListUniqueBeaconBadBlobValuesRequest) (*ListUniqueBeaconBadBlobValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueBeaconBadBlobValues not implemented") } func (UnimplementedIndexerServer) CreateExecutionBlockTrace(context.Context, *CreateExecutionBlockTraceRequest) (*CreateExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) ListExecutionBlockTrace(context.Context, *ListExecutionBlockTraceRequest) (*ListExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) CountExecutionBlockTrace(context.Context, *CountExecutionBlockTraceRequest) (*CountExecutionBlockTraceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBlockTrace not implemented") } func (UnimplementedIndexerServer) ListUniqueExecutionBlockTraceValues(context.Context, *ListUniqueExecutionBlockTraceValuesRequest) (*ListUniqueExecutionBlockTraceValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBlockTraceValues not implemented") } func (UnimplementedIndexerServer) CreateExecutionBadBlock(context.Context, *CreateExecutionBadBlockRequest) (*CreateExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) ListExecutionBadBlock(context.Context, *ListExecutionBadBlockRequest) (*ListExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method ListExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) CountExecutionBadBlock(context.Context, *CountExecutionBadBlockRequest) (*CountExecutionBadBlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CountExecutionBadBlock not implemented") + return nil, status.Error(codes.Unimplemented, "method CountExecutionBadBlock not implemented") } func (UnimplementedIndexerServer) ListUniqueExecutionBadBlockValues(context.Context, *ListUniqueExecutionBadBlockValuesRequest) (*ListUniqueExecutionBadBlockValuesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") + return nil, status.Error(codes.Unimplemented, "method ListUniqueExecutionBadBlockValues not implemented") } func (UnimplementedIndexerServer) mustEmbedUnimplementedIndexerServer() {} +func (UnimplementedIndexerServer) testEmbeddedByValue() {} // UnsafeIndexerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to IndexerServer will @@ -458,6 +554,13 @@ type UnsafeIndexerServer interface { } func RegisterIndexerServer(s grpc.ServiceRegistrar, srv IndexerServer) { + // If the following call panics, it indicates UnimplementedIndexerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Indexer_ServiceDesc, srv) } @@ -641,6 +744,78 @@ func _Indexer_ListUniqueBeaconBlockValues_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _Indexer_CreateExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).CreateExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_CreateExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).CreateExecutionPayloadEnvelope(ctx, req.(*CreateExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_ListExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).ListExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_ListExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).ListExecutionPayloadEnvelope(ctx, req.(*ListExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_CountExecutionPayloadEnvelope_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CountExecutionPayloadEnvelopeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).CountExecutionPayloadEnvelope(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_CountExecutionPayloadEnvelope_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).CountExecutionPayloadEnvelope(ctx, req.(*CountExecutionPayloadEnvelopeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Indexer_ListUniqueExecutionPayloadEnvelopeValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUniqueExecutionPayloadEnvelopeValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Indexer_ListUniqueExecutionPayloadEnvelopeValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServer).ListUniqueExecutionPayloadEnvelopeValues(ctx, req.(*ListUniqueExecutionPayloadEnvelopeValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Indexer_CreateBeaconBadBlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateBeaconBadBlockRequest) if err := dec(in); err != nil { @@ -976,6 +1151,22 @@ var Indexer_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListUniqueBeaconBlockValues", Handler: _Indexer_ListUniqueBeaconBlockValues_Handler, }, + { + MethodName: "CreateExecutionPayloadEnvelope", + Handler: _Indexer_CreateExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListExecutionPayloadEnvelope", + Handler: _Indexer_ListExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "CountExecutionPayloadEnvelope", + Handler: _Indexer_CountExecutionPayloadEnvelope_Handler, + }, + { + MethodName: "ListUniqueExecutionPayloadEnvelopeValues", + Handler: _Indexer_ListUniqueExecutionPayloadEnvelopeValues_Handler, + }, { MethodName: "CreateBeaconBadBlock", Handler: _Indexer_CreateBeaconBadBlock_Handler, @@ -1042,5 +1233,5 @@ var Indexer_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "indexer/indexer.proto", + Metadata: "pkg/proto/tracoor/indexer/indexer.proto", } diff --git a/pkg/proto/tracoor/indexer/validate.go b/pkg/proto/tracoor/indexer/validate.go index 1e3e234..c967738 100644 --- a/pkg/proto/tracoor/indexer/validate.go +++ b/pkg/proto/tracoor/indexer/validate.go @@ -141,6 +141,74 @@ func (r *ListUniqueBeaconBlockValuesRequest) Validate() error { return nil } +func (s *ExecutionPayloadEnvelope) Validate() error { + if s == nil { + return errors.New("execution payload envelope is nil") + } + + if s.GetEpoch() == nil { + return errors.New("epoch is required") + } + + if s.GetSlot() == nil { + return errors.New("slot is required") + } + + if s.GetBlockRoot().Value == "" { + return errors.New("block root is required") + } + + if s.GetId() == nil { + return errors.New("id is required") + } + + if s.GetBeaconImplementation().GetValue() == "" { + return errors.New("beacon implementation is required") + } + + return nil +} + +func (req *CreateExecutionPayloadEnvelopeRequest) Validate() error { + if req.GetLocation().GetValue() == "" { + return fmt.Errorf("location is required") + } + + if req.GetNode().GetValue() == "" { + return fmt.Errorf("node is required") + } + + if req.Epoch == nil { + return fmt.Errorf("epoch is required") + } + + if req.Slot == nil { + return fmt.Errorf("slot is required") + } + + if req.GetBlockRoot().Value == "" { + return fmt.Errorf("block root is required") + } + + if req.GetBeaconImplementation().Value == "" { + return fmt.Errorf("beacon implementation is required") + } + + return nil +} + +func (r *ListUniqueExecutionPayloadEnvelopeValuesRequest) Validate() error { + if r == nil { + return errors.New("request is nil") + } + + if len(r.Fields) == 0 { + return errors.New("fields is required") + } + + return nil +} + func (s *BeaconBadBlock) Validate() error { if s == nil { return errors.New("beacon bad block is nil") diff --git a/pkg/server/download.go b/pkg/server/download.go index 5268704..7bb4d91 100644 --- a/pkg/server/download.go +++ b/pkg/server/download.go @@ -53,6 +53,10 @@ func (d *ObjectDownloader) Start() error { return fmt.Errorf("failed to register beacon block download handler: %v", err) } + if err := d.mux.HandlePath("GET", "/download/execution_payload_envelope/{id}", d.executionPayloadEnvelopeHandler); err != nil { + return fmt.Errorf("failed to register execution payload envelope download handler: %v", err) + } + if err := d.mux.HandlePath("GET", "/download/beacon_bad_block/{id}", d.beaconBadBlockHandler); err != nil { return fmt.Errorf("failed to register beacon bad block download handler: %v", err) } @@ -248,6 +252,94 @@ func (d *ObjectDownloader) beaconBlockHandler(w http.ResponseWriter, r *http.Req } } +func (d *ObjectDownloader) executionPayloadEnvelopeHandler(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { + ctx := r.Context() + + id := pathParams["id"] + if id == "" { + d.writeJSONError(w, "No ID provided", http.StatusBadRequest) + + return + } + + resp, err := d.indexer.ListExecutionPayloadEnvelope(ctx, &indexer.ListExecutionPayloadEnvelopeRequest{ + Id: id, + Pagination: &indexer.PaginationCursor{ + Limit: 1, + }, + }) + if err != nil { + d.log.WithError(err).Errorf("Failed to list execution payload envelopes for ID %s", id) + + d.writeJSONError(w, "Failed to list execution payload envelopes", http.StatusInternalServerError) + + return + } + + if len(resp.ExecutionPayloadEnvelopes) == 0 { + d.writeJSONError(w, "No execution payload envelopes found", http.StatusNotFound) + + return + } + + if len(resp.ExecutionPayloadEnvelopes) > 1 { + d.writeJSONError(w, "More than one execution payload envelope found", http.StatusInternalServerError) + + return + } + + envelope := resp.ExecutionPayloadEnvelopes[0] + + if d.store.PreferURLs() { + var itemURL string + + itemURL, err = d.store.GetExecutionPayloadEnvelopeURL(ctx, &tStore.GetURLParams{ + Location: envelope.Location.Value, + Expiry: 3600, + ContentEncoding: envelope.ContentEncoding.GetValue(), + }) + if err != nil { + d.log.WithError(err).Errorf("Failed to get URL for execution payload envelope ID %s", id) + d.writeJSONError(w, "Failed to get URL for item", http.StatusInternalServerError) + + return + } + + http.Redirect(w, r, itemURL, http.StatusTemporaryRedirect) + + return + } + + data, err := d.store.GetExecutionPayloadEnvelope(ctx, envelope.Location.Value) + if err != nil { + d.log.WithError(err).Errorf("Failed to get execution payload envelope from store for ID %s from %s", id, envelope.Location.Value) + + d.writeJSONError(w, "Failed to get execution payload envelope", http.StatusInternalServerError) + + return + } + + w.Header().Set("Content-Type", string(mime.GetContentTypeFromExtension(filepath.Ext(envelope.Location.Value)))) + + filename := filepath.Base(envelope.Location.Value) + + algo, err := compression.GetCompressionAlgorithmFromContentEncoding(envelope.ContentEncoding.GetValue()) + if err == nil { + w.Header().Set("Content-Encoding", algo.ContentEncoding) + } else if compression.HasCompressionExtension(envelope.Location.Value, algo) { + w.Header().Set("Content-Encoding", algo.ContentEncoding) + + filename = compression.RemoveExtension(filename) + } + + w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%q", filename)) + + _, err = w.Write(*data) + if err != nil { + d.writeJSONError(w, "Failed to write response", http.StatusInternalServerError) + } +} + func (d *ObjectDownloader) beaconBadBlockHandler(w http.ResponseWriter, r *http.Request, pathParams map[string]string) { ctx := r.Context() diff --git a/pkg/server/persistence/db.go b/pkg/server/persistence/db.go index 738523d..b5534bb 100644 --- a/pkg/server/persistence/db.go +++ b/pkg/server/persistence/db.go @@ -80,6 +80,11 @@ func (i *Indexer) Start(ctx context.Context) error { return perrors.Wrap(err, "failed to auto migrate beacon block") } + err = i.db.AutoMigrate(&ExecutionPayloadEnvelope{}) + if err != nil { + return perrors.Wrap(err, "failed to auto migrate execution payload envelope") + } + err = i.db.AutoMigrate(&BeaconBadBlock{}) if err != nil { return perrors.Wrap(err, "failed to auto migrate beacon bad block") diff --git a/pkg/server/persistence/execution_payload_envelope.go b/pkg/server/persistence/execution_payload_envelope.go new file mode 100644 index 0000000..ec18ad3 --- /dev/null +++ b/pkg/server/persistence/execution_payload_envelope.go @@ -0,0 +1,383 @@ +package persistence + +import ( + "context" + "errors" + "strings" + "time" + + "gorm.io/gorm" +) + +type ExecutionPayloadEnvelope struct { + gorm.Model + ID string `gorm:"primaryKey"` + Node string `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:1"` + // We have to use int64 here as SQLite doesn't support uint64. This sucks + // but slot 9223372036854775808 is probably around the heat death + // of the universe so we should be OK. + Slot int64 `gorm:"index:idx_epe_slot,where:deleted_at IS NULL;index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:2"` + Epoch int64 + BlockRoot string `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:3"` + FetchedAt time.Time `gorm:"index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:5;index:idx_epe_fetchedat,where:deleted_at IS NULL;index:idx_epe_fetchedat_network,where:deleted_at IS NULL,priority:1"` + BeaconImplementation string + NodeVersion string `gorm:"not null;default:''"` + ContentEncoding string `gorm:"not null;default:''"` + Location string `gorm:"not null;default:''"` + Network string `gorm:"not null;default:'';index;index:idx_epe_node_slot_blockroot_network_fetchedat,where:deleted_at IS NULL,priority:4;index:idx_epe_network,where:deleted_at IS NULL;index:idx_epe_network,where:deleted_at IS NULL;index:idx_epe_fetchedat_network,where:deleted_at IS NULL,priority:2"` +} + +type ExecutionPayloadEnvelopeFilter struct { + ID *string + Node *string + Before *time.Time + After *time.Time + Slot *uint64 + Epoch *uint64 + BlockRoot *string + NodeVersion *string + Location *string + Network *string + BeaconImplementation *string +} + +func (f *ExecutionPayloadEnvelopeFilter) AddID(id string) { + f.ID = &id +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNode(node string) { + f.Node = &node +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBefore(before time.Time) { + f.Before = &before +} + +func (f *ExecutionPayloadEnvelopeFilter) AddAfter(after time.Time) { + f.After = &after +} + +func (f *ExecutionPayloadEnvelopeFilter) AddSlot(slot uint64) { + f.Slot = &slot +} + +func (f *ExecutionPayloadEnvelopeFilter) AddEpoch(epoch uint64) { + f.Epoch = &epoch +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBlockRoot(blockRoot string) { + f.BlockRoot = &blockRoot +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNodeVersion(nodeVersion string) { + f.NodeVersion = &nodeVersion +} + +func (f *ExecutionPayloadEnvelopeFilter) AddLocation(location string) { + f.Location = &location +} + +func (f *ExecutionPayloadEnvelopeFilter) AddNetwork(network string) { + f.Network = &network +} + +func (f *ExecutionPayloadEnvelopeFilter) AddBeaconImplementation(beaconImplementation string) { + f.BeaconImplementation = &beaconImplementation +} + +func (f *ExecutionPayloadEnvelopeFilter) Validate() error { + if f.ID == nil && + f.Node == nil && + f.Before == nil && + f.After == nil && + f.Slot == nil && + f.Epoch == nil && + f.BlockRoot == nil && + f.NodeVersion == nil && + f.Location == nil && + f.BeaconImplementation == nil && + f.Network == nil { + return errors.New("no filter specified") + } + + return nil +} + +func (f *ExecutionPayloadEnvelopeFilter) ApplyToQuery(query *gorm.DB) (*gorm.DB, error) { + if f.ID != nil { + query = query.Where("id = ?", f.ID) + } + + if f.Node != nil { + query = query.Where("node = ?", f.Node) + } + + if f.Before != nil { + query = query.Where("fetched_at <= ?", timestampFormatForDB(*f.Before)) + } + + if f.After != nil { + query = query.Where("fetched_at >= ?", timestampFormatForDB(*f.After)) + } + + if f.Slot != nil { + query = query.Where("slot = ?", f.Slot) + } + + if f.Epoch != nil { + query = query.Where("epoch = ?", f.Epoch) + } + + if f.BlockRoot != nil { + query = query.Where("block_root = ?", f.BlockRoot) + } + + if f.NodeVersion != nil { + query = query.Where("node_version = ?", f.NodeVersion) + } + + if f.Location != nil { + query = query.Where("location = ?", f.Location) + } + + if f.Network != nil { + query = query.Where("network = ?", f.Network) + } + + if f.BeaconImplementation != nil { + query = query.Where("beacon_implementation = ?", f.BeaconImplementation) + } + + return query, nil +} + +func (i *Indexer) InsertExecutionPayloadEnvelope(ctx context.Context, envelope *ExecutionPayloadEnvelope) error { + operation := OperationInsertExecutionPayloadEnvelope + i.metrics.ObserveOperation(operation) + + result := i.db.WithContext(ctx).Create(envelope) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + } + + return result.Error +} + +func (i *Indexer) RemoveExecutionPayloadEnvelope(ctx context.Context, id string) error { + operation := OperationDeleteExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + result := i.db.WithContext(ctx).Unscoped().Where("id = ?", id).Delete(&ExecutionPayloadEnvelope{}) + + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + } + + return result.Error +} + +func (i *Indexer) CountExecutionPayloadEnvelope(ctx context.Context, filter *ExecutionPayloadEnvelopeFilter) (int64, error) { + operation := OperationCountExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + var count int64 + + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}) + + query, err := filter.ApplyToQuery(query) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return 0, err + } + + result := query.Count(&count) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return 0, result.Error + } + + return count, nil +} + +func (i *Indexer) ListExecutionPayloadEnvelope(ctx context.Context, filter *ExecutionPayloadEnvelopeFilter, page *PaginationCursor) ([]*ExecutionPayloadEnvelope, error) { + operation := OperationListExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + var ExecutionPayloadEnvelopes []*ExecutionPayloadEnvelope + + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}) + + if page != nil { + query = page.ApplyOffsetLimit(query) + + query = page.ApplyOrderBy(query) + } + + query, err := filter.ApplyToQuery(query) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + result := query.Find(&ExecutionPayloadEnvelopes) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return nil, result.Error + } + + return ExecutionPayloadEnvelopes, nil +} + +type DistinctExecutionPayloadEnvelopeValueResults struct { + Node []string + Slot []uint64 + Epoch []uint64 + BlockRoot []string + NodeVersion []string + Location []string + Network []string + BeaconImplementation []string +} + +//nolint:errcheck // casting fine here. +func (i *Indexer) DistinctExecutionPayloadEnvelopeValues(ctx context.Context, fields []string) (*DistinctExecutionPayloadEnvelopeValueResults, error) { + operation := OperationDistinctValues + + i.metrics.ObserveOperation(operation) + + results := &DistinctExecutionPayloadEnvelopeValueResults{ + Node: make([]string, 0), + Slot: make([]uint64, 0), + Epoch: make([]uint64, 0), + BlockRoot: make([]string, 0), + NodeVersion: make([]string, 0), + Location: make([]string, 0), + Network: make([]string, 0), + BeaconImplementation: make([]string, 0), + } + query := i.db.WithContext(ctx).Model(&ExecutionPayloadEnvelope{}).Select(fields).Group(strings.Join(fields, ", ")).Limit(1000) + + rows, err := query.Rows() + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + defer rows.Close() + + valueSets := make(map[string]map[interface{}]bool) + for _, field := range fields { + valueSets[field] = make(map[interface{}]bool) + } + + var values []interface{} + for rows.Next() { + values = make([]interface{}, len(fields)) + valuePtrs := make([]interface{}, len(fields)) + + for i := range values { + valuePtrs[i] = &values[i] + } + + err := rows.Scan(valuePtrs...) + if err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + for i, field := range fields { + if !valueSets[field][values[i]] { + switch field { + case KeyNode: + results.Node = append(results.Node, values[i].(string)) + case KeySlot: + //nolint:gosec // not worried about int64 overflow here + results.Slot = append(results.Slot, uint64(values[i].(int64))) + case KeyEpoch: + //nolint:gosec // not worried about int64 overflow here + results.Epoch = append(results.Epoch, uint64(values[i].(int64))) + case KeyBlockRoot: + results.BlockRoot = append(results.BlockRoot, values[i].(string)) + case KeyNodeVersion: + results.NodeVersion = append(results.NodeVersion, values[i].(string)) + case KeyLocation: + results.Location = append(results.Location, values[i].(string)) + case KeyNetwork: + results.Network = append(results.Network, values[i].(string)) + case KeyBeaconImplementation: + results.BeaconImplementation = append(results.BeaconImplementation, values[i].(string)) + } + + valueSets[field][values[i]] = true + } + } + } + + if err := rows.Err(); err != nil { + i.metrics.ObserveOperationError(operation) + + return nil, err + } + + return results, nil +} + +func (i *Indexer) DeleteExecutionPayloadEnvelope(ctx context.Context, id string) error { + operation := OperationDeleteExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + query := i.db.WithContext(ctx) + + result := query.Unscoped().Where("id = ?", id).Delete(&ExecutionPayloadEnvelope{}) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return result.Error + } + + if result.RowsAffected == 0 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope not found") + } + + return nil +} + +func (i *Indexer) UpdateExecutionPayloadEnvelope(ctx context.Context, envelope *ExecutionPayloadEnvelope) error { + operation := OperationUpdateExecutionPayloadEnvelope + + i.metrics.ObserveOperation(operation) + + query := i.db.WithContext(ctx) + + result := query.Save(envelope) + if result.Error != nil { + i.metrics.ObserveOperationError(operation) + + return result.Error + } + + if result.RowsAffected == 0 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope not found") + } + + if result.RowsAffected != 1 { + i.metrics.ObserveOperationError(operation) + + return errors.New("execution payload envelope update affected more than one row") + } + + return nil +} diff --git a/pkg/server/persistence/execution_payload_envelope_test.go b/pkg/server/persistence/execution_payload_envelope_test.go new file mode 100644 index 0000000..dcb6eb2 --- /dev/null +++ b/pkg/server/persistence/execution_payload_envelope_test.go @@ -0,0 +1,318 @@ +package persistence + +import ( + "context" + "fmt" + "math/rand" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "gopkg.in/DATA-DOG/go-sqlmock.v1" +) + +func generateRandomExecutionPayloadEnvelope() *ExecutionPayloadEnvelope { + return &ExecutionPayloadEnvelope{ + ID: generateRandomString(10), + Node: generateRandomString(5), + Slot: generateRandomInt64(), + Epoch: generateRandomInt64(), + BlockRoot: generateRandomString(32), + FetchedAt: time.Now(), + BeaconImplementation: generateRandomString(15), + NodeVersion: generateRandomString(8), + Location: generateRandomString(10), + Network: generateRandomString(5), + } +} +func TestInsertExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + mock.ExpectBegin() + mock.ExpectExec("INSERT INTO").WithArgs( + sqlmock.AnyArg(), sqlmock.AnyArg(), nil, block.ID, block.Node, block.Slot, block.Epoch, + block.BlockRoot, block.FetchedAt, block.BeaconImplementation, block.NodeVersion, + block.Location, block.Network, + ).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) +} + +func TestRemoveExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + id := testID + + mock.ExpectBegin() + mock.ExpectExec("DELETE FROM").WithArgs(id).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.RemoveExecutionPayloadEnvelope(ctx, id) + assert.NoError(t, err) +} + +func TestCountExecutionPayloadEnvelope(t *testing.T) { + indexer, _, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + filter := &ExecutionPayloadEnvelopeFilter{ + ID: &block.ID, + } + + count, err := indexer.CountExecutionPayloadEnvelope(ctx, filter) + assert.NoError(t, err) + assert.Equal(t, int64(1), count) +} + +func TestListExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + filter := &ExecutionPayloadEnvelopeFilter{ + ID: &block.ID, + } + page := &PaginationCursor{} + + mock.ExpectQuery("SELECT \\* FROM").WithArgs(filter.ID).WillReturnRows(sqlmock.NewRows([]string{"id", "node"}).AddRow(testID, "test-node")) + + blocks, err := indexer.ListExecutionPayloadEnvelope(ctx, filter, page) + assert.NoError(t, err) + assert.Len(t, blocks, 1) + assert.Equal(t, block.ID, blocks[0].ID) + assert.Equal(t, block.Node, blocks[0].Node) +} + +func TestUpdateExecutionPayloadEnvelope(t *testing.T) { + indexer, mock, err := NewMockIndexer() + assert.NoError(t, err) + + ctx := context.Background() + block := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) + + mock.ExpectBegin() + mock.ExpectExec("UPDATE").WithArgs( + block.ID, block.Node, block.Slot, block.Epoch, block.BlockRoot, block.FetchedAt, + block.BeaconImplementation, block.NodeVersion, block.Location, block.Network, + ).WillReturnResult(sqlmock.NewResult(1, 1)) + mock.ExpectCommit() + + err = indexer.UpdateExecutionPayloadEnvelope(ctx, block) + assert.NoError(t, err) +} + +//nolint:gocyclo // Test is long but manageable +func TestExecutionPayloadEnvelopeFilters(t *testing.T) { + t.Run("By random combinations", func(t *testing.T) { + indexer, _, err := NewMockIndexer() + if err != nil { + t.Fatal(err) + } + + // Add 10000 random execution payload envelopes + for i := 0; i < 10000; i++ { + id := uuid.New().String() + node := fmt.Sprintf("node-%d", i) + slot := int64(rand.Intn(1000)) + epoch := int64(rand.Intn(100)) + blockRoot := fmt.Sprintf("blockRoot-%d", rand.Intn(100)) + nodeVersion := fmt.Sprintf("version%d", rand.Intn(10)) + location := fmt.Sprintf("location%d", rand.Intn(10)) + network := fmt.Sprintf("network%d", rand.Intn(10)) + beaconImplementation := fmt.Sprintf("implementation%d", rand.Intn(10)) + + beaconBlock := &ExecutionPayloadEnvelope{ + ID: id, + Node: node, + Slot: slot, + Epoch: epoch, + BlockRoot: blockRoot, + FetchedAt: time.Now(), + NodeVersion: nodeVersion, + Location: location, + Network: network, + BeaconImplementation: beaconImplementation, + } + + err = indexer.InsertExecutionPayloadEnvelope(context.Background(), beaconBlock) + if err != nil { + t.Fatal(err) + } + } + + // List execution payload envelopes with random filters + for i := 0; i < 5000; i++ { + var filter ExecutionPayloadEnvelopeFilter + + if rand.Intn(2) == 1 { + filter.AddID(uuid.New().String()) + } + + if rand.Intn(2) == 1 { + filter.AddNode(fmt.Sprintf("node-%d", rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddBefore(time.Now()) + } + + if rand.Intn(2) == 1 { + filter.AddAfter(time.Now().Add(-24 * time.Hour)) + } + + if rand.Intn(2) == 1 { + filter.AddSlot(uint64(rand.Intn(1000))) + } + + if rand.Intn(2) == 1 { + filter.AddEpoch(uint64(rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddBlockRoot(fmt.Sprintf("blockRoot-%d", rand.Intn(100))) + } + + if rand.Intn(2) == 1 { + filter.AddNodeVersion(fmt.Sprintf("version%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddLocation(fmt.Sprintf("location%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddNetwork(fmt.Sprintf("network%d", rand.Intn(10))) + } + + if rand.Intn(2) == 1 { + filter.AddBeaconImplementation(fmt.Sprintf("implementation%d", rand.Intn(10))) + } + + beaconBlocks, err := indexer.ListExecutionPayloadEnvelope(context.Background(), &filter, &PaginationCursor{}) + if err != nil { + t.Fatal(err) + } + + for _, beaconBlock := range beaconBlocks { + if filter.ID != nil && *filter.ID != beaconBlock.ID { + t.Fatalf("expected ID %s, got %s", *filter.ID, beaconBlock.ID) + } + + if filter.Node != nil && *filter.Node != beaconBlock.Node { + t.Fatalf("expected Node %s, got %s", *filter.Node, beaconBlock.Node) + } + + if filter.Before != nil && beaconBlock.FetchedAt.After(*filter.Before) { + t.Fatalf("expected FetchedAt before %s, got %s", *filter.Before, beaconBlock.FetchedAt) + } + + if filter.After != nil && beaconBlock.FetchedAt.Before(*filter.After) { + t.Fatalf("expected FetchedAt after %s, got %s", *filter.After, beaconBlock.FetchedAt) + } + + if filter.Slot != nil && *filter.Slot != uint64(beaconBlock.Slot) { + t.Fatalf("expected Slot %d, got %d", *filter.Slot, beaconBlock.Slot) + } + + if filter.Epoch != nil && *filter.Epoch != uint64(beaconBlock.Epoch) { + t.Fatalf("expected Epoch %d, got %d", *filter.Epoch, beaconBlock.Epoch) + } + + if filter.BlockRoot != nil && *filter.BlockRoot != beaconBlock.BlockRoot { + t.Fatalf("expected BlockRoot %s, got %s", *filter.BlockRoot, beaconBlock.BlockRoot) + } + + if filter.NodeVersion != nil && *filter.NodeVersion != beaconBlock.NodeVersion { + t.Fatalf("expected NodeVersion %s, got %s", *filter.NodeVersion, beaconBlock.NodeVersion) + } + + if filter.Location != nil && *filter.Location != beaconBlock.Location { + t.Fatalf("expected Location %s, got %s", *filter.Location, beaconBlock.Location) + } + + if filter.Network != nil && *filter.Network != beaconBlock.Network { + t.Fatalf("expected Network %s, got %s", *filter.Network, beaconBlock.Network) + } + + if filter.BeaconImplementation != nil && *filter.BeaconImplementation != beaconBlock.BeaconImplementation { + t.Fatalf("expected BeaconImplementation %s, got %s", *filter.BeaconImplementation, beaconBlock.BeaconImplementation) + } + } + } + }) +} +func TestExecutionPayloadEnvelopeIndividualFilters(t *testing.T) { + t.Run("By individual attributes", func(t *testing.T) { + indexer, _, err := NewMockIndexer() + if err != nil { + t.Fatal(err) + } + + beaconBlock := generateRandomExecutionPayloadEnvelope() + + err = indexer.InsertExecutionPayloadEnvelope(context.Background(), beaconBlock) + if err != nil { + t.Fatal(err) + } + + slot := uint64(beaconBlock.Slot) + epoch := uint64(beaconBlock.Epoch) + + // Test filters individually + testCases := []struct { + name string + filter ExecutionPayloadEnvelopeFilter + }{ + {"ID", ExecutionPayloadEnvelopeFilter{ID: &beaconBlock.ID}}, + {"Node", ExecutionPayloadEnvelopeFilter{Node: &beaconBlock.Node}}, + {"Slot", ExecutionPayloadEnvelopeFilter{Slot: &slot}}, + {"Epoch", ExecutionPayloadEnvelopeFilter{Epoch: &epoch}}, + {"BlockRoot", ExecutionPayloadEnvelopeFilter{BlockRoot: &beaconBlock.BlockRoot}}, + {"NodeVersion", ExecutionPayloadEnvelopeFilter{NodeVersion: &beaconBlock.NodeVersion}}, + {"Location", ExecutionPayloadEnvelopeFilter{Location: &beaconBlock.Location}}, + {"Network", ExecutionPayloadEnvelopeFilter{Network: &beaconBlock.Network}}, + {"BeaconImplementation", ExecutionPayloadEnvelopeFilter{BeaconImplementation: &beaconBlock.BeaconImplementation}}, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + beaconBlocks, err := indexer.ListExecutionPayloadEnvelope(context.Background(), &tc.filter, &PaginationCursor{}) + if err != nil { + t.Fatal(err) + } + + if len(beaconBlocks) != 1 { + t.Fatalf("expected 1 execution payload envelope, got %d", len(beaconBlocks)) + } + + if beaconBlocks[0].ID != beaconBlock.ID { + t.Fatalf("expected ID %s, got %s", beaconBlock.ID, beaconBlocks[0].ID) + } + }) + } + }) +} diff --git a/pkg/server/persistence/operation.go b/pkg/server/persistence/operation.go index 1f9c27a..cff6062 100644 --- a/pkg/server/persistence/operation.go +++ b/pkg/server/persistence/operation.go @@ -17,6 +17,12 @@ const ( OperationListBeaconBlock Operation = "list_beacon_block_metadata" OperationUpdateBeaconBlock Operation = "update_beacon_block_metadata" + OperationInsertExecutionPayloadEnvelope Operation = "insert_execution_payload_envelope_metadata" + OperationDeleteExecutionPayloadEnvelope Operation = "delete_execution_payload_envelope_metadata" + OperationCountExecutionPayloadEnvelope Operation = "count_execution_payload_envelope_metadata" + OperationListExecutionPayloadEnvelope Operation = "list_execution_payload_envelope_metadata" + OperationUpdateExecutionPayloadEnvelope Operation = "update_execution_payload_envelope_metadata" + OperationInsertBeaconBadBlock Operation = "insert_beacon_bad_block_metadata" OperationDeleteBeaconBadBlock Operation = "delete_beacon_bad_block_metadata" OperationCountBeaconBadBlock Operation = "count_beacon_bad_block_metadata" diff --git a/pkg/server/service/api/api.go b/pkg/server/service/api/api.go index ee91bb5..b61a652 100644 --- a/pkg/server/service/api/api.go +++ b/pkg/server/service/api/api.go @@ -366,6 +366,139 @@ func (i *API) ListUniqueBeaconBlockValues(ctx context.Context, req *api.ListUniq return response, nil } +func (i *API) ListExecutionPayloadEnvelope(ctx context.Context, req *api.ListExecutionPayloadEnvelopeRequest) (*api.ListExecutionPayloadEnvelopeResponse, error) { + pagination := &indexer.PaginationCursor{ + Limit: 100, + Offset: 0, + OrderBy: "fetched_at DESC", + } + + if req.Pagination != nil { + pagination = &indexer.PaginationCursor{ + Limit: req.Pagination.Limit, + Offset: req.Pagination.Offset, + OrderBy: req.Pagination.OrderBy, + } + } + + rq := &indexer.ListExecutionPayloadEnvelopeRequest{ + Id: req.Id, + Node: req.Node, + Slot: req.Slot, + Epoch: req.Epoch, + BlockRoot: req.BlockRoot, + NodeVersion: req.NodeVersion, + Network: req.Network, + Before: req.Before, + After: req.After, + BeaconImplementation: req.BeaconImplementation, + + Pagination: pagination, + } + + resp, err := i.indexer.ListExecutionPayloadEnvelope(ctx, rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to list execution payload envelopes: %w", err).Error()) + } + + protoEnvelopes := make([]*api.ExecutionPayloadEnvelope, len(resp.ExecutionPayloadEnvelopes)) + for i, envelope := range resp.ExecutionPayloadEnvelopes { + protoEnvelopes[i] = &api.ExecutionPayloadEnvelope{ + Id: envelope.Id, + Node: envelope.Node, + Slot: envelope.Slot, + Epoch: envelope.Epoch, + BlockRoot: envelope.BlockRoot, + NodeVersion: envelope.NodeVersion, + Network: envelope.Network, + FetchedAt: envelope.FetchedAt, + BeaconImplementation: envelope.BeaconImplementation, + } + } + + return &api.ListExecutionPayloadEnvelopeResponse{ + ExecutionPayloadEnvelopes: protoEnvelopes, + }, nil +} + +func (i *API) CountExecutionPayloadEnvelope(ctx context.Context, req *api.CountExecutionPayloadEnvelopeRequest) (*api.CountExecutionPayloadEnvelopeResponse, error) { + rq := &indexer.CountExecutionPayloadEnvelopeRequest{ + Node: req.Node, + Slot: req.Slot, + Epoch: req.Epoch, + BlockRoot: req.BlockRoot, + NodeVersion: req.NodeVersion, + Network: req.Network, + BeaconImplementation: req.BeaconImplementation, + Before: req.Before, + After: req.After, + } + + resp, err := i.indexer.CountExecutionPayloadEnvelope(ctx, rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to count execution payload envelopes: %w", err).Error()) + } + + return &api.CountExecutionPayloadEnvelopeResponse{ + Count: wrapperspb.UInt64(resp.GetCount().GetValue()), + }, nil +} + +func (i *API) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, req *api.ListUniqueExecutionPayloadEnvelopeValuesRequest) (*api.ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + if err := req.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, fmt.Errorf("invalid request: %w", err).Error()) + } + + // Create our "indexer" equivalent structs + rq := indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest{ + Fields: []indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field{}, + } + + for _, field := range req.Fields { + var f indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_Field + + switch field { + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_node: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_node_version: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_network: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_slot: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_epoch: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_block_root: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT + case api.ListUniqueExecutionPayloadEnvelopeValuesRequest_beacon_implementation: + f = indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION + default: + return nil, status.Error(codes.InvalidArgument, fmt.Errorf("invalid field: %s", field.String()).Error()) + } + + rq.Fields = append(rq.Fields, f) + } + + // Call the indexer + resp, err := i.indexer.ListUniqueExecutionPayloadEnvelopeValues(ctx, &rq) + if err != nil { + return nil, status.Error(codes.Internal, fmt.Errorf("failed to list unique execution payload envelope values: %w", err).Error()) + } + + // Convert the response + response := &api.ListUniqueExecutionPayloadEnvelopeValuesResponse{ + Node: resp.Node, + Slot: resp.Slot, + Epoch: resp.Epoch, + BlockRoot: resp.BlockRoot, + NodeVersion: resp.NodeVersion, + Network: resp.Network, + BeaconImplementation: resp.BeaconImplementation, + } + + return response, nil +} + func (i *API) ListBeaconBadBlock(ctx context.Context, req *api.ListBeaconBadBlockRequest) (*api.ListBeaconBadBlockResponse, error) { pagination := &indexer.PaginationCursor{ Limit: 100, diff --git a/pkg/server/service/indexer/config.go b/pkg/server/service/indexer/config.go index abd993b..5d5835d 100644 --- a/pkg/server/service/indexer/config.go +++ b/pkg/server/service/indexer/config.go @@ -3,12 +3,13 @@ package indexer import "github.com/ethpandaops/beacon/pkg/human" type RetentionConfig struct { - BeaconStates human.Duration `yaml:"beaconStates" default:"30m"` - BeaconBlocks human.Duration `yaml:"beaconBlocks" default:"30m"` - BeaconBadBlocks human.Duration `yaml:"beaconBadBlocks" default:"312480m"` // 6 months - BeaconBadBlobs human.Duration `yaml:"beaconBadBlobs" default:"312480m"` // 6 months - ExecutionBlockTraces human.Duration `yaml:"executionBlockTraces" default:"30m"` - ExecutionBadBlocks human.Duration `yaml:"executionBadBlocks" default:"312480m"` // 6 months + BeaconStates human.Duration `yaml:"beaconStates" default:"30m"` + BeaconBlocks human.Duration `yaml:"beaconBlocks" default:"30m"` + ExecutionPayloadEnvelopes human.Duration `yaml:"executionPayloadEnvelopes" default:"30m"` + BeaconBadBlocks human.Duration `yaml:"beaconBadBlocks" default:"312480m"` // 6 months + BeaconBadBlobs human.Duration `yaml:"beaconBadBlobs" default:"312480m"` // 6 months + ExecutionBlockTraces human.Duration `yaml:"executionBlockTraces" default:"30m"` + ExecutionBadBlocks human.Duration `yaml:"executionBadBlocks" default:"312480m"` // 6 months } type Config struct { diff --git a/pkg/server/service/indexer/convert.go b/pkg/server/service/indexer/convert.go index 27eb27b..bf21527 100644 --- a/pkg/server/service/indexer/convert.go +++ b/pkg/server/service/indexer/convert.go @@ -81,6 +81,42 @@ func DBBeaconBlockToProtoBeaconBlock(bs *persistence.BeaconBlock) *indexer.Beaco } } +func ProtoExecutionPayloadEnvelopeToDBExecutionPayloadEnvelope(bs *indexer.ExecutionPayloadEnvelope) *persistence.ExecutionPayloadEnvelope { + return &persistence.ExecutionPayloadEnvelope{ + ID: bs.GetId().GetValue(), + Node: bs.GetNode().GetValue(), + //nolint:gosec // not worried about int64 overflow here + Slot: int64(bs.GetSlot().GetValue()), + //nolint:gosec // not worried about int64 overflow here + Epoch: int64(bs.GetEpoch().GetValue()), + BlockRoot: bs.GetBlockRoot().GetValue(), + FetchedAt: bs.GetFetchedAt().AsTime(), + NodeVersion: bs.GetNodeVersion().GetValue(), + Location: bs.GetLocation().GetValue(), + ContentEncoding: bs.GetContentEncoding().GetValue(), + Network: bs.GetNetwork().GetValue(), + BeaconImplementation: bs.GetBeaconImplementation().GetValue(), + } +} + +func DBExecutionPayloadEnvelopeToProtoExecutionPayloadEnvelope(bs *persistence.ExecutionPayloadEnvelope) *indexer.ExecutionPayloadEnvelope { + return &indexer.ExecutionPayloadEnvelope{ + Id: &wrapperspb.StringValue{Value: bs.ID}, + Node: &wrapperspb.StringValue{Value: bs.Node}, + //nolint:gosec // not worried about int64 overflow here + Slot: &wrapperspb.UInt64Value{Value: uint64(bs.Slot)}, + //nolint:gosec // not worried about int64 overflow here + Epoch: &wrapperspb.UInt64Value{Value: uint64(bs.Epoch)}, + BlockRoot: &wrapperspb.StringValue{Value: bs.BlockRoot}, + FetchedAt: timestamppb.New(bs.FetchedAt), + NodeVersion: &wrapperspb.StringValue{Value: bs.NodeVersion}, + Location: &wrapperspb.StringValue{Value: bs.Location}, + Network: &wrapperspb.StringValue{Value: bs.Network}, + ContentEncoding: &wrapperspb.StringValue{Value: bs.ContentEncoding}, + BeaconImplementation: &wrapperspb.StringValue{Value: bs.BeaconImplementation}, + } +} + func ProtoBeaconBadBlockToDBBeaconBadBlock(bs *indexer.BeaconBadBlock) *persistence.BeaconBadBlock { return &persistence.BeaconBadBlock{ ID: bs.GetId().GetValue(), diff --git a/pkg/server/service/indexer/execution_payload_envelope_test.go b/pkg/server/service/indexer/execution_payload_envelope_test.go new file mode 100644 index 0000000..3bdb082 --- /dev/null +++ b/pkg/server/service/indexer/execution_payload_envelope_test.go @@ -0,0 +1,405 @@ +//nolint:gocyclo // Only used in tests +package indexer + +import ( + "context" + "io" + "net/http" + "testing" + "time" + + "github.com/ethpandaops/tracoor/pkg/compression" + pindexer "github.com/ethpandaops/tracoor/pkg/proto/tracoor/indexer" + "github.com/ethpandaops/tracoor/pkg/store" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" +) + +func createRandomExecutionPayloadEnvelopeRequest() *pindexer.CreateExecutionPayloadEnvelopeRequest { + return &pindexer.CreateExecutionPayloadEnvelopeRequest{ + Node: wrapperspb.String(generateRandomString(5)), + Slot: wrapperspb.UInt64(uint64(generateRandomInt64())), + Epoch: wrapperspb.UInt64(uint64(generateRandomInt64())), + BlockRoot: wrapperspb.String(generateRandomString(32)), + FetchedAt: timestamppb.Now(), + BeaconImplementation: wrapperspb.String(generateRandomString(15)), + NodeVersion: wrapperspb.String(generateRandomString(8)), + Location: wrapperspb.String(generateRandomString(10)), + Network: wrapperspb.String(generateRandomString(5)), + } +} + +func TestIndexerExecutionPayloadEnvelopeCount(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Counting", func(t *testing.T) { + _, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + rsp, err := index.CountExecutionPayloadEnvelope(ctx, &pindexer.CountExecutionPayloadEnvelopeRequest{}) + if err != nil { + t.Fatalf("failed to count beacon state: %v", err) + } + + if rsp.Count.Value != uint64(1) { + t.Fatalf("expected 1 beacon state, got %d", rsp.Count.Value) + } + }) +} + +func TestIndexerExecutionPayloadEnvelopeDownloading(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Downloading", func(t *testing.T) { + data := []byte("{\"key\": \"value\"}") + + compressor := compression.NewCompressor() + + compressedData, err := compressor.Compress(&data, compression.Gzip) + if err != nil { + t.Fatalf("failed to compress data: %v", err) + } + + location, err := index.Store().SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &compressedData, + Location: "data.json", + ContentEncoding: compression.Gzip.ContentEncoding, + }) + if err != nil { + t.Fatalf("failed to save beacon state: %v", err) + } + + req := createRandomExecutionPayloadEnvelopeRequest() + req.Location = wrapperspb.String(location) + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + // List it + rsp, err := index.ListExecutionPayloadEnvelope(ctx, &pindexer.ListExecutionPayloadEnvelopeRequest{Id: resp.Id.Value}) + if err != nil { + t.Fatalf("failed to get beacon state: %v", err) + } + + url, err := index.Store().GetExecutionPayloadEnvelopeURL(ctx, &store.GetURLParams{ + Location: rsp.ExecutionPayloadEnvelopes[0].Location.GetValue(), + Expiry: 60, + ContentEncoding: rsp.ExecutionPayloadEnvelopes[0].ContentEncoding.GetValue(), + }) + if err != nil { + t.Fatalf("failed to get beacon state URL: %v", err) + } + + if url == "" { + t.Fatalf("expected URL to not be empty") + } + + // Download it via http + if resp, err := http.Get(url); err != nil { + t.Fatalf("failed to download beacon state: %v", err) + } else { + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + t.Fatalf("expected status code to be 200, got %d", resp.StatusCode) + } + + // Check the body contents + body, err := io.ReadAll(resp.Body) + if err != nil { + t.Fatalf("failed to read response body: %v", err) + } + + if len(body) == 0 { + t.Fatalf("expected body to not be empty") + } + } + }) +} + +func TestIndexerExecutionPayloadEnvelope(t *testing.T) { + ctx := context.Background() + config := Config{} + + index, cleanup, err := NewMockIndexer(ctx, &config) + if err != nil { + t.Fatalf("failed to create indexer: %v", err) + } + + defer func() { + if err := cleanup(); err != nil { + t.Fatalf("failed to cleanup: %v", err) + } + }() + + t.Run("Creating", func(t *testing.T) { + _, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + }) + + t.Run("Creating returns a valid ID", func(t *testing.T) { + rsp, err := index.CreateExecutionPayloadEnvelope(ctx, createRandomExecutionPayloadEnvelopeRequest()) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + if rsp.Id == nil { + t.Fatalf("expected ID to not be empty") + } + }) + + t.Run("Handles duplicates", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + rsp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + if rsp.Id == nil { + t.Fatalf("expected ID to not be empty") + } + + _, err = index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil && err.Error() != beaconStateExistsStr { + t.Fatal("expected error to be 'beacon state already exists'") + } + }) + + t.Run("Basic Listing", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, &pindexer.ListExecutionPayloadEnvelopeRequest{Id: resp.Id.Value}) + if err != nil { + t.Fatalf("failed to get beacon state: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) != 1 { + t.Fatalf("expected 1 beacon state, got %d", len(rsp.ExecutionPayloadEnvelopes)) + } + }) + + t.Run("Can list by filters", func(t *testing.T) { + req := createRandomExecutionPayloadEnvelopeRequest() + + resp, err := index.CreateExecutionPayloadEnvelope(ctx, req) + if err != nil { + t.Fatalf("failed to create beacon state: %v", err) + } + + t.Run("by Node", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Node: req.Node.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by node: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by node") + } + }) + + t.Run("by Slot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Slot: req.Slot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by slot: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by slot") + } + }) + + t.Run("by Epoch", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Epoch: req.Epoch.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by epoch: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by epoch") + } + }) + + t.Run("by BlockRoot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BlockRoot: req.BlockRoot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by state root: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by state root") + } + }) + + t.Run("by Network", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Network: req.Network.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by network: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by network") + } + }) + + t.Run("by BeaconImplementation", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BeaconImplementation: req.BeaconImplementation.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by beacon implementation: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by beacon implementation") + } + }) + + t.Run("by NodeVersion", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + NodeVersion: req.NodeVersion.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by node version: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by node version") + } + }) + + t.Run("by Location", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Location: req.Location.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by location: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by location") + } + }) + + t.Run("by Before", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Before: timestamppb.New(req.FetchedAt.AsTime().Add(time.Minute)), + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by fetched at: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by fetched at") + } + }) + + t.Run("by After", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + After: timestamppb.New(req.FetchedAt.AsTime().Add(-time.Minute)), + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by fetched at: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by fetched at") + } + }) + + t.Run("by ID", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + Id: resp.Id.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by ID: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by ID") + } + }) + + t.Run("by BlockRoot", func(t *testing.T) { + filterReq := &pindexer.ListExecutionPayloadEnvelopeRequest{ + BlockRoot: req.BlockRoot.Value, + } + + rsp, err := index.ListExecutionPayloadEnvelope(ctx, filterReq) + if err != nil { + t.Fatalf("failed to list beacon states by state root: %v", err) + } + + if len(rsp.ExecutionPayloadEnvelopes) == 0 { + t.Fatal("expected at least one beacon state filtered by state root") + } + }) + }) +} diff --git a/pkg/server/service/indexer/indexer.go b/pkg/server/service/indexer/indexer.go index c07c8df..5086ef5 100644 --- a/pkg/server/service/indexer/indexer.go +++ b/pkg/server/service/indexer/indexer.go @@ -684,6 +684,264 @@ func (i *Indexer) ListUniqueBeaconBlockValues(ctx context.Context, req *indexer. return response, nil } +func (i *Indexer) CreateExecutionPayloadEnvelope(ctx context.Context, req *indexer.CreateExecutionPayloadEnvelopeRequest) (*indexer.CreateExecutionPayloadEnvelopeResponse, error) { + if err := req.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + // Check the store for the envelope + exists, err := i.store.Exists(ctx, req.GetLocation().GetValue()) + if err != nil { + i.log. + WithError(err). + WithField(KeyLocation, req.GetLocation().GetValue()). + WithField(KeyNode, req.GetNode().GetValue()). + Error("Failed to index an execution payload envelope because it could not be found in the store. Check that the agent and server are pointed at the same storage backend.") + + return nil, status.Error(codes.Internal, err.Error()) + } + + if exists { + // Check if the envelope is already indexed + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + filter.AddNetwork(req.GetNetwork().GetValue()) + filter.AddSlot(req.GetSlot().GetValue()) + filter.AddBlockRoot(req.GetBlockRoot().GetValue()) + filter.AddNode(req.GetNode().GetValue()) + + existing, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, &persistence.PaginationCursor{Limit: 1, Offset: 0}) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + if len(existing) > 0 { + return nil, status.Error(codes.AlreadyExists, "execution payload envelope already indexed") + } + } + + // Create the envelope + envelope := &indexer.ExecutionPayloadEnvelope{ + Id: wrapperspb.String(uuid.New().String()), + Node: req.GetNode(), + Network: req.GetNetwork(), + Slot: req.GetSlot(), + Epoch: req.GetEpoch(), + BlockRoot: req.GetBlockRoot(), + NodeVersion: req.GetNodeVersion(), + ContentEncoding: req.GetContentEncoding(), + Location: req.GetLocation(), + FetchedAt: req.GetFetchedAt(), + BeaconImplementation: req.GetBeaconImplementation(), + } + + if err := envelope.Validate(); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + logFields := logrus.Fields{ + KeyNode: req.GetNode().GetValue(), + KeyNetwork: req.GetNetwork().GetValue(), + KeySlot: req.GetSlot().GetValue(), + KeyEpoch: req.GetEpoch().GetValue(), + KeyBlockRoot: req.GetBlockRoot().GetValue(), + KeyNodeVersion: req.GetNodeVersion().GetValue(), + KeyContentEncoding: req.GetContentEncoding().GetValue(), + KeyLocation: req.GetLocation().GetValue(), + KeyFetchedAt: req.GetFetchedAt().AsTime(), + KeyBeaconImplementation: req.GetBeaconImplementation().GetValue(), + } + + if err := i.db.InsertExecutionPayloadEnvelope(ctx, ProtoExecutionPayloadEnvelopeToDBExecutionPayloadEnvelope(envelope)); err != nil { + i.log.WithError(err).WithFields(logFields).Error("Failed to index execution payload envelope") + + return nil, status.Error(codes.Internal, "failed to index execution payload envelope") + } + + i.log.WithFields(logFields).WithField("id", envelope.GetId().GetValue()).Debug("Indexed execution payload envelope") + + return &indexer.CreateExecutionPayloadEnvelopeResponse{ + Id: envelope.GetId(), + }, nil +} + +func (i *Indexer) ListExecutionPayloadEnvelope(ctx context.Context, req *indexer.ListExecutionPayloadEnvelopeRequest) (*indexer.ListExecutionPayloadEnvelopeResponse, error) { + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + if req.Id != "" { + filter.AddID(req.Id) + } + + if req.Node != "" { + filter.AddNode(req.Node) + } + + if req.Slot != 0 { + filter.AddSlot(req.Slot) + } + + if req.Epoch != 0 { + filter.AddEpoch(req.Epoch) + } + + if req.BlockRoot != "" { + filter.AddBlockRoot(req.BlockRoot) + } + + if req.NodeVersion != "" { + filter.AddNodeVersion(req.NodeVersion) + } + + if req.Location != "" { + filter.AddLocation(req.Location) + } + + if req.Network != "" { + filter.AddNetwork(req.Network) + } + + if req.Before != nil { + filter.AddBefore(req.Before.AsTime()) + } + + if req.After != nil { + filter.AddAfter(req.After.AsTime()) + } + + if req.BeaconImplementation != "" { + filter.AddBeaconImplementation(req.BeaconImplementation) + } + + pagination := &persistence.PaginationCursor{ + Limit: 1000, + Offset: 0, + OrderBy: "fetched_at DESC", + } + + if req.Pagination != nil { + pagination = ProtoPaginationCursorToDBPaginationCursor(req.Pagination) + } + + envelopes, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, pagination) + if err != nil { + return nil, err + } + + protoEnvelopes := make([]*indexer.ExecutionPayloadEnvelope, len(envelopes)) + for i, envelope := range envelopes { + protoEnvelopes[i] = DBExecutionPayloadEnvelopeToProtoExecutionPayloadEnvelope(envelope) + } + + return &indexer.ListExecutionPayloadEnvelopeResponse{ + ExecutionPayloadEnvelopes: protoEnvelopes, + }, nil +} + +func (i *Indexer) CountExecutionPayloadEnvelope(ctx context.Context, req *indexer.CountExecutionPayloadEnvelopeRequest) (*indexer.CountExecutionPayloadEnvelopeResponse, error) { + filter := &persistence.ExecutionPayloadEnvelopeFilter{} + + if req.Id != "" { + filter.AddID(req.Id) + } + + if req.Node != "" { + filter.AddNode(req.Node) + } + + if req.Slot != 0 { + filter.AddSlot(req.Slot) + } + + if req.Epoch != 0 { + filter.AddEpoch(req.Epoch) + } + + if req.BlockRoot != "" { + filter.AddBlockRoot(req.BlockRoot) + } + + if req.NodeVersion != "" { + filter.AddNodeVersion(req.NodeVersion) + } + + if req.Location != "" { + filter.AddLocation(req.Location) + } + + if req.Network != "" { + filter.AddNetwork(req.Network) + } + + if req.Before != nil { + filter.AddBefore(req.Before.AsTime()) + } + + if req.After != nil { + filter.AddAfter(req.After.AsTime()) + } + + if req.BeaconImplementation != "" { + filter.AddBeaconImplementation(req.BeaconImplementation) + } + + envelopes, err := i.db.CountExecutionPayloadEnvelope(ctx, filter) + if err != nil { + return nil, err + } + + return &indexer.CountExecutionPayloadEnvelopeResponse{ + //nolint:gosec // not worried about int64 overflow here + Count: wrapperspb.UInt64(uint64(envelopes)), + }, nil +} + +func (i *Indexer) ListUniqueExecutionPayloadEnvelopeValues(ctx context.Context, req *indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest) (*indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse, error) { + if err := req.Validate(); err != nil { + return nil, err + } + + fields := make([]string, len(req.Fields)) + + for idx, field := range req.Fields { + switch field { + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE: + fields[idx] = KeyNode + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_SLOT: + fields[idx] = KeySlot + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_EPOCH: + fields[idx] = KeyEpoch + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BLOCK_ROOT: + fields[idx] = KeyBlockRoot + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NODE_VERSION: + fields[idx] = KeyNodeVersion + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_LOCATION: + fields[idx] = KeyLocation + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_NETWORK: + fields[idx] = KeyNetwork + case indexer.ListUniqueExecutionPayloadEnvelopeValuesRequest_BEACON_IMPLEMENTATION: + fields[idx] = KeyBeaconImplementation + } + } + + distinctValues, err := i.db.DistinctExecutionPayloadEnvelopeValues(ctx, fields) + if err != nil { + return nil, err + } + + response := &indexer.ListUniqueExecutionPayloadEnvelopeValuesResponse{ + Node: distinctValues.Node, + Slot: distinctValues.Slot, + Epoch: distinctValues.Epoch, + BlockRoot: distinctValues.BlockRoot, + NodeVersion: distinctValues.NodeVersion, + Location: distinctValues.Location, + Network: distinctValues.Network, + BeaconImplementation: distinctValues.BeaconImplementation, + } + + return response, nil +} + func (i *Indexer) CreateBeaconBadBlock(ctx context.Context, req *indexer.CreateBeaconBadBlockRequest) (*indexer.CreateBeaconBadBlockResponse, error) { if err := req.Validate(); err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) diff --git a/pkg/server/service/indexer/retention.go b/pkg/server/service/indexer/retention.go index 7c0610a..81626d2 100644 --- a/pkg/server/service/indexer/retention.go +++ b/pkg/server/service/indexer/retention.go @@ -13,12 +13,13 @@ import ( func (i *Indexer) startRetentionWatchers(ctx context.Context) { i.log.WithFields(logrus.Fields{ - "beacon_state": i.config.Retention.BeaconStates.Duration, - "beacon_block": i.config.Retention.BeaconBlocks.Duration, - "beacon_bad_block": i.config.Retention.BeaconBadBlocks.Duration, - "beacon_bad_blob": i.config.Retention.BeaconBadBlobs.Duration, - "execution_block_trace": i.config.Retention.ExecutionBlockTraces.Duration, - "execution_bad_block": i.config.Retention.ExecutionBadBlocks.Duration, + "beacon_state": i.config.Retention.BeaconStates.Duration, + "beacon_block": i.config.Retention.BeaconBlocks.Duration, + "execution_payload_envelope": i.config.Retention.ExecutionPayloadEnvelopes.Duration, + "beacon_bad_block": i.config.Retention.BeaconBadBlocks.Duration, + "beacon_bad_blob": i.config.Retention.BeaconBadBlobs.Duration, + "execution_block_trace": i.config.Retention.ExecutionBlockTraces.Duration, + "execution_bad_block": i.config.Retention.ExecutionBadBlocks.Duration, }).Info("Starting retention watcher") for { @@ -30,6 +31,10 @@ func (i *Indexer) startRetentionWatchers(ctx context.Context) { i.log.WithError(err).Error("Failed to delete old beacon blocks") } + if err := i.purgeOldExecutionPayloadEnvelopes(ctx); err != nil { + i.log.WithError(err).Error("Failed to delete old execution payload envelopes") + } + if err := i.purgeOldBeaconBadBlocks(ctx); err != nil { i.log.WithError(err).Error("Failed to delete old beacon bad blocks") } @@ -161,6 +166,52 @@ func (i *Indexer) purgeOldBeaconBlocks(ctx context.Context) error { return nil } +func (i *Indexer) purgeOldExecutionPayloadEnvelopes(ctx context.Context) error { + before := time.Now().Add(-i.config.Retention.ExecutionPayloadEnvelopes.Duration) + + filter := &persistence.ExecutionPayloadEnvelopeFilter{ + Before: &before, + } + + envelopes, err := i.db.ListExecutionPayloadEnvelope(ctx, filter, &persistence.PaginationCursor{Limit: 10000, Offset: 0, OrderBy: "fetched_at ASC"}) + if err != nil { + return err + } + + i.log.WithField("before", before).Debugf("Purging %d old execution payload envelopes", len(envelopes)) + + for _, envelope := range envelopes { + // Delete from the store first + if err := i.store.DeleteExecutionPayloadEnvelope(ctx, envelope.Location); err != nil { + if errors.Is(err, store.ErrNotFound) { + i.log.WithField("envelope_id", envelope.ID).Warn("Execution payload envelope not found in store") + } else { + i.log.WithError(err).WithField("envelope_id", envelope.ID).Error("Failed to delete execution payload envelope from store, will retry next time") + + continue + } + } + + err := i.db.DeleteExecutionPayloadEnvelope(ctx, envelope.ID) + if err != nil { + i.log.WithError(err).WithField("envelope_id", envelope.ID).Error("Failed to delete execution payload envelope") + + continue + } + + i.log.WithFields( + logrus.Fields{ + "node": envelope.Node, + "network": envelope.Network, + "slot": envelope.Slot, + "id": envelope.ID, + }, + ).Debug("Deleted execution payload envelope") + } + + return nil +} + func (i *Indexer) purgeOldBeaconBadBlocks(ctx context.Context) error { before := time.Now().Add(-i.config.Retention.BeaconBadBlocks.Duration) diff --git a/pkg/store/fs.go b/pkg/store/fs.go index b235915..2e087df 100644 --- a/pkg/store/fs.go +++ b/pkg/store/fs.go @@ -156,6 +156,34 @@ func (s *FSStore) DeleteBeaconBlock(ctx context.Context, location string) error return s.removeFile(path) } +func (s *FSStore) SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) { + parts := strings.Split(params.Location, "/") + + path := filepath.Join(s.basePath, filepath.Join(parts...)) + if err := s.saveFile(params.Data, path); err != nil { + return "", err + } + + return params.Location, nil +} + +func (s *FSStore) GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) { + parts := strings.Split(location, "/") + + return s.getFile(filepath.Join(s.basePath, filepath.Join(parts...))) +} + +func (s *FSStore) GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) { + return "", errors.New("not supported") +} + +func (s *FSStore) DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error { + parts := strings.Split(location, "/") + path := filepath.Join(s.basePath, filepath.Join(parts...)) + + return s.removeFile(path) +} + func (s *FSStore) SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) { parts := strings.Split(params.Location, "/") diff --git a/pkg/store/fs_test.go b/pkg/store/fs_test.go index 0c39082..f0a7313 100644 --- a/pkg/store/fs_test.go +++ b/pkg/store/fs_test.go @@ -11,8 +11,9 @@ import ( ) const ( - locationBadBeaconBlock = "beacon_bad_block/location.json" - locationBeaconBlock = "beacon_block/location.json" + locationBadBeaconBlock = "beacon_bad_block/location.json" + locationBeaconBlock = "beacon_block/location.json" + locationExecutionPayloadEnvelope = "execution_payload_envelope/location.json" ) func TestFSStoreOperations(t *testing.T) { @@ -94,6 +95,37 @@ func TestFSStoreOperations(t *testing.T) { require.False(t, exists) }) + t.Run("SaveExecutionPayloadEnvelope", func(t *testing.T) { + location := locationExecutionPayloadEnvelope + data := []byte(`{"block": "data"}`) + _, err := fsStore.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &data, + Location: location, + }) + require.NoError(t, err) + + savedData, err := fsStore.GetExecutionPayloadEnvelope(ctx, location) + require.NoError(t, err) + require.Equal(t, data, *savedData) + }) + + t.Run("DeleteExecutionPayloadEnvelope", func(t *testing.T) { + location := locationExecutionPayloadEnvelope + data := []byte(`{"block": "data"}`) + _, err := fsStore.SaveExecutionPayloadEnvelope(ctx, &store.SaveParams{ + Data: &data, + Location: location, + }) + require.NoError(t, err) + + err = fsStore.DeleteExecutionPayloadEnvelope(ctx, location) + require.NoError(t, err) + + exists, err := fsStore.Exists(ctx, location) + require.NoError(t, err) + require.False(t, exists) + }) + t.Run("SaveBeaconBadBlock", func(t *testing.T) { location := locationBadBeaconBlock data := []byte(`{"bad_block": "data"}`) diff --git a/pkg/store/s3.go b/pkg/store/s3.go index 6973df5..35513d4 100644 --- a/pkg/store/s3.go +++ b/pkg/store/s3.go @@ -432,6 +432,92 @@ func (s *S3Store) DeleteBeaconBlock(ctx context.Context, location string) error return err } +func (s *S3Store) SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) { + if params.Data == nil { + return "", errors.New("data is nil") + } + + input := &s3.PutObjectInput{ + Bucket: aws.String(s.config.BucketName), + Key: aws.String(params.Location), + Body: bytes.NewBuffer(*params.Data), + } + + if params.ContentEncoding != "" { + input.ContentEncoding = aws.String(params.ContentEncoding) + } + + _, err := s.s3Client.PutObject(ctx, input, s3.WithAPIOptions(v4.SwapComputePayloadSHA256ForUnsignedPayloadMiddleware)) + if err != nil { + var apiErr smithy.APIError + + if errors.As(err, &apiErr) { + switch apiErr.(type) { + case *s3types.NoSuchBucket: + return "", errors.New("bucket does not exist: " + apiErr.Error()) + case *s3types.NotFound: + return "", ErrNotFound + default: + return "", errors.New("failed to save frame: " + apiErr.Error()) + } + } + } + + s.basicMetrics.ObserveItemAdded(string(ExecutionPayloadEnvelopeDataType)) + s.basicMetrics.ObserveItemAddedBytes(string(ExecutionPayloadEnvelopeDataType), len(*params.Data)) + + return params.Location, err +} + +func (s *S3Store) GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) { + url, err := s.getPresignedURL(ctx, params) + if err != nil { + return "", err + } + + s.basicMetrics.ObserveItemURLRetreived(string(ExecutionPayloadEnvelopeDataType)) + + return url, nil +} + +func (s *S3Store) GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) { + s.basicMetrics.ObserveCacheMiss(string(ExecutionPayloadEnvelopeDataType)) + + data, err := s.GetRaw(ctx, location) + if err != nil { + return nil, err + } + + s.basicMetrics.ObserveItemRetreived(string(ExecutionPayloadEnvelopeDataType)) + + b := data.Bytes() + + return &b, nil +} + +func (s *S3Store) DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error { + _, err := s.s3Client.DeleteObject(ctx, &s3.DeleteObjectInput{ + Bucket: aws.String(s.config.BucketName), + Key: aws.String(location), + }) + if err != nil { + var apiErr smithy.APIError + + if errors.As(err, &apiErr) { + switch apiErr.(type) { + case *s3types.NotFound: + return ErrNotFound + default: + return errors.New("failed to delete: " + apiErr.Error()) + } + } + } + + s.basicMetrics.ObserveItemRemoved(string(ExecutionPayloadEnvelopeDataType)) + + return err +} + func (s *S3Store) SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) { if params.Data == nil { return "", errors.New("data is nil") diff --git a/pkg/store/s3_test.go b/pkg/store/s3_test.go index 4608c87..6c4335b 100644 --- a/pkg/store/s3_test.go +++ b/pkg/store/s3_test.go @@ -32,6 +32,10 @@ func TestS3StoreOperations(t *testing.T) { testBeaconBlock(ctx, t, store) }) + t.Run("ExecutionPayloadEnvelope", func(t *testing.T) { + testExecutionPayloadEnvelope(ctx, t, store) + }) + t.Run("BeaconBadBlock", func(t *testing.T) { testBeaconBadBlock(ctx, t, store) }) @@ -166,6 +170,61 @@ func testBeaconBlock(ctx context.Context, t *testing.T, store Store) { }) } +func testExecutionPayloadEnvelope(ctx context.Context, t *testing.T, store Store) { + t.Helper() + + location := "execution_payload_envelope/location.json" + data := []byte(`"abc": "def"`) + + var err error + + t.Run("ExecutionPayloadEnvelope", func(t *testing.T) { + if err = store.Healthy(ctx); err != nil { + t.Fatalf("Store is not healthy: %v", err) + } + + location, err = store.SaveExecutionPayloadEnvelope(ctx, &SaveParams{ + Data: &data, + Location: location, + ContentEncoding: "", + }) + if err != nil { + t.Fatalf("Failed to save execution payload envelope: %v", err) + } + + retrievedData, err := store.GetExecutionPayloadEnvelope(ctx, location) + if err != nil { + t.Fatalf("Failed to get execution payload envelope: %v", err) + } + + if retrievedData == nil { + t.Fatal("Retrieved data is nil") + } + + exists, err := store.Exists(ctx, location) + if err != nil { + t.Fatalf("Failed to check existence: %v", err) + } + + if !exists { + t.Fatal("Expected file to exist") + } + + if err = store.DeleteExecutionPayloadEnvelope(ctx, location); err != nil { + t.Fatalf("Failed to delete execution payload envelope: %v", err) + } + + exists, err = store.Exists(ctx, location) + if err != nil { + t.Fatalf("Failed to check existence after deletion: %v", err) + } + + if exists { + t.Fatal("Expected file to not exist after deletion") + } + }) +} + func testBeaconBadBlock(ctx context.Context, t *testing.T, store Store) { t.Helper() diff --git a/pkg/store/store.go b/pkg/store/store.go index 4c1a24b..937769e 100644 --- a/pkg/store/store.go +++ b/pkg/store/store.go @@ -59,6 +59,14 @@ type Store interface { GetBeaconBlockURL(ctx context.Context, params *GetURLParams) (string, error) // DeleteBeaconBlock deletes a beacon block from the store DeleteBeaconBlock(ctx context.Context, location string) error + // SaveExecutionPayloadEnvelope saves an execution payload envelope to the store + SaveExecutionPayloadEnvelope(ctx context.Context, params *SaveParams) (string, error) + // GetExecutionPayloadEnvelope fetches an execution payload envelope from the store + GetExecutionPayloadEnvelope(ctx context.Context, location string) (*[]byte, error) + // GetExecutionPayloadEnvelopeURL returns a URL for the execution payload envelope + GetExecutionPayloadEnvelopeURL(ctx context.Context, params *GetURLParams) (string, error) + // DeleteExecutionPayloadEnvelope deletes an execution payload envelope from the store + DeleteExecutionPayloadEnvelope(ctx context.Context, location string) error // SaveBeaconBadBlock saves a beacon bad block to the store SaveBeaconBadBlock(ctx context.Context, params *SaveParams) (string, error) diff --git a/pkg/store/type.go b/pkg/store/type.go index eacd373..6b8941d 100644 --- a/pkg/store/type.go +++ b/pkg/store/type.go @@ -22,11 +22,12 @@ func IsValidStoreType(st Type) bool { type DataType string const ( - UnknownDataType DataType = "unknown" - BeaconStateDataType DataType = "beacon_state" - BeaconBlockDataType DataType = "beacon_block" - BeaconBadBlockDataType DataType = "beacon_bad_block" - BeaconBadBlobDataType DataType = "beacon_bad_blob" - BlockTraceDataType DataType = "execution_block_trace" - BadBlockDataType DataType = "execution_bad_block" + UnknownDataType DataType = "unknown" + BeaconStateDataType DataType = "beacon_state" + BeaconBlockDataType DataType = "beacon_block" + ExecutionPayloadEnvelopeDataType DataType = "execution_payload_envelope" + BeaconBadBlockDataType DataType = "beacon_bad_block" + BeaconBadBlobDataType DataType = "beacon_bad_blob" + BlockTraceDataType DataType = "execution_block_trace" + BadBlockDataType DataType = "execution_bad_block" ) diff --git a/web/src/api/executionPayloadEnvelope.ts b/web/src/api/executionPayloadEnvelope.ts new file mode 100644 index 0000000..0c18ba5 --- /dev/null +++ b/web/src/api/executionPayloadEnvelope.ts @@ -0,0 +1,74 @@ +import { + V1ListExecutionPayloadEnvelopeResponse, + V1ListExecutionPayloadEnvelopeRequest, + V1CountExecutionPayloadEnvelopeResponse, + V1CountExecutionPayloadEnvelopeRequest, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + V1ListUniqueExecutionPayloadEnvelopeValuesRequest, + ExecutionPayloadEnvelope, +} from '@app/types/api'; +import { BASE_URL } from '@utils/environment'; + +export async function fetchListExecutionPayloadEnvelope( + payload: V1ListExecutionPayloadEnvelopeRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/list-execution-payload-envelope`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch list execution payload envelope data'); + } + const json = (await response.json()) as V1ListExecutionPayloadEnvelopeResponse; + + if (json.execution_payload_envelopes === undefined) + throw new Error('No execution payload envelopes data in response'); + + return json.execution_payload_envelopes as Required; +} + +export async function fetchCountExecutionPayloadEnvelope( + payload: V1CountExecutionPayloadEnvelopeRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/count-execution-payload-envelope`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch count execution payload envelope data'); + } + const json = (await response.json()) as V1CountExecutionPayloadEnvelopeResponse; + + return json.count ?? 0; +} + +export async function fetchListUniqueExecutionPayloadEnvelopeValues( + payload: V1ListUniqueExecutionPayloadEnvelopeValuesRequest, +): Promise { + const response = await fetch(`${BASE_URL}v1/api/list-unique-execution-payload-envelope-values`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error('Failed to fetch list execution payload envelope data'); + } + const executionPayloadEnvelopes = + (await response.json()) as V1ListUniqueExecutionPayloadEnvelopeValuesResponse; + + if (executionPayloadEnvelopes === undefined) + throw new Error('No unique execution payload envelopes values data in response'); + + return executionPayloadEnvelopes as Required; +} diff --git a/web/src/components/ExecutionPayloadEnvelopeFilter.tsx b/web/src/components/ExecutionPayloadEnvelopeFilter.tsx new file mode 100644 index 0000000..92897c4 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeFilter.tsx @@ -0,0 +1,128 @@ +import { useFormContext, Controller } from 'react-hook-form'; + +import Alert from '@components/Alert'; +import { CustomCombobox } from '@components/Combobox'; +import DebouncedInput from '@components/DebouncedInput'; +import { useUniqueExecutionPayloadEnvelopeValues } from '@hooks/useQuery'; + +export default function FilterForm() { + const { control } = useFormContext(); + + const { data, isLoading, error } = useUniqueExecutionPayloadEnvelopeValues([ + 'node', + 'node_version', + 'beacon_implementation', + ]); + + let errorComp = undefined; + + if (!isLoading && error) { + let message = 'Something went wrong fetching filter values'; + if (typeof error === 'string') { + message = error; + } + errorComp = ; + } + + return ( +
+
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeSlot" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ +
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeEpoch" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ +
+ +
+ ( + + controllerProps={props} + type="text" + name="executionPayloadEnvelopeBlockRoot" + className="block w-full rounded-md border-0 bg-white/45 px-2.5 py-1.5 text-gray-600 shadow-sm ring-1 ring-inset ring-white/10 focus:ring-2 focus:ring-inset focus:ring-sky-500 sm:text-sm sm:leading-6" + /> + )} + /> +
+
+ + {errorComp &&
{errorComp}
} +
+ item} + /> +
+
+ item} + /> +
+
+ item} + /> +
+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeId.tsx b/web/src/components/ExecutionPayloadEnvelopeId.tsx new file mode 100644 index 0000000..413eebe --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeId.tsx @@ -0,0 +1,239 @@ +import { ArrowDownTrayIcon } from '@heroicons/react/24/outline'; +import { useFormContext } from 'react-hook-form'; +import TimeAgo from 'react-timeago'; +import { useLocation } from 'wouter'; + +import Alert from '@components/Alert'; +import CopyToClipboard from '@components/CopyToClipboard'; +import useNetwork from '@contexts/network'; +import { useExecutionPayloadEnvelopes } from '@hooks/useQuery'; + +export default function ExecutionPayloadEnvelopeId({ id }: { id: string }) { + const [, setLocation] = useLocation(); + const { setValue } = useFormContext(); + const { network } = useNetwork(); + const { data, isLoading, error } = useExecutionPayloadEnvelopes({ + network: network ? network : undefined, + id: id, + pagination: { + limit: 1, + }, + }); + + const envelope = data?.[0]; + + const handleSearch = (key: string, value: unknown) => { + setValue(key, value); + setLocation('/execution_payload_envelope'); + }; + + let errorMessage = undefined; + + if (error) { + errorMessage = 'Error fetching execution payload envelope'; + if (error instanceof Error) { + errorMessage = `Error fetching execution payload envelope: ${error.message}`; + } + } else if (!isLoading && !envelope) { + errorMessage = 'Execution payload envelope not found'; + } + + if (errorMessage) { + return ( +
+
+
+
+
ID
+
{id}
+
+ +
+
+
+ ); + } + + return ( +
+
+
+
+
ID
+
{id}
+
+
+
Fetched at
+
+ {isLoading ? ( +
+ ) : ( + envelope && + )} +
+
+
+
Network
+
+ {isLoading ? ( +
+ ) : ( + envelope?.network + )} +
+
+
+
Node
+
+ handleSearch('executionPayloadEnvelopeNode', envelope?.node)} + > + {isLoading ? ( +
+ ) : ( + envelope?.node + )} + +
+
+
+
+
Execution Implementation
+
+ + handleSearch( + 'executionPayloadEnvelopeNodeImplementation', + envelope?.beacon_implementation, + ) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.beacon_implementation + )} + +
+
+
+
+
Node version
+
+ + handleSearch('executionPayloadEnvelopeNodeVersion', envelope?.node_version) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.node_version + )} + +
+
+
+
+
Epoch
+
+ + handleSearch('executionPayloadEnvelopeEpoch', envelope?.epoch.toString()) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.epoch + )} + +
+ +
+
+
+
Slot
+
+ + handleSearch('executionPayloadEnvelopeSlot', envelope?.slot.toString()) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.slot + )} + +
+ +
+
+
+
Block root
+
+ + + handleSearch('executionPayloadEnvelopeBlockRoot', envelope?.block_root) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.block_root + )} + +
+
+ + + handleSearch('executionPayloadEnvelopeBlockRoot', envelope?.block_root) + } + > + {isLoading ? ( +
+ ) : ( + envelope?.block_root + )} + +
+ +
+
+
+ +
+
+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeInfo.tsx b/web/src/components/ExecutionPayloadEnvelopeInfo.tsx new file mode 100644 index 0000000..232d7b6 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeInfo.tsx @@ -0,0 +1,18 @@ +export default function ExecutionPayloadEnvelopeInfo() { + return ( +
+

+ + Execution payload envelopes + {' '} + are the signed gloas/ePBS objects that carry the execution payload contents, revealed by the + builder separately from the beacon block, as bytes serialized by SSZ. +

+
+ ); +} diff --git a/web/src/components/ExecutionPayloadEnvelopeTable.tsx b/web/src/components/ExecutionPayloadEnvelopeTable.tsx new file mode 100644 index 0000000..052b5d9 --- /dev/null +++ b/web/src/components/ExecutionPayloadEnvelopeTable.tsx @@ -0,0 +1,562 @@ +import { useState, useMemo, Fragment } from 'react'; + +import { Dialog, Transition } from '@headlessui/react'; +import { + ArrowDownTrayIcon, + ArrowUpIcon, + ArrowDownIcon, + ArrowsUpDownIcon, + XMarkIcon, + MagnifyingGlassCircleIcon, +} from '@heroicons/react/24/outline'; +import classNames from 'classnames'; +import { useFormContext } from 'react-hook-form'; +import TimeAgo from 'react-timeago'; +import { Link, useLocation } from 'wouter'; + +import ExecutionPayloadEnvelopeId from '@components/ExecutionPayloadEnvelopeId'; +import Pagination from '@components/Pagination'; +import useNetwork from '@contexts/network'; +import { Selection } from '@contexts/selection'; +import { useExecutionPayloadEnvelopes, useExecutionPayloadEnvelopesCount } from '@hooks/useQuery'; + +type SortConfig = { + key: string; + direction: 'ASC' | 'DESC'; +}; + +export default function ExecutionPayloadEnvelopeTable({ id }: { id?: string }) { + const { network } = useNetwork(); + const [, setLocation] = useLocation(); + const [sortConfig, setSortConfig] = useState({ + key: 'fetched_at', + direction: 'DESC', + }); + const { watch, setValue } = useFormContext(); + const [currentPage, setCurrentPage] = useState(1); + const itemsPerPage = 100; + + const handleSort = (key: string) => { + setSortConfig((currentSortConfig: SortConfig) => { + if (currentSortConfig.key === key) { + return { + key, + direction: currentSortConfig.direction === 'ASC' ? 'DESC' : 'ASC', + }; + } + return { key, direction: 'DESC' }; + }); + }; + + const [ + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, + ] = watch([ + 'executionPayloadEnvelopeSlot', + 'executionPayloadEnvelopeEpoch', + 'executionPayloadEnvelopeBlockRoot', + 'executionPayloadEnvelopeNode', + 'executionPayloadEnvelopeNodeImplementation', + 'executionPayloadEnvelopeNodeVersion', + ]); + + const { data, isLoading, error } = useExecutionPayloadEnvelopes({ + network: network ? network : undefined, + slot: executionPayloadEnvelopeSlot ? parseInt(executionPayloadEnvelopeSlot) : undefined, + epoch: executionPayloadEnvelopeEpoch ? parseInt(executionPayloadEnvelopeEpoch) : undefined, + block_root: executionPayloadEnvelopeBlockRoot ? executionPayloadEnvelopeBlockRoot : undefined, + node: executionPayloadEnvelopeNode ? executionPayloadEnvelopeNode : undefined, + node_version: executionPayloadEnvelopeNodeVersion + ? executionPayloadEnvelopeNodeVersion + : undefined, + beacon_implementation: executionPayloadEnvelopeNodeImplementation + ? executionPayloadEnvelopeNodeImplementation + : undefined, + pagination: { + limit: itemsPerPage, + offset: (currentPage - 1) * itemsPerPage, + order_by: `${sortConfig.key} ${sortConfig.direction}`, + }, + }); + + const { data: count } = useExecutionPayloadEnvelopesCount({ + network: network ? network : undefined, + slot: executionPayloadEnvelopeSlot ? parseInt(executionPayloadEnvelopeSlot) : undefined, + epoch: executionPayloadEnvelopeEpoch ? parseInt(executionPayloadEnvelopeEpoch) : undefined, + block_root: executionPayloadEnvelopeBlockRoot ? executionPayloadEnvelopeBlockRoot : undefined, + node: executionPayloadEnvelopeNode ? executionPayloadEnvelopeNode : undefined, + node_version: executionPayloadEnvelopeNodeVersion + ? executionPayloadEnvelopeNodeVersion + : undefined, + beacon_implementation: executionPayloadEnvelopeNodeImplementation + ? executionPayloadEnvelopeNodeImplementation + : undefined, + }); + + const totalPages = count ? Math.ceil(count / itemsPerPage) : 0; + + const loading = useMemo( + () => + Array.from({ length: itemsPerPage }, (_, i) => ( + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + )), + [], + ); + + let otherComp = undefined; + + if (isLoading) { + otherComp = loading; + } else if (error) { + let message = 'Something went wrong fetching data'; + if (typeof error === 'string') { + message = error; + } + otherComp = ( + + + {message} + + + ); + } else if (!data || data.length === 0) { + otherComp = ( + + + No data available + + + ); + } + + return ( + <> +
+
+
+ + + + + + + + + + + + + + + {otherComp + ? otherComp + : data?.map((row) => ( + + + + + + + + + + + ))} + +
handleSort('node')} + > +
+ Node + + {sortConfig.key === 'node' ? ( + sortConfig.direction === 'DESC' ? ( + + ) : ( + + ) + ) : ( + + )} + +
+
handleSort('slot')} + > +
+ Slot + + {sortConfig.key === 'slot' ? ( + sortConfig.direction === 'DESC' ? ( + + ) : ( + + ) + ) : ( + + )} + +
+
+ + + + +
+ setValue('executionPayloadEnvelopeNode', row.node)} + > + {row.node} + + +
+
+
+ + setValue( + 'executionPayloadEnvelopeNodeImplementation', + row.beacon_implementation, + ) + } + > + {row.beacon_implementation} + + +
+
+
+ + setValue('executionPayloadEnvelopeNodeVersion', row.node_version) + } + > + {row.node_version} + + +
+
+
+ setValue('executionPayloadEnvelopeEpoch', row.epoch)} + > + {row.epoch} + + +
+
+
+ setValue('executionPayloadEnvelopeSlot', row.slot)} + > + {row.slot} + + +
+
+
+ + setValue('executionPayloadEnvelopeBlockRoot', row.block_root) + } + > + {row.block_root} + + +
+
+
+ + + + + + +
+
+
+
+
+
+ setCurrentPage(page)} + /> +
+ + + setLocation(`/${Selection.execution_payload_envelope}`)}> + +
+ +
+
+
+ + +
+
+
+ + Execution Payload Envelope + +
+ +
+
+
+ {id && } +
+
+
+
+
+
+
+
+ + ); +} diff --git a/web/src/contexts/selection.tsx b/web/src/contexts/selection.tsx index b534c27..c1201e7 100644 --- a/web/src/contexts/selection.tsx +++ b/web/src/contexts/selection.tsx @@ -13,6 +13,7 @@ export default function useContext() { export enum Selection { beacon_state = 'beacon_state', beacon_block = 'beacon_block', + execution_payload_envelope = 'execution_payload_envelope', beacon_bad_block = 'beacon_bad_block', beacon_bad_blob = 'beacon_bad_blob', execution_block_trace = 'execution_block_trace', diff --git a/web/src/hooks/useQuery.ts b/web/src/hooks/useQuery.ts index 8082311..f8b99e0 100644 --- a/web/src/hooks/useQuery.ts +++ b/web/src/hooks/useQuery.ts @@ -31,6 +31,11 @@ import { fetchListExecutionBlockTrace, fetchCountExecutionBlockTrace, } from '@api/executionBlockTrace'; +import { + fetchListUniqueExecutionPayloadEnvelopeValues, + fetchListExecutionPayloadEnvelope, + fetchCountExecutionPayloadEnvelope, +} from '@api/executionPayloadEnvelope'; import { BeaconBadBlock, BeaconBadBlob, @@ -44,24 +49,29 @@ import { ExecutionBadBlockField, ExecutionBlockTrace, ExecutionBlockTraceField, + ExecutionPayloadEnvelope, + ExecutionPayloadEnvelopeField, V1CountBeaconBadBlockRequest, V1CountBeaconBadBlobRequest, V1CountBeaconBlockRequest, V1CountBeaconStateRequest, V1CountExecutionBadBlockRequest, V1CountExecutionBlockTraceRequest, + V1CountExecutionPayloadEnvelopeRequest, V1ListBeaconBadBlockRequest, V1ListBeaconBadBlobRequest, V1ListBeaconBlockRequest, V1ListBeaconStateRequest, V1ListExecutionBadBlockRequest, V1ListExecutionBlockTraceRequest, + V1ListExecutionPayloadEnvelopeRequest, V1ListUniqueBeaconBadBlockValuesResponse, V1ListUniqueBeaconBadBlobValuesResponse, V1ListUniqueBeaconBlockValuesResponse, V1ListUniqueBeaconStateValuesResponse, V1ListUniqueExecutionBadBlockValuesResponse, V1ListUniqueExecutionBlockTraceValuesResponse, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, V1GetConfigRequest, Config, } from '@app/types/api'; @@ -282,6 +292,52 @@ export function useUniqueExecutionBadBlockValues(fields: ExecutionBadBlockField[ }); } +export function useExecutionPayloadEnvelopes( + request: V1ListExecutionPayloadEnvelopeRequest, + enabled = true, +) { + return useQuery< + ExecutionPayloadEnvelope[], + unknown, + ExecutionPayloadEnvelope[], + [string, V1ListExecutionPayloadEnvelopeRequest] + >({ + queryKey: ['list-execution-payload-envelope', request], + queryFn: () => fetchListExecutionPayloadEnvelope(request), + enabled, + staleTime: 6_000, + }); +} + +export function useExecutionPayloadEnvelopesCount( + request: V1CountExecutionPayloadEnvelopeRequest, + enabled = true, +) { + return useQuery({ + queryKey: ['count-execution-payload-envelope', request], + queryFn: () => fetchCountExecutionPayloadEnvelope(request), + enabled, + staleTime: 6_000, + }); +} + +export function useUniqueExecutionPayloadEnvelopeValues( + fields: ExecutionPayloadEnvelopeField[], + enabled = true, +) { + return useQuery< + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + unknown, + V1ListUniqueExecutionPayloadEnvelopeValuesResponse, + [string, ExecutionPayloadEnvelopeField[]] + >({ + queryKey: ['list-unqiue-execution-payload-envelope-values', fields], + queryFn: () => fetchListUniqueExecutionPayloadEnvelopeValues({ fields }), + enabled, + staleTime: 60_000, + }); +} + export function useConfig(request: V1GetConfigRequest, enabled = true) { return useQuery({ queryKey: ['get-config', request], diff --git a/web/src/parts/Filters.tsx b/web/src/parts/Filters.tsx index 4fb0bdd..8e03f63 100644 --- a/web/src/parts/Filters.tsx +++ b/web/src/parts/Filters.tsx @@ -10,6 +10,7 @@ import BeaconBlockFilter from '@components/BeaconBlockFilter'; import BeaconStateFilter from '@components/BeaconStateFilter'; import ExecutionBadBlockFilter from '@components/ExecutionBadBlockFilter'; import ExecutionBlockTraceFilter from '@components/ExecutionBlockTraceFilter'; +import ExecutionPayloadEnvelopeFilter from '@components/ExecutionPayloadEnvelopeFilter'; import useSelection, { Selection } from '@contexts/selection'; export interface V1ListUniqueBeaconStateValuesResponse { @@ -63,6 +64,12 @@ export default function FilterForm() { executionBadBlockNode, executionBadBlockNodeImplementation, executionBadBlockNodeVersion, + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, ] = watch([ 'beaconStateSlot', 'beaconStateEpoch', @@ -99,6 +106,12 @@ export default function FilterForm() { 'executionBadBlockNode', 'executionBadBlockNodeImplementation', 'executionBadBlockNodeVersion', + 'executionPayloadEnvelopeSlot', + 'executionPayloadEnvelopeEpoch', + 'executionPayloadEnvelopeBlockRoot', + 'executionPayloadEnvelopeNode', + 'executionPayloadEnvelopeNodeImplementation', + 'executionPayloadEnvelopeNodeVersion', ]); let form = undefined; @@ -130,6 +143,19 @@ export default function FilterForm() { hasFilters = true; } break; + case Selection.execution_payload_envelope: + form = ; + if ( + executionPayloadEnvelopeSlot || + executionPayloadEnvelopeEpoch || + executionPayloadEnvelopeBlockRoot || + executionPayloadEnvelopeNode || + executionPayloadEnvelopeNodeImplementation || + executionPayloadEnvelopeNodeVersion + ) { + hasFilters = true; + } + break; case Selection.beacon_bad_block: form = ; if ( @@ -206,6 +232,29 @@ export default function FilterForm() { if (beaconBlockNodeVersion) queryParams.append('beaconBlockNodeVersion', beaconBlockNodeVersion); break; + case Selection.execution_payload_envelope: + if (executionPayloadEnvelopeSlot) + queryParams.append('executionPayloadEnvelopeSlot', executionPayloadEnvelopeSlot); + if (executionPayloadEnvelopeEpoch) + queryParams.append('executionPayloadEnvelopeEpoch', executionPayloadEnvelopeEpoch); + if (executionPayloadEnvelopeBlockRoot) + queryParams.append( + 'executionPayloadEnvelopeBlockRoot', + executionPayloadEnvelopeBlockRoot, + ); + if (executionPayloadEnvelopeNode) + queryParams.append('executionPayloadEnvelopeNode', executionPayloadEnvelopeNode); + if (executionPayloadEnvelopeNodeImplementation) + queryParams.append( + 'executionPayloadEnvelopeNodeImplementation', + executionPayloadEnvelopeNodeImplementation, + ); + if (executionPayloadEnvelopeNodeVersion) + queryParams.append( + 'executionPayloadEnvelopeNodeVersion', + executionPayloadEnvelopeNodeVersion, + ); + break; case Selection.beacon_bad_block: if (beaconBadBlockSlot) queryParams.append('beaconBadBlockSlot', beaconBadBlockSlot); if (beaconBadBlockEpoch) queryParams.append('beaconBadBlockEpoch', beaconBadBlockEpoch); @@ -303,6 +352,12 @@ export default function FilterForm() { executionBadBlockNode, executionBadBlockNodeImplementation, executionBadBlockNodeVersion, + executionPayloadEnvelopeSlot, + executionPayloadEnvelopeEpoch, + executionPayloadEnvelopeBlockRoot, + executionPayloadEnvelopeNode, + executionPayloadEnvelopeNodeImplementation, + executionPayloadEnvelopeNodeVersion, hasFilters, navigate, ]); @@ -325,6 +380,14 @@ export default function FilterForm() { setValue('beaconBlockNodeImplementation', null); setValue('beaconBlockNodeVersion', null); break; + case Selection.execution_payload_envelope: + setValue('executionPayloadEnvelopeSlot', ''); + setValue('executionPayloadEnvelopeEpoch', ''); + setValue('executionPayloadEnvelopeBlockRoot', ''); + setValue('executionPayloadEnvelopeNode', null); + setValue('executionPayloadEnvelopeNodeImplementation', null); + setValue('executionPayloadEnvelopeNodeVersion', null); + break; case Selection.beacon_bad_block: setValue('beaconBadBlockSlot', ''); setValue('beaconBadBlockEpoch', ''); diff --git a/web/src/parts/Info.tsx b/web/src/parts/Info.tsx index 7e93e7d..99f6665 100644 --- a/web/src/parts/Info.tsx +++ b/web/src/parts/Info.tsx @@ -4,6 +4,7 @@ import BeaconBlockInfo from '@components/BeaconBlockInfo'; import BeaconStateInfo from '@components/BeaconStateInfo'; import ExecutionBadBlockInfo from '@components/ExecutionBadBlockInfo'; import ExecutionBlockTraceInfo from '@components/ExecutionBlockTraceInfo'; +import ExecutionPayloadEnvelopeInfo from '@components/ExecutionPayloadEnvelopeInfo'; import GoEVMLabInfo from '@components/GoEVMLabInfo'; import LCLIInfo from '@components/LCLIInfo'; import NCLIInfo from '@components/NCLIInfo'; @@ -21,6 +22,9 @@ export default function Info() { case Selection.beacon_block: info = ; break; + case Selection.execution_payload_envelope: + info = ; + break; case Selection.beacon_bad_block: info = ; break; diff --git a/web/src/parts/Listing.tsx b/web/src/parts/Listing.tsx index ead31f0..aeee439 100644 --- a/web/src/parts/Listing.tsx +++ b/web/src/parts/Listing.tsx @@ -4,6 +4,7 @@ import BeaconBlockTable from '@components/BeaconBlockTable'; import BeaconStateTable from '@components/BeaconStateTable'; import ExecutionBadBlockTable from '@components/ExecutionBadBlockTable'; import ExecutionBlockTraceTable from '@components/ExecutionBlockTraceTable'; +import ExecutionPayloadEnvelopeTable from '@components/ExecutionPayloadEnvelopeTable'; import useSelection, { Selection } from '@contexts/selection'; export default function Listing({ id }: { id?: string }) { @@ -17,6 +18,9 @@ export default function Listing({ id }: { id?: string }) { case Selection.beacon_block: table = ; break; + case Selection.execution_payload_envelope: + table = ; + break; case Selection.beacon_bad_block: table = ; break; diff --git a/web/src/parts/Selector.tsx b/web/src/parts/Selector.tsx index 8610ae4..efeb79d 100644 --- a/web/src/parts/Selector.tsx +++ b/web/src/parts/Selector.tsx @@ -15,6 +15,7 @@ import { useUniqueBeaconBadBlobValues, useUniqueExecutionBlockTraceValues, useUniqueExecutionBadBlockValues, + useUniqueExecutionPayloadEnvelopeValues, } from '@hooks/useQuery'; const categories: { name: string; tabs: Selection[] }[] = [ @@ -23,6 +24,7 @@ const categories: { name: string; tabs: Selection[] }[] = [ tabs: [ Selection.beacon_state, Selection.beacon_block, + Selection.execution_payload_envelope, Selection.beacon_bad_block, Selection.beacon_bad_blob, ], @@ -45,6 +47,7 @@ const categories: { name: string; tabs: Selection[] }[] = [ const tabs: { id: Selection; name: string }[] = [ { id: Selection.beacon_state, name: 'Beacon states' }, { id: Selection.beacon_block, name: 'Beacon blocks' }, + { id: Selection.execution_payload_envelope, name: 'Execution payload envelopes' }, { id: Selection.beacon_bad_block, name: 'Beacon bad blocks' }, { id: Selection.beacon_bad_blob, name: 'Beacon bad blobs' }, { id: Selection.execution_block_trace, name: 'Execution block traces' }, @@ -89,6 +92,15 @@ export default function Selector() { error: beaconBlockError, } = useUniqueBeaconBlockValues(['network'], currentSelection === Selection.beacon_block); + const { + data: executionPayloadEnvelopeData, + isLoading: executionPayloadEnvelopeIsLoading, + error: executionPayloadEnvelopeError, + } = useUniqueExecutionPayloadEnvelopeValues( + ['network'], + currentSelection === Selection.execution_payload_envelope, + ); + const { data: beaconBadBlockData, isLoading: beaconBadBlockIsLoading, @@ -133,6 +145,10 @@ export default function Selector() { case Selection.beacon_block: if (currentSelection !== Selection.beacon_block) setSelection(Selection.beacon_block); break; + case Selection.execution_payload_envelope: + if (currentSelection !== Selection.execution_payload_envelope) + setSelection(Selection.execution_payload_envelope); + break; case Selection.beacon_bad_block: if (currentSelection !== Selection.beacon_bad_block) setSelection(Selection.beacon_bad_block); @@ -186,6 +202,11 @@ export default function Selector() { error = beaconBlockError; isLoading = beaconBlockIsLoading; break; + case Selection.execution_payload_envelope: + data = executionPayloadEnvelopeData?.network; + error = executionPayloadEnvelopeError; + isLoading = executionPayloadEnvelopeIsLoading; + break; case Selection.beacon_bad_block: data = beaconBadBlockData?.network; error = beaconBadBlockError; diff --git a/web/src/types/api.ts b/web/src/types/api.ts index aa42800..38f0f4c 100644 --- a/web/src/types/api.ts +++ b/web/src/types/api.ts @@ -22,6 +22,18 @@ export interface BeaconBlock { beacon_implementation: string; } +export interface ExecutionPayloadEnvelope { + id: string; + node: string; + fetched_at: string; + slot: number; + epoch: number; + block_root: string; + node_version: string; + network: string; + beacon_implementation: string; +} + export interface BeaconBadBlock { id: string; node: string; @@ -88,6 +100,15 @@ export type BeaconBlockField = | 'network' | 'beacon_implementation'; +export type ExecutionPayloadEnvelopeField = + | 'node' + | 'slot' + | 'epoch' + | 'block_root' + | 'node_version' + | 'network' + | 'beacon_implementation'; + export type BeaconBadBlockField = | 'node' | 'slot' @@ -218,6 +239,38 @@ export interface V1ListUniqueBeaconBlockValuesRequest { fields: BeaconBlockField[]; } +export interface V1ListExecutionPayloadEnvelopeRequest { + node?: string; + slot?: number; + epoch?: number; + block_root?: string; + node_version?: string; + network?: string; + beacon_implementation?: string; + before?: string; + after?: string; + id?: string; + pagination?: PaginationCursor; +} + +export interface V1CountExecutionPayloadEnvelopeRequest { + node?: string; + slot?: number; + epoch?: number; + block_root?: string; + node_version?: string; + network?: string; + beacon_implementation?: string; + before?: string; + after?: string; + id?: string; + pagination?: PaginationCursor; +} + +export interface V1ListUniqueExecutionPayloadEnvelopeValuesRequest { + fields: ExecutionPayloadEnvelopeField[]; +} + export interface V1ListBeaconBadBlockRequest { node?: string; slot?: number; @@ -385,6 +438,24 @@ export interface V1ListUniqueBeaconBlockValuesResponse { beacon_implementation?: string[]; } +export interface V1ListExecutionPayloadEnvelopeResponse { + execution_payload_envelopes?: ExecutionPayloadEnvelope[]; +} + +export interface V1CountExecutionPayloadEnvelopeResponse { + count?: number; +} + +export interface V1ListUniqueExecutionPayloadEnvelopeValuesResponse { + node?: string[]; + slot?: number[]; + epoch?: number[]; + block_root?: string[]; + node_version?: string[]; + network?: string[]; + beacon_implementation?: string[]; +} + export interface V1ListBeaconBadBlockResponse { beacon_bad_blocks?: BeaconBadBlock[]; }